curl --request POST \
--url https://api.cubbo.com/v1/brazil/orders \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"store_id": 1234,
"order_number": "ORD-BR-0001",
"shipping_method_id": 12,
"buyer_shipping_price": 15.9,
"shipping": {
"first_name": "Ana",
"last_name": "Silva",
"phone": "5511999999999",
"email": "buyer@example.com",
"address1": "Av. Paulista",
"number": "1234",
"interior_number": "Apto 45",
"neighborhood": "Bela Vista",
"country": "BR",
"city": "São Paulo",
"province": "SP",
"zip_code": "01310100"
},
"billing": {
"first_name": "Ana",
"last_name": "Silva",
"phone": "5511999999999",
"email": "buyer@example.com",
"address1": "Av. Paulista",
"number": "1234",
"neighborhood": "Bela Vista",
"country": "BR",
"city": "São Paulo",
"province": "SP",
"zip_code": "01310100",
"tax_id": "000.000.000-00",
"tax_regime": "PHYSICAL"
},
"products": [
{
"sku": "SKU-RED-M",
"quantity": 2,
"price_per_item": 59.9,
"discount_per_item": 5
}
]
}
'{
"id": 987656,
"store_id": 1234,
"order_number": "ORD-BR-0001",
"status": "initial",
"channel_created_at": "2026-10-12T15:04:05.000Z",
"order_date": "2026-10-12T15:04:05.000Z",
"shipping_date": null,
"pending_at": null,
"shipping_email": "buyer@example.com",
"shipping_status": null,
"is_paid": true,
"is_cod": false,
"cod_amount": null,
"requires_document_return": false,
"requires_pickup_on_delivery": false,
"has_carrier_insurance": false,
"has_missing_info": false,
"missing_info": null,
"shipping_address_1": "Av. Paulista",
"currency": "BRL",
"total_price": "125.7",
"discount_price": "10.0",
"buyer_shipping_price": "15.9",
"extra_fees_price": null,
"is_pick_and_ship": false,
"is_b2b": false,
"pick_n_ship_status": null,
"return_shipping_labels": [],
"shipping": {
"first_name": "Ana",
"last_name": "Silva",
"company": null,
"phone": "5511999999999",
"address_1": "Av. Paulista",
"address_2": null,
"email": "buyer@example.com",
"zip_code": "01310100",
"country": "BR",
"state": "SP",
"city": "São Paulo",
"number": "1234",
"interior_number": "Apto 45",
"neighborhood": "Bela Vista",
"references": null
},
"billing": {
"first_name": "Ana",
"last_name": "Silva",
"company": null,
"phone": "5511999999999",
"tax_id": "000.000.000-00",
"tax_regime": "PHYSICAL",
"state_registration": null,
"address_1": "Av. Paulista",
"address_2": null,
"number": "1234",
"interior_number": null,
"neighborhood": "Bela Vista",
"email": "buyer@example.com",
"zip_code": "01310100",
"country": "BR",
"state": "SP",
"city": "São Paulo"
},
"delivery_tracking": [
{
"shipping_number": null,
"tracking_url": null,
"cubbo_tracking_url": "https://tracking.cubbo.com/t/def456",
"service_id": null,
"shipping_status": null,
"package_index": 1,
"total_packages": 1
}
],
"proof_of_delivery": null,
"estimated_time_arrival": null,
"delivered_at": null,
"updated_at": "2026-10-12T15:04:05.000Z",
"is_click_and_collect": false,
"click_and_collect_metadata": null,
"latest_estimated_time_arrival_range": null,
"channel_order_id": null,
"channel_name": "openapi",
"channel_shipping_line_code": null,
"warehouse_timezone": "America/Sao_Paulo",
"is_multi_package": false,
"is_first_time_buyer": true,
"is_subscription_renewal": false,
"shipping_method": {
"id": 12,
"shipping_name": "Correios PAC",
"is_active": true,
"carrier_name": "CORREIOS",
"shipping_type": "national",
"delivery_type": "Ground",
"country": "BR"
},
"order_lines": [
{
"id": 55502,
"name": "Red T-shirt M",
"sku": "SKU-RED-M",
"quantity": 2,
"generated": false,
"price_per_item": "59.9",
"discount_per_item": "5.0"
}
]
}Create an order for a Brazil store
Creates an order for a store served from a Brazil warehouse. Brazil orders carry the fiscal
data Cubbo needs to issue the NF-e (Nota Fiscal Eletrônica, the Brazilian electronic
invoice): per-line prices, the buyer’s shipping cost and a billing block with the buyer’s
tax id (CPF for a natural person, CNPJ for a company). order_type selects what kind of
order you get; it defaults to SALE.
SALEandDONATIONshare the full contract: recipient, billing, shipping method,buyer_shipping_priceand aprice_per_itemon every line. A donation is only different fiscally (the NF-e is issued with a donation purpose).- The four removal types (
REMOVE_STOCK,REMOVE_DAMAGED_STOCK,REMOVE_EXPIRED_STOCK,REMOVE_LOST_STOCK) return stock to you. Cubbo synthesizes the recipient from the warehouse, the billing data from your store’s fiscal registration and the shipping method from the warehouse’s pickup method, soshipping,billing,shipping_method_idandshipping_line_codeare optional and ignored.price_per_itembecomes optional (falls back to the product’s registered price),quantitymust be at least 1, and you may hand in your own NF-e withinvoice_xmlorclient_invoice. REMOVE_LOST_STOCKis applied synchronously and all-or-nothing: units already recorded as lost are written off and the order comes back alreadyshipped. It is available only to stores that have opted out of Cubbo issuing their removal NF-es (ask Cubbo support).STOCK_TRANSFER_OUTis accepted by the parameter check but is reserved for Cubbo’s stock-transfer feature; do not send it.C2Cis refused.- Sale orders are validated asynchronously (CEP, CPF/CNPJ length, NCM, totals); check
status,has_missing_infoandmissing_infoonGET /orders. - Duplicate protection: an existing
order_numberin the store answers 422; a request still in progress for the sameorder_numberanswers 409DUPLICATE_REQUEST_IN_FLIGHT. - Error bodies on this endpoint are
{"error": "<message>"}with no code, except removal orders that fail field validation, which return{"errors": [...]}.
curl --request POST \
--url https://api.cubbo.com/v1/brazil/orders \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"store_id": 1234,
"order_number": "ORD-BR-0001",
"shipping_method_id": 12,
"buyer_shipping_price": 15.9,
"shipping": {
"first_name": "Ana",
"last_name": "Silva",
"phone": "5511999999999",
"email": "buyer@example.com",
"address1": "Av. Paulista",
"number": "1234",
"interior_number": "Apto 45",
"neighborhood": "Bela Vista",
"country": "BR",
"city": "São Paulo",
"province": "SP",
"zip_code": "01310100"
},
"billing": {
"first_name": "Ana",
"last_name": "Silva",
"phone": "5511999999999",
"email": "buyer@example.com",
"address1": "Av. Paulista",
"number": "1234",
"neighborhood": "Bela Vista",
"country": "BR",
"city": "São Paulo",
"province": "SP",
"zip_code": "01310100",
"tax_id": "000.000.000-00",
"tax_regime": "PHYSICAL"
},
"products": [
{
"sku": "SKU-RED-M",
"quantity": 2,
"price_per_item": 59.9,
"discount_per_item": 5
}
]
}
'{
"id": 987656,
"store_id": 1234,
"order_number": "ORD-BR-0001",
"status": "initial",
"channel_created_at": "2026-10-12T15:04:05.000Z",
"order_date": "2026-10-12T15:04:05.000Z",
"shipping_date": null,
"pending_at": null,
"shipping_email": "buyer@example.com",
"shipping_status": null,
"is_paid": true,
"is_cod": false,
"cod_amount": null,
"requires_document_return": false,
"requires_pickup_on_delivery": false,
"has_carrier_insurance": false,
"has_missing_info": false,
"missing_info": null,
"shipping_address_1": "Av. Paulista",
"currency": "BRL",
"total_price": "125.7",
"discount_price": "10.0",
"buyer_shipping_price": "15.9",
"extra_fees_price": null,
"is_pick_and_ship": false,
"is_b2b": false,
"pick_n_ship_status": null,
"return_shipping_labels": [],
"shipping": {
"first_name": "Ana",
"last_name": "Silva",
"company": null,
"phone": "5511999999999",
"address_1": "Av. Paulista",
"address_2": null,
"email": "buyer@example.com",
"zip_code": "01310100",
"country": "BR",
"state": "SP",
"city": "São Paulo",
"number": "1234",
"interior_number": "Apto 45",
"neighborhood": "Bela Vista",
"references": null
},
"billing": {
"first_name": "Ana",
"last_name": "Silva",
"company": null,
"phone": "5511999999999",
"tax_id": "000.000.000-00",
"tax_regime": "PHYSICAL",
"state_registration": null,
"address_1": "Av. Paulista",
"address_2": null,
"number": "1234",
"interior_number": null,
"neighborhood": "Bela Vista",
"email": "buyer@example.com",
"zip_code": "01310100",
"country": "BR",
"state": "SP",
"city": "São Paulo"
},
"delivery_tracking": [
{
"shipping_number": null,
"tracking_url": null,
"cubbo_tracking_url": "https://tracking.cubbo.com/t/def456",
"service_id": null,
"shipping_status": null,
"package_index": 1,
"total_packages": 1
}
],
"proof_of_delivery": null,
"estimated_time_arrival": null,
"delivered_at": null,
"updated_at": "2026-10-12T15:04:05.000Z",
"is_click_and_collect": false,
"click_and_collect_metadata": null,
"latest_estimated_time_arrival_range": null,
"channel_order_id": null,
"channel_name": "openapi",
"channel_shipping_line_code": null,
"warehouse_timezone": "America/Sao_Paulo",
"is_multi_package": false,
"is_first_time_buyer": true,
"is_subscription_renewal": false,
"shipping_method": {
"id": 12,
"shipping_name": "Correios PAC",
"is_active": true,
"carrier_name": "CORREIOS",
"shipping_type": "national",
"delivery_type": "Ground",
"country": "BR"
},
"order_lines": [
{
"id": 55502,
"name": "Red T-shirt M",
"sku": "SKU-RED-M",
"quantity": 2,
"generated": false,
"price_per_item": "59.9",
"discount_per_item": "5.0"
}
]
}Authorizations
Body
Request body of POST /brazil/orders. shipping, billing, buyer_shipping_price and a shipping method are required for SALE/DONATION and ignored for removal types.
Kind of order. SALE and DONATION ship to your customer; the REMOVE_* types return stock to you. STOCK_TRANSFER_OUT passes the parameter check but is reserved for Cubbo's stock-transfer feature; do not use it.
SALE, DONATION, REMOVE_STOCK, REMOVE_DAMAGED_STOCK, REMOVE_EXPIRED_STOCK, REMOVE_LOST_STOCK, STOCK_TRANSFER_OUT "SALE"
Exact name of a shipping method you created in the Cubbo app, under Integrations, your Open API integration, Shipping Methods (field Integration Delivery Method). It must match character by character: the comparison is case-sensitive and does not trim spaces. Cubbo uses the shipping configuration assigned to that method to pick the carrier. See Set up your integration. Alternative to shipping_method_id. Ignored for removal types.
"Express"
Response
Order created. Same payload as POST /orders. A REMOVE_LOST_STOCK order is returned already in status shipped.
An order as returned by the Orders endpoints. Scalar fields are always available; associations
(shipping_method, order_lines, invoices, store, channel_integration, return,
created_by_return, order_histories) are present only when the endpoint includes them. Each
endpoint's response description lists the fields it returns.
Fulfillment status of an order. processing, picking and packing all mean the order is being
prepared in the warehouse. holded means the order is on hold. packed is unused.
initial, unpaid, empty, pending, error, cancelation_window, entirely_dropshipping, backorder, processing, picking, packing, packed, shipped, canceled, holded, interrupted, returned, return_arrived, returning, reentered, awaiting_fulfillment_request, awaiting_dropoff, arrived_at_warehouse "shipped"
Carrier-side status of the shipment.
shipment_created, awaiting_collection, shipment_collected, shipment_in_transit, shipment_out_for_delivery, shipment_delivered, shipment_partially_delivered, shipment_with_incident, shipment_to_be_self_collected, shipment_canceled, shipment_returned, shipment_not_defined "shipment_in_transit"