Orders
Overview
The Orders domain is responsible for the lifecycle of orders on the Getnet platform. An order represents an accreditation request, equipment purchase, or product change made by a merchant (commercial establishment).
Order Creation — POST /orders
Prerequisite: Offering Selection
Before creating an order, the channel must have previously called the
GET /offerings endpoint (documented in offerings.md), displayed the available offerings to the customer and captured the establishment's selection.The channel may receive one or more available offerings. The customer selects one or more offerings to contract.
⚠️ Save theorder_idreturned by the order creation — it is required in all subsequent calls:PUT /orders/{order_id}(update),POST /orders/{order_id}/validation(validation) andPUT /orders/{order_id}/submit(submission). Without it, it is not possible to continue with the order.
Filling the merchant field
The
merchant field identifies the establishment that is placing the order. The merchant registration must have been performed previously as described in merchants.md.Prerequisite — Merchant registration
Before creating the order, the channel must call
GET /merchants/{merchant_id} to confirm that the merchant exists and obtain its identifier.Mapping rule
The
merchant_id field is at the root of the object returned by GET /merchants/{merchant_id}. The merchant field of the order must be filled only with that value:Field in the order (merchant) | Origin in the return of GET /merchants/{merchant_id} |
|---|---|
merchant_id | merchant_id (object root) |
Example
Return of
GET /merchants/{merchant_id} (simplified):json
{
"merchant_id": "6a0fc6f29a4f90ca92a8670e",
"acquirer_code": "getnet",
"merchant_legal_data": {}
}json
{
"merchant_id": "6a0fc6f29a4f90ca92a8670e",
"acquirer_code": "getnet",
"merchant_legal_data": {}
}merchant field in the POST /orders payload:json
{
"merchant": {
"merchant_id": "6a0fc6f29a4f90ca92a8670e"
}
}json
{
"merchant": {
"merchant_id": "6a0fc6f29a4f90ca92a8670e"
}
}Filling the items field
The
items field of the POST /orders payload is an array that represents, in a flat way, all products from all offerings selected by the customer.General mapping rule
For each offering selected by the customer, iterate over the
items[] array of the offering returned by GET /offerings. Each entry of that array becomes an object inside the order's items[].text
GET /offerings → offering[n].items[x] → POST /orders → items[sequencial]
text
GET /offerings → offering[n].items[x] → POST /orders → items[sequencial]
Required fields of each order item
Field in the order (items[*]) | Origin in the return of GET /offerings | Note |
|---|---|---|
item_sequence_number | — | Global incremental sequence (1, 2, 3…) considering all items of all selected offerings. |
offering.priced_offering_id | offering.priced_offering_id (offering root) | The priced_offering_id is at the root of the offering object, not inside items. |
offering.smart_offering_id | offering.priced_offering_id (offering root) | Must be filled with the same value as priced_offering_id. |
product | offering.items[x].product | The product object must be sent in full as returned in the offering. |
quantity | offering.items[x].quantity | Quantity indicated in the offering for that product. |
Optional/conditional fields of each order item
The fields below exist within
items[x] in the return of GET /offerings for certain product types. When present, they must be forwarded in the respective order item:Field in the order (items[*]) | Origin in the return of GET /offerings | When present |
|---|---|---|
settlement_period | offering.items[x].settlement_period | Products of type composite (acquiring). |
unit_price | offering.items[x].unit_price | Products with pricing (e.g.: terminal with monthly rent). |
total_price | offering.items[x].total_price | Products with pricing (e.g.: terminal with monthly rent). |
Filling the delivery_info field
The
delivery_info field contains the equipment delivery information.Prerequisite — Shipping types lookup
Before filling
delivery_info, the channel must call GET /offerings/delivery-data (documented in offerings.yaml) providing the customer's legal_document_number and postal_code. The response returns the available shipping types in the delivery_methods[] array.The customer selects the desired shipping type from those available:
delivery_type | Description |
|---|---|
scheduled | Scheduled Delivery |
normal | Standard Delivery |
express | Express Delivery |
Delivery address — delivery_address
Must be filled with the equipment delivery address provided by the customer. Follows the same structure as the merchant's address fields (
business_address, residential_address, commercial_address).Fields by shipping type
Scheduled (scheduled)
| Field | Origin / Value |
|---|---|
delivery_type | "scheduled" (fixed) |
delivery_amount | delivery_methods[x].delivery_amount from GET /offerings/delivery-data |
delivery_time | delivery_methods[x].delivery_time from GET /offerings/delivery-data |
recommended_delivery_period | Period selected by the customer ("morning", "afternoon" or "night") |
period_grid | Entry of delivery_methods[x].period_grid[] corresponding to the period selected by the customer |
delivery_reference_point | Reference point provided by the customer |
delivery_time_type | null |
Example:
json
{
"delivery_info": {
"delivery_type": "scheduled",
"delivery_amount": 0,
"delivery_time": "0",
"recommended_delivery_period": "morning",
"period_grid": [
{
"date": "2024-12-04",
"recommended_delivery_period": "M",
"begin_time": "08:00:00",
"end_time": "11:30:00"
}
],
"delivery_reference_point": "Próximo ao mercado da esquina",
"delivery_time_type": null,
"delivery_address": {
"street": "Rua Exemplo",
"number": "123",
"district": "Centro",
"city": "Porto Alegre",
"state": "RS",
"postal_code": "90000000",
"country": "BR"
}
}
}json
{
"delivery_info": {
"delivery_type": "scheduled",
"delivery_amount": 0,
"delivery_time": "0",
"recommended_delivery_period": "morning",
"period_grid": [
{
"date": "2024-12-04",
"recommended_delivery_period": "M",
"begin_time": "08:00:00",
"end_time": "11:30:00"
}
],
"delivery_reference_point": "Próximo ao mercado da esquina",
"delivery_time_type": null,
"delivery_address": {
"street": "Rua Exemplo",
"number": "123",
"district": "Centro",
"city": "Porto Alegre",
"state": "RS",
"postal_code": "90000000",
"country": "BR"
}
}
}Standard (normal)
| Field | Origin / Value |
|---|---|
delivery_type | "normal" (fixed) |
delivery_amount | delivery_methods[x].delivery_amount from GET /offerings/delivery-data |
delivery_time | delivery_methods[x].delivery_time from GET /offerings/delivery-data |
delivery_time_type | delivery_methods[x].delivery_time_type from GET /offerings/delivery-data (D or H) |
Example:
json
{
"delivery_info": {
"delivery_type": "normal",
"delivery_amount": 0,
"delivery_time": "3",
"delivery_time_type": "D",
"delivery_address": {
"street": "Rua Exemplo",
"number": "123",
"district": "Centro",
"city": "Porto Alegre",
"state": "RS",
"postal_code": "90000000",
"country": "BR"
}
}
}json
{
"delivery_info": {
"delivery_type": "normal",
"delivery_amount": 0,
"delivery_time": "3",
"delivery_time_type": "D",
"delivery_address": {
"street": "Rua Exemplo",
"number": "123",
"district": "Centro",
"city": "Porto Alegre",
"state": "RS",
"postal_code": "90000000",
"country": "BR"
}
}
}Express (express)
| Field | Origin / Value |
|---|---|
delivery_type | "express" (fixed) |
delivery_amount | delivery_methods[x].delivery_amount from GET /offerings/delivery-data |
delivery_time | delivery_methods[x].delivery_time from GET /offerings/delivery-data |
delivery_time_type | delivery_methods[x].delivery_time_type from GET /offerings/delivery-data (D or H) |
Example:
json
{
"delivery_info": {
"delivery_type": "express",
"delivery_amount": 2500,
"delivery_time": "3",
"delivery_time_type": "D",
"delivery_address": {
"street": "Rua Exemplo",
"number": "123",
"district": "Centro",
"city": "Porto Alegre",
"state": "RS",
"postal_code": "90000000",
"country": "BR"
}
}
}json
{
"delivery_info": {
"delivery_type": "express",
"delivery_amount": 2500,
"delivery_time": "3",
"delivery_time_type": "D",
"delivery_address": {
"street": "Rua Exemplo",
"number": "123",
"district": "Centro",
"city": "Porto Alegre",
"state": "RS",
"postal_code": "90000000",
"country": "BR"
}
}
}Mapping example
Return of GET /offerings (simplified)
The customer selected two offerings: "Adquirência Físico Aluguel" (1 item) and "Oferta E-commerce - Link de Pagamento V2" (7 items). Below, the summarized structure of the return:
json
[
{
"priced_offering_id": "6a0fc78fd653164a21cf71f8",
"smart_offering_id": "6a0fc78fd653164a21cf71f8",
"name": "Adquirência Físico Aluguel",
"items": [
{
"item_sequence_number": 1,
"product": {
"product_id": "693241e8c4e00969b33efaf1",
"name": "ADQUIRENCIA FÍSICO ALUGUEL",
"product_type": "composite",
"composite_type": "acquirer",
"transaction_channel_types": ["physical"],
"modalities": ["rent"]
},
"quantity": 1,
"settlement_period": "receive_now_2"
}
]
},
{
"priced_offering_id": "6a0fc78fd653164a21cf7201",
"smart_offering_id": "6a0fc78fd653164a21cf7201",
"name": "Oferta E-commerce - Link de Pagamento V2",
"items": [
{
"item_sequence_number": 1,
"product": {
"product_id": "69b2ece03abb838e8be1b21d",
"name": "Terminal Ecommerce",
"product_type": "terminal",
"terminal_type": "ecommerce",
"transaction_channel_type": "online",
"modality": "rent",
"delivery_method": "na",
"wireless": false,
"print_receipt": false,
"model": "ecommerce"
},
"quantity": 1,
"unit_price": 0,
"total_price": 0
},
{
"item_sequence_number": 2,
"product": {
"product_id": "52fadc5225294c7781c862c4e4a2d91a",
"name": "Conta SuperGet",
"product_type": "service",
"service_type": "service",
"product_configuration": { "keyword": "prepaid_card", "issuer": "superget" }
},
"quantity": 1
},
{
"item_sequence_number": 3,
"product": {
"product_id": "6781192295d5d10a6194fe15",
"name": "GetPay (link de pagamento)",
"product_type": "service",
"service_type": "ecommerce_service",
"product_configuration": { "keyword": "ecommerce_payment_link" }
},
"quantity": 1
}
]
}
]json
[
{
"priced_offering_id": "6a0fc78fd653164a21cf71f8",
"smart_offering_id": "6a0fc78fd653164a21cf71f8",
"name": "Adquirência Físico Aluguel",
"items": [
{
"item_sequence_number": 1,
"product": {
"product_id": "693241e8c4e00969b33efaf1",
"name": "ADQUIRENCIA FÍSICO ALUGUEL",
"product_type": "composite",
"composite_type": "acquirer",
"transaction_channel_types": ["physical"],
"modalities": ["rent"]
},
"quantity": 1,
"settlement_period": "receive_now_2"
}
]
},
{
"priced_offering_id": "6a0fc78fd653164a21cf7201",
"smart_offering_id": "6a0fc78fd653164a21cf7201",
"name": "Oferta E-commerce - Link de Pagamento V2",
"items": [
{
"item_sequence_number": 1,
"product": {
"product_id": "69b2ece03abb838e8be1b21d",
"name": "Terminal Ecommerce",
"product_type": "terminal",
"terminal_type": "ecommerce",
"transaction_channel_type": "online",
"modality": "rent",
"delivery_method": "na",
"wireless": false,
"print_receipt": false,
"model": "ecommerce"
},
"quantity": 1,
"unit_price": 0,
"total_price": 0
},
{
"item_sequence_number": 2,
"product": {
"product_id": "52fadc5225294c7781c862c4e4a2d91a",
"name": "Conta SuperGet",
"product_type": "service",
"service_type": "service",
"product_configuration": { "keyword": "prepaid_card", "issuer": "superget" }
},
"quantity": 1
},
{
"item_sequence_number": 3,
"product": {
"product_id": "6781192295d5d10a6194fe15",
"name": "GetPay (link de pagamento)",
"product_type": "service",
"service_type": "ecommerce_service",
"product_configuration": { "keyword": "ecommerce_payment_link" }
},
"quantity": 1
}
]
}
]Resulting payload for POST /orders — items field
All items are flattened into a single array with global sequential numbering:
json
{
"items": [
{
"item_sequence_number": 1,
"offering": {
"priced_offering_id": "6a0fc78fd653164a21cf71f8",
"smart_offering_id": "6a0fc78fd653164a21cf71f8"
},
"product": {
"product_id": "693241e8c4e00969b33efaf1",
"name": "ADQUIRENCIA FÍSICO ALUGUEL",
"product_type": "composite",
"composite_type": "acquirer",
"transaction_channel_types": ["physical"],
"modalities": ["rent"]
},
"quantity": 1,
"settlement_period": "receive_now_2"
},
{
"item_sequence_number": 2,
"offering": {
"priced_offering_id": "6a0fc78fd653164a21cf7201",
"smart_offering_id": "6a0fc78fd653164a21cf7201"
},
"product": {
"product_id": "69b2ece03abb838e8be1b21d",
"name": "Terminal Ecommerce",
"product_type": "terminal",
"terminal_type": "ecommerce",
"transaction_channel_type": "online",
"modality": "rent",
"delivery_method": "na",
"wireless": false,
"print_receipt": false,
"model": "ecommerce"
},
"quantity": 1,
"unit_price": 0,
"total_price": 0
},
{
"item_sequence_number": 3,
"offering": {
"priced_offering_id": "6a0fc78fd653164a21cf7201",
"smart_offering_id": "6a0fc78fd653164a21cf7201"
},
"product": {
"product_id": "52fadc5225294c7781c862c4e4a2d91a",
"name": "Conta SuperGet",
"product_type": "service",
"service_type": "service",
"product_configuration": { "keyword": "prepaid_card", "issuer": "superget" }
},
"quantity": 1
},
{
"item_sequence_number": 4,
"offering": {
"priced_offering_id": "6a0fc78fd653164a21cf7201",
"smart_offering_id": "6a0fc78fd653164a21cf7201"
},
"product": {
"product_id": "6781192295d5d10a6194fe15",
"name": "GetPay (link de pagamento)",
"product_type": "service",
"service_type": "ecommerce_service",
"product_configuration": { "keyword": "ecommerce_payment_link" }
},
"quantity": 1
}
]
}json
{
"items": [
{
"item_sequence_number": 1,
"offering": {
"priced_offering_id": "6a0fc78fd653164a21cf71f8",
"smart_offering_id": "6a0fc78fd653164a21cf71f8"
},
"product": {
"product_id": "693241e8c4e00969b33efaf1",
"name": "ADQUIRENCIA FÍSICO ALUGUEL",
"product_type": "composite",
"composite_type": "acquirer",
"transaction_channel_types": ["physical"],
"modalities": ["rent"]
},
"quantity": 1,
"settlement_period": "receive_now_2"
},
{
"item_sequence_number": 2,
"offering": {
"priced_offering_id": "6a0fc78fd653164a21cf7201",
"smart_offering_id": "6a0fc78fd653164a21cf7201"
},
"product": {
"product_id": "69b2ece03abb838e8be1b21d",
"name": "Terminal Ecommerce",
"product_type": "terminal",
"terminal_type": "ecommerce",
"transaction_channel_type": "online",
"modality": "rent",
"delivery_method": "na",
"wireless": false,
"print_receipt": false,
"model": "ecommerce"
},
"quantity": 1,
"unit_price": 0,
"total_price": 0
},
{
"item_sequence_number": 3,
"offering": {
"priced_offering_id": "6a0fc78fd653164a21cf7201",
"smart_offering_id": "6a0fc78fd653164a21cf7201"
},
"product": {
"product_id": "52fadc5225294c7781c862c4e4a2d91a",
"name": "Conta SuperGet",
"product_type": "service",
"service_type": "service",
"product_configuration": { "keyword": "prepaid_card", "issuer": "superget" }
},
"quantity": 1
},
{
"item_sequence_number": 4,
"offering": {
"priced_offering_id": "6a0fc78fd653164a21cf7201",
"smart_offering_id": "6a0fc78fd653164a21cf7201"
},
"product": {
"product_id": "6781192295d5d10a6194fe15",
"name": "GetPay (link de pagamento)",
"product_type": "service",
"service_type": "ecommerce_service",
"product_configuration": { "keyword": "ecommerce_payment_link" }
},
"quantity": 1
}
]
}Note: The items of the second offering take sequential numbering continuing from the last item of the first offering (2, 3, 4…). The originalitem_sequence_numberof each item within the offering (offering.items[x].item_sequence_number) is discarded — what matters is the global sequence of the order.
Important rules
1. Global item sequence
The
item_sequence_number is a unique and incremental counter for the entire items array of the order, regardless of how many offerings were selected.2. priced_offering_id and smart_offering_id come from the offering root
These two fields must be filled with the value of
priced_offering_id that is at the root of the offering object returned by GET /offerings — and not inside items[x]. Both (priced_offering_id and smart_offering_id) receive the same value.3. The product object is sent in full
The
product object must be copied exactly as returned in offering.items[x].product, including all fields specific to the product type (terminal_type, modality, delivery_method, product_configuration, etc.). Do not omit fields.4. Conditional fields by product type
Some fields exist in the offering item only for certain product types:
settlement_period: present in products of typecomposite(acquiring). Must be forwarded in the order item.unit_price/total_price: present when the product has a defined price (e.g.: terminal with monthly rent). Must be forwarded in the order item. When there is no price, sendnull.
5. An offering may have multiple items
A single selected offering can return multiple products in its
items[] array. Each product becomes a separate item in the order, all sharing the same offering.priced_offering_id and offering.smart_offering_id.Filling the merchant_accounts field
The
merchant_accounts field is a list of bank domiciles — that is, the bank accounts where the merchant will receive the receivables of transactions made on Getnet's machines and services.One item must be created per brand contracted in the selected offerings.
Structure of each item
| Field | Description |
|---|---|
brand | Brand to which the domicile applies (visa, master, elo, amex, hipercard, pix) |
merchant.merchant_id | The same merchant_id from the order's root merchant field |
bank_account.bank.bank_country | Bank country (e.g.: "BR") |
bank_account.bank_code | Bank clearing code (FEBRABAN) |
bank_account.bank_branch_code | Branch number |
bank_account.bank_account_number | Account number + verifier digit |
bank_account.bank_account_currency | Account currency (e.g.: "BRL") |
bank_account.account_type | Account type: cc (checking), pp (savings) |
payment_center | true to enable payment centralization |
merchant_account_restriction | List of restrictions. Send [] when there are no restrictions |
Example
In the example below, the merchant configures the same bank domicile for four brands:
json
{
"merchant_accounts": [
{
"brand": "master",
"merchant": { "merchant_id": "6a0fc6f29a4f90ca92a8670e" },
"bank_account": {
"bank": { "bank_country": "BR", "bank_code": "033" },
"bank_branch_code": "0001",
"bank_account_number": "123456789",
"bank_account_currency": "BRL",
"account_type": "cc"
},
"payment_center": true,
"merchant_account_restriction": []
},
{
"brand": "visa",
"merchant": { "merchant_id": "6a0fc6f29a4f90ca92a8670e" },
"bank_account": {
"bank": { "bank_country": "BR", "bank_code": "033" },
"bank_branch_code": "0001",
"bank_account_number": "123456789",
"bank_account_currency": "BRL",
"account_type": "cc"
},
"payment_center": true,
"merchant_account_restriction": []
},
{
"brand": "elo",
"merchant": { "merchant_id": "6a0fc6f29a4f90ca92a8670e" },
"bank_account": {
"bank": { "bank_country": "BR", "bank_code": "033" },
"bank_branch_code": "0001",
"bank_account_number": "123456789",
"bank_account_currency": "BRL",
"account_type": "cc"
},
"payment_center": true,
"merchant_account_restriction": []
},
{
"brand": "amex",
"merchant": { "merchant_id": "6a0fc6f29a4f90ca92a8670e" },
"bank_account": {
"bank": { "bank_country": "BR", "bank_code": "033" },
"bank_branch_code": "0001",
"bank_account_number": "123456789",
"bank_account_currency": "BRL",
"account_type": "cc"
},
"payment_center": true,
"merchant_account_restriction": []
}
]
}json
{
"merchant_accounts": [
{
"brand": "master",
"merchant": { "merchant_id": "6a0fc6f29a4f90ca92a8670e" },
"bank_account": {
"bank": { "bank_country": "BR", "bank_code": "033" },
"bank_branch_code": "0001",
"bank_account_number": "123456789",
"bank_account_currency": "BRL",
"account_type": "cc"
},
"payment_center": true,
"merchant_account_restriction": []
},
{
"brand": "visa",
"merchant": { "merchant_id": "6a0fc6f29a4f90ca92a8670e" },
"bank_account": {
"bank": { "bank_country": "BR", "bank_code": "033" },
"bank_branch_code": "0001",
"bank_account_number": "123456789",
"bank_account_currency": "BRL",
"account_type": "cc"
},
"payment_center": true,
"merchant_account_restriction": []
},
{
"brand": "elo",
"merchant": { "merchant_id": "6a0fc6f29a4f90ca92a8670e" },
"bank_account": {
"bank": { "bank_country": "BR", "bank_code": "033" },
"bank_branch_code": "0001",
"bank_account_number": "123456789",
"bank_account_currency": "BRL",
"account_type": "cc"
},
"payment_center": true,
"merchant_account_restriction": []
},
{
"brand": "amex",
"merchant": { "merchant_id": "6a0fc6f29a4f90ca92a8670e" },
"bank_account": {
"bank": { "bank_country": "BR", "bank_code": "033" },
"bank_branch_code": "0001",
"bank_account_number": "123456789",
"bank_account_currency": "BRL",
"account_type": "cc"
},
"payment_center": true,
"merchant_account_restriction": []
}
]
}Account types (account_type)
| Value | Description |
|---|---|
cc | Checking Account |
pp | Savings Account |
Order Update — PUT /orders/{order_id}
Overview
The
PUT /orders/{order_id} endpoint allows updating the data of an existing order, for example to add or correct information before submission.⚠️ Total replacement of the order
The
PUT fully replaces the order. Never send a partial payload — omitted fields will be removed. Always send the complete order object.Difference compared to the merchant
Unlike
PUT /merchants/{merchant_id}, the order is not enriched after creation: no new information is added to the object by the platform. The data stored in the order is exactly what the channel sent in POST /orders.For this reason, the recommended behavior depends on how the channel manages the order state:
| Situation | What to do |
|---|---|
| Channel stores the order structure in its domain | It is not necessary to call GET /orders/{order_id}. Just modify or increment the fields in the local structure and send the PUT with the complete object. |
| Channel does not store the order structure locally | Fetch the current order with GET /orders/{order_id} (using the order_id returned by POST /orders), apply the changes and then send the PUT. |
Route parameter
| Parameter | Type | Description |
|---|---|---|
order_id | string | ID returned in the order creation (POST /orders) |
Recalculate totalization fields
After any change in the order items, the totalization fields must be recalculated before sending the
PUT. The rule is the same as creation — see the Filling the totalization fields section below.Filling the totalization fields
The order's totalization fields represent the sum of the values of products of type
terminal present in the items array, grouped by the pricing type (pricing_model.pricing_type) of each product.General rule
For each order item where
product.product_type = "terminal", sum the total_price value of the item according to the product.pricing_model.pricing_type, and fill in the corresponding field at the order root:| Field in the order | pricing_model.pricing_type of the summed terminals |
|---|---|
total_fixed_price | fixed_price |
total_monthly_rent | monthly_rent |
total_affiliation_fee | affiliation_fee |
total_recurrent | recurrent |
total_payment_price | payment_price |
total_license | license |
Items whoseproduct.product_typeis notterminal(e.g.:composite,service) do not enter the totalization calculations.
Example
Suppose the order has the following items of type
terminal:| Item | product_type | pricing_model.pricing_type | total_price |
|---|---|---|---|
| 1 | terminal | monthly_rent | 7990 |
| 2 | terminal | monthly_rent | 4990 |
| 3 | terminal | fixed_price | 19900 |
| 4 | composite | — | — |
The totalization fields would be filled as:
json
{
"total_fixed_price": 19900,
"total_monthly_rent": 12980,
"total_affiliation_fee": 0,
"total_recurrent": 0,
"total_payment_price": 0,
"total_license": 0
}json
{
"total_fixed_price": 19900,
"total_monthly_rent": 12980,
"total_affiliation_fee": 0,
"total_recurrent": 0,
"total_payment_price": 0,
"total_license": 0
}Note: Fields without corresponding terminals must be sent with value0.
Order Validation — POST /orders/{order_id}/validation
Overview
After creating the order with
POST /orders, the channel will receive the order_id. Before submitting the order definitively, it is highly recommended to call POST /orders/{order_id}/validation.This endpoint performs a complete validation of the order data — applying the same business rules as the submission — without changing the order status. If there are inconsistencies, the channel can correct them before the definitive submission.
⚠️ Important: The endpoint is optional, but strongly recommended. After the call toPUT /orders/{order_id}/submit, if the order is rejected, it cannot be corrected — it will be definitively rejected.
Route parameter
| Parameter | Type | Description |
|---|---|---|
order_id | string | ID returned in the order creation (POST /orders) |
How to interpret the response
The response contains a
report field with the validation information. To check whether the validation approved or rejected the order:-
Check the
report.recommended.statusfield:"approved"→ The order is correct and can be submitted."reproved"→ The order contains errors that must be corrected before submission.
-
If
report.recommended.status = "reproved", check thereport.details[]list. Each item in the list has thedetail_descriptionfield with the description of the rejection reason.
Example response with rejection
json
{
"report": {
"details": [
{
"visible": true,
"detail_type": "missing_mandatory_data",
"detail_attribute": "qualification.order.items",
"detail_description": "Não foi encontrado composite correspondente ao terminal 6932501bc4e00969b33efaf8. Para cada terminal do pedido deve haver um composite com tipo de canal de transação (transaction_channel_type) correspondente.",
"detail_code": "QDOBR-0129"
}
],
"recommended": {
"status": "reproved",
"last_status_update_date": "2026-05-22T12:44:41.365199901Z"
}
}
}json
{
"report": {
"details": [
{
"visible": true,
"detail_type": "missing_mandatory_data",
"detail_attribute": "qualification.order.items",
"detail_description": "Não foi encontrado composite correspondente ao terminal 6932501bc4e00969b33efaf8. Para cada terminal do pedido deve haver um composite com tipo de canal de transação (transaction_channel_type) correspondente.",
"detail_code": "QDOBR-0129"
}
],
"recommended": {
"status": "reproved",
"last_status_update_date": "2026-05-22T12:44:41.365199901Z"
}
}
}Relevant fields of the response
| Field | Description |
|---|---|
report.recommended.status | Validation result: "approved" or "reproved" |
report.details[] | List of details of the errors found (present when reproved) |
report.details[].detail_description | Readable description of the rejection reason |
report.details[].detail_type | Error type (e.g.: missing_mandatory_data) |
report.details[].detail_attribute | Order attribute that caused the error |
report.details[].detail_code | Internal error code |
Order Submission — PUT /orders/{order_id}/submit
Overview
The
PUT /orders/{order_id}/submit endpoint represents the definitive confirmation of the order by the customer. By calling it, the channel declares that the customer has reviewed all the order information and confirms agreement.⚠️ Attention: After submission, if the order is rejected, it cannot be corrected. For this reason, it is strongly recommended to usePOST /orders/{order_id}/validationbefore submission.
Route parameter
| Parameter | Type | Description |
|---|---|---|
order_id | string | ID returned in the order creation (POST /orders) |
Response in case of rejection
If the order is rejected during submission, the response will contain an
error object with rejection information:- Check whether
error.report.recommendedexists with the value"reproved". - The
messagefield provides a generic message about the rejection. - To understand the detailed reason, check
report.details[]and read thedetail_descriptionfield of each item.
Example response in case of rejection:
json
{
"error": {
"message": "Pedido reprovado.",
"report": {
"recommended": "reproved",
"details": [
{
"visible": true,
"detail_type": "missing_mandatory_data",
"detail_attribute": "qualification.order.items",
"detail_description": "Não foi encontrado composite correspondente ao terminal 6932501bc4e00969b33efaf8. Para cada terminal do pedido deve haver um composite com tipo de canal de transação (transaction_channel_type) correspondente.",
"detail_code": "QDOBR-0129"
}
]
}
}
}json
{
"error": {
"message": "Pedido reprovado.",
"report": {
"recommended": "reproved",
"details": [
{
"visible": true,
"detail_type": "missing_mandatory_data",
"detail_attribute": "qualification.order.items",
"detail_description": "Não foi encontrado composite correspondente ao terminal 6932501bc4e00969b33efaf8. Para cada terminal do pedido deve haver um composite com tipo de canal de transação (transaction_channel_type) correspondente.",
"detail_code": "QDOBR-0129"
}
]
}
}
}Response in case of success
When the submission is successful, the response contains:
situation.status = "submitted"→ indicates that the order was received by Getnet and is being processed.order_number→ order number generated by Getnet, which can be used by the customer to track their order.
Example response in case of success:
json
{
"order_id": "6a1056da1d16baecee8580ee",
"order_number": "MPGXZEGPEE",
"audit_information": {
"creation_date": "2026-05-22T13:15:06.361Z",
"update_date": "2026-05-22T13:16:22.633Z",
"channel_data": {
"channel": "getnet_ecommerce",
"login": "",
"branch": "",
"enrollment_number": "",
"name": "",
"publisher": "ecommerce"
}
},
"situation": {
"status": "submitted",
"status_name": "Submetido",
"status_update_date": "2026-05-22T13:16:22.633Z"
}
}json
{
"order_id": "6a1056da1d16baecee8580ee",
"order_number": "MPGXZEGPEE",
"audit_information": {
"creation_date": "2026-05-22T13:15:06.361Z",
"update_date": "2026-05-22T13:16:22.633Z",
"channel_data": {
"channel": "getnet_ecommerce",
"login": "",
"branch": "",
"enrollment_number": "",
"name": "",
"publisher": "ecommerce"
}
},
"situation": {
"status": "submitted",
"status_name": "Submetido",
"status_update_date": "2026-05-22T13:16:22.633Z"
}
}Relevant fields of the success response
| Field | Description |
|---|---|
order_id | Internal order identifier |
order_number | Order number generated by Getnet for customer tracking |
situation.status | "submitted" — order received and under analysis by Getnet |
situation.status_name | Readable name of the status (e.g.: "Submetido") |
situation.status_update_date | Date and time of the last status update |
Summary flow
text
1. Channel calls 600;">GET /merchants/{merchant_id}
│
├─ merchant_id → merchant.merchant_id in the order
└─ merchant_id → merchant_accounts[*].merchant.merchant_id
│
▼
2. Channel calls 600;">GET /offerings
│
▼
3. Channel calls 600;">GET /offerings/delivery-data (legal_document_number + postal_code)
│
├─ Customer selects shipping type (scheduled / normal / express)
├─ delivery_methods[x].delivery_amount → delivery_info.delivery_amount
├─ delivery_methods[x].delivery_time → delivery_info.delivery_time
├─ delivery_methods[x].delivery_time_type → delivery_info.delivery_time_type (normal/express)
├─ delivery_methods[x].period_grid[y] → delivery_info.period_grid (scheduled)
└─ selected period → delivery_info.recommended_delivery_period (scheduled)
│
▼
4. Channel displays offerings to the customer
│
▼
5. Customer selects one or more offerings
│
▼
6. For each selected offering:
└─ For each item in offering.items[]:
├─ item_sequence_number = next global sequential number
├─ offering.priced_offering_id = offering.priced_offering_id (offering root)
├─ offering.smart_offering_id = offering.priced_offering_id (offering root)
├─ product = item.product (full copy)
├─ quantity = item.quantity
├─ settlement_period = item.settlement_period (if present)
├─ unit_price = item.unit_price (if present)
└─ total_price = item.total_price (if present)
│
▼
7. Customer provides bank data → build merchant_accounts[]:
└─ One item per contracted brand:
├─ brand = brand (visa / master / elo / amex / ...)
├─ merchant.merchant_id = merchant_id (step 1)
├─ bank_account.bank.bank_code = bank039;s FEBRABAN code
├─ bank_account.bank_branch_code = branch
├─ bank_account.bank_account_number = account + digit
├─ bank_account.account_type = cc / pp
├─ payment_center = true/false
└─ merchant_account_restriction = []
│
▼
8. Channel calculates the totalization fields:
└─ For each item where product.product_type = "terminal":
├─ pricing_type = "monthly_rent" → sum total_price into total_monthly_rent
├─ pricing_type = "fixed_price" → sum total_price into total_fixed_price
├─ pricing_type = "affiliation_fee" → sum total_price into total_affiliation_fee
├─ pricing_type = "recurrent" → sum total_price into total_recurrent
├─ pricing_type = "payment_price" → sum total_price into total_payment_price
└─ pricing_type = "license" → sum total_price into total_license
│
▼
9. Channel calls 600;">POST /orders with merchant, delivery_info, items, merchant_accounts and totalization fields
│
└─ Receives the order_id of the created order
⚠️ Save the order_id — required in subsequent steps
│
▼
9a. (If necessary) Channel updates the order via 600;">PUT /orders/{order_id}
│
├─ If the channel stores the order locally → modify local structure and send full 600;">PUT
└─ If it does not store → 600;">GET /orders/{order_id} → apply changes → send full 600;">PUT
(Recalculate totalization fields if items were modified)
│
▼
10. (Recommended) Channel calls 600;">POST /orders/{order_id}/validation
│
├─ report.recommended.status = "approved" → can proceed to submission
└─ report.recommended.status = "reproved" → check report.details[].detail_description
and correct the order before submitting
│
▼
11. Channel calls 600;">PUT /orders/{order_id}/submit (customer confirmed the order data)
│
├─ Rejected → error.report.recommended = "reproved"
│ check report.details[].detail_description
│ (order can no longer be corrected)
│
└─ Approved → situation.status = "submitted"
order_number generated for customer039;s order tracking
text
1. Channel calls 600;">GET /merchants/{merchant_id}
│
├─ merchant_id → merchant.merchant_id in the order
└─ merchant_id → merchant_accounts[*].merchant.merchant_id
│
▼
2. Channel calls 600;">GET /offerings
│
▼
3. Channel calls 600;">GET /offerings/delivery-data (legal_document_number + postal_code)
│
├─ Customer selects shipping type (scheduled / normal / express)
├─ delivery_methods[x].delivery_amount → delivery_info.delivery_amount
├─ delivery_methods[x].delivery_time → delivery_info.delivery_time
├─ delivery_methods[x].delivery_time_type → delivery_info.delivery_time_type (normal/express)
├─ delivery_methods[x].period_grid[y] → delivery_info.period_grid (scheduled)
└─ selected period → delivery_info.recommended_delivery_period (scheduled)
│
▼
4. Channel displays offerings to the customer
│
▼
5. Customer selects one or more offerings
│
▼
6. For each selected offering:
└─ For each item in offering.items[]:
├─ item_sequence_number = next global sequential number
├─ offering.priced_offering_id = offering.priced_offering_id (offering root)
├─ offering.smart_offering_id = offering.priced_offering_id (offering root)
├─ product = item.product (full copy)
├─ quantity = item.quantity
├─ settlement_period = item.settlement_period (if present)
├─ unit_price = item.unit_price (if present)
└─ total_price = item.total_price (if present)
│
▼
7. Customer provides bank data → build merchant_accounts[]:
└─ One item per contracted brand:
├─ brand = brand (visa / master / elo / amex / ...)
├─ merchant.merchant_id = merchant_id (step 1)
├─ bank_account.bank.bank_code = bank039;s FEBRABAN code
├─ bank_account.bank_branch_code = branch
├─ bank_account.bank_account_number = account + digit
├─ bank_account.account_type = cc / pp
├─ payment_center = true/false
└─ merchant_account_restriction = []
│
▼
8. Channel calculates the totalization fields:
└─ For each item where product.product_type = "terminal":
├─ pricing_type = "monthly_rent" → sum total_price into total_monthly_rent
├─ pricing_type = "fixed_price" → sum total_price into total_fixed_price
├─ pricing_type = "affiliation_fee" → sum total_price into total_affiliation_fee
├─ pricing_type = "recurrent" → sum total_price into total_recurrent
├─ pricing_type = "payment_price" → sum total_price into total_payment_price
└─ pricing_type = "license" → sum total_price into total_license
│
▼
9. Channel calls 600;">POST /orders with merchant, delivery_info, items, merchant_accounts and totalization fields
│
└─ Receives the order_id of the created order
⚠️ Save the order_id — required in subsequent steps
│
▼
9a. (If necessary) Channel updates the order via 600;">PUT /orders/{order_id}
│
├─ If the channel stores the order locally → modify local structure and send full 600;">PUT
└─ If it does not store → 600;">GET /orders/{order_id} → apply changes → send full 600;">PUT
(Recalculate totalization fields if items were modified)
│
▼
10. (Recommended) Channel calls 600;">POST /orders/{order_id}/validation
│
├─ report.recommended.status = "approved" → can proceed to submission
└─ report.recommended.status = "reproved" → check report.details[].detail_description
and correct the order before submitting
│
▼
11. Channel calls 600;">PUT /orders/{order_id}/submit (customer confirmed the order data)
│
├─ Rejected → error.report.recommended = "reproved"
│ check report.details[].detail_description
│ (order can no longer be corrected)
│
└─ Approved → situation.status = "submitted"
order_number generated for customer039;s order tracking
On this page
Orders