Swagger (for read only, can't try it out): https://api.v2.swagger.neomode.com.br/cp/management/commerce/index.html
Order Data Fields
Order Identifiers
Reference for the main identification fields used in order management and their respective API lookup routes.
| Field | Data Type | Location / Function | API Routing Pattern |
|---|---|---|---|
Id | string (GUID) | Primary identifier found in the page URL link. | N/A (Direct Resource ID) |
ExternalId | string | Displayed in the first order information block. | cp/.../external/{id} or /orderNumber |
SellerOrderId | string | Displayed in the first order information block. | cp/.../sellerOrderId/{id} |
NEO In Store Order Details Page:
Full Order Body
Top Level Order Fields
| Field | Type | |
|---|---|---|
id | string | |
createDate | string (ISO) | |
externalId | string | |
sellerOrderId | string | Seller-specific order ID |
orderPackageId | string | Optional package grouping ID |
channel | string | |
friendlyCode | string | |
cpfPickUp | string | CPF for pickup |
cpfInvoice | string | CPF for invoice |
invoiceUrl | string | URL to the invoice document |
dealerCode | string | Optional dealer code |
feeAmount | number | |
bonusAmount | number | |
isDelivery | boolean | |
isCvvValidated | boolean | |
maxPickUpTime | string | Maximum pickup time |
orderNote | string | Optional note added to order |
plp | string | PLP (postal list) reference |
status | number | Separated |
Buyer
| Field | Type | Description | |
|---|---|---|---|
bonusCustomerId | string | null | Optional loyalty/bonus ID |
cpf | string | CPF of the buyer | |
stateInscription | string | null | State registration |
documentType | number | Type of document (1 = CPF, 2 = CNPJ) | |
phoneNumber | string | Buyer phone number | |
fullName | string | Buyer full name | |
email | string | Buyer email | |
cnpj | string | null | Buyer CNPJ if applicable |
companyName | string | null | Buyer company name |
address | object | Delivery address (see Address fields below) |
Seller
| Field | Type | Description |
|---|---|---|
pointSaleId | string | Point of sale ID |
fullName | string | Seller name |
email | string | Seller email |
cnpj | string | Seller CNPJ |
address | object | Seller address (same structure as buyer address) |
workingHours | array | Optional working hours for store |
integrationConfig | object | Credentials and integration info for order, payment, fraud, promotion engine |
Address
| Field | Type | Description | |
|---|---|---|---|
street | string | Street name | |
number | string | Number | |
complement | string | null | Address complement |
neighborhood | string | Neighborhood | |
cep | string | Postal code | |
city | string | City | |
state | string | State abbreviation | |
latitude | number | null | GPS latitude |
longitude | number | null | GPS longitude |
fullAddress | string | Formatted full address |
Freight
| Field | Type | Description |
|---|---|---|
deliveryTime | number | Estimated delivery time |
reference | string | Delivery service reference |
description | string | Description of freight service |
amount | number | Freight amount |
PaymentInfo & PaymentList
| Field | Type | Description |
|---|---|---|
amount | number | Payment amount |
quantityInstallments | number | Number of installments |
paymentMethod | object | Payment method details |
Payment Method
| Field | Type | Description | |
|---|---|---|---|
info | string | Method name (e.g., Credit Card, Pix) | |
brand | string | null | Card brand if applicable |
type | number | Numeric payment type | |
modality | string | Modality type | public enum ModalityType { None, PickupStore, Delivery, Both } |
id | string | Unique ID for payment method |
Invoice
| Field | Type | Description | |
|---|---|---|---|
key | string | null | Invoice key |
number | string | null | Invoice number |
serieNumber | number | Series number | |
totalAmount | number | Total invoice amount | |
xmlUrl | string | null | XML URL |
fileUrl | string | null | PDF file URL |
issuanceDate | string | Date of issuance |
Items Array
| Field | Type | Description | |
|---|---|---|---|
quantity | number | Item quantity | |
unitPrice | number | Unit price of the item | |
subTotalAmount | number | Subtotal for the item | |
totalAmount | number | Total price for the item | |
sku | object | SKU details (code, name, attributes, linked product) | |
isGift | boolean | If item is a gift | |
coupon | object | null | Coupon applied |
Custom Data Array
Here will be order key:value customizations
| Field | Type | Description |
|---|---|---|
key | string | Custom key name |
value | string | Custom value |
Order Status
📌 Understanding Order Status ENUMs
To ensure proper data consistency within our architecture, the API uses different ENUM patterns for order statuses depending on the type of operation (read or write).
When integrating with our endpoints, please note the following rule to avoid value mismatches between what is sent and what is received:
📥 Read Operations (GET): The response payload will always return the Repository (OrderStatus) format. This ENUM represents the detailed internal state of the order in our database.
📤 Write Operations (PUT): When sending update commands (such as a PutOrderStatus), the request payload must strictly use the CanonicalStatus format.
🚧 Developer Note:
Because values may differ between queries and updates (e.g., a code sent in a PUT might have a different representation in the GET response), API consumers will need to map these status ENUM types separately within their application to ensure proper functionality.
CanonicalOrderStatus
{
/// <summary>
/// Representa os possíveis status de um pedido.
/// </summary>
public enum NeoOrderStatus
{
/// <summary>Não informado.</summary>
None = 0,
/// <summary>Aguardando envio para o ponto de venda.</summary>
Pending = 1,
/// <summary>Aguardando criação do pedido no ponto de venda.</summary>
PendingCreate = 2,
/// <summary>Aguardando confirmação do ponto de venda.</summary>
PendingApproval = 3,
/// <summary>Pedido confirmado no ponto de venda.</summary>
ApprovedExternal = 4,
/// <summary>Em faturamento.</summary>
Processing = 5,
/// <summary>Produtos separados.</summary>
Separate = 6,
/// <summary>Em transporte.</summary>
InDelivery = 7,
/// <summary>Pronto para retirada.</summary>
ReadyForPickup = 8,
/// <summary>Finalizado.</summary>
Finalized = 9,
/// <summary>Cancelado pelo ponto de venda.</summary>
CanceledBySeller = 10,
/// <summary>Cancelado pelo consumidor.</summary>
CanceledByBuyer = 11,
/// <summary>Cancelado pelo administrador.</summary>
CanceledByAdmin = 12,
/// <summary>Aguardando cancelamento.</summary>
PendingCancel = 13,
/// <summary>Aguardando criação da pré-venda no ponto de venda.</summary>
PendingCreatePreOrder = 14,
/// <summary>Pré-venda criada no ponto de venda.</summary>
PreOrderCreated = 15,
/// <summary>Erro ao cancelar o pedido.</summary>
ErrorCancel = 16,
/// <summary>Aguardando atualização de dados do pedido.</summary>
PendingUpdate = 17,
/// <summary>Atualização do pedido concluída com sucesso.</summary>
Updated = 18,
/// <summary>Erro ao atualizar o pedido.</summary>
ErrorUpdate = 19,
/// <summary>Nota fiscal emitida.</summary>
InvoiceCreated = 20,
/// <summary>Cancelado via processo automatizado.</summary>
CanceledByProcessor = 21,
/// <summary>Criação do pedido iniciada</summary>
CreateOrder = 22,
/// <summary>Criação da etiqueta de envio</summary>
CreateShippingLabel = 23,
/// <summary>
/// Pronto para despacho
/// </summary>
ReadyForShipping = 24,
/// <summary>
/// Aguardando decisão sobre cancelamento
/// </summary>
WaitingCancellationDecision = 25
}
}
OrderStatusSummary
{
public enum OrderStatusSummary
{
[Display(Name = "Não informado")]
None = 0,
[Display(Name = "Aguardando criação do pedido")]
AwaitingCreation = 1,
[Display(Name = "Pedido criado na Neomode")]
CreatedInternal = 2,
[Display(Name = "Pedido criado pelo ponto de venda")]
CreatedExternal = 3,
[Display(Name = "Em andamento")]
InProgress = 4,
[Display(Name = "Em faturamento")]
AwaitingInvoiceCreation = 5,
[Display(Name = "Faturado")]
InvoiceCreated = 6,
[Display(Name = "Produto(s) separado(s)")]
Separated = 7,
[Display(Name = "Pronto para retirada")]
ReadyForPickup = 8,
[Display(Name = "Em transporte")]
Shipping = 9,
[Display(Name = "Pedido finalizado")]
Finalized = 10,
[Display(Name = "Pedido cancelado")]
Canceled = 11,
[Display(Name = "Pedido com erro")]
Error = 12,
[Display(Name = "Aguardando geração da etiqueta de postagem")]
WaitingCreateShippingLabel = 13,
[Display(Name = "Pedido pronto para transporte")]
ReadyForShipping = 14,
[Display(Name = "Etiqueta de postagem gerada")]
CreateShippingLabel = 15,
[Display(Name = "Aguardando decisão sobre cancelamento")]
WaitingCancellationDecision = 16
}
}
Repository
{
public enum OrderStatus
{
[Display(Name = "Pedido criado")]
[OrderStatusSummarizeTo(OrderStatusSummary.CreatedInternal)]
None = 0,
[Display(Name = "Pedido criado na Lori")]
[OrderStatusSummarizeTo(OrderStatusSummary.CreatedInternal)]
Pending = 1,
[Display(Name = "Aguardando criação do pedido")]
[OrderStatusSummarizeTo(OrderStatusSummary.AwaitingCreation)]
PendingCreate = 2,
[Display(Name = "Aguardando confirmação do ponto de venda")]
[OrderStatusSummarizeTo(OrderStatusSummary.AwaitingCreation)]
PendingApproval = 3,
[Display(Name = "Pedido confirmado no ponto de venda")]
[OrderStatusSummarizeTo(OrderStatusSummary.CreatedExternal)]
ApprovedExternal = 4,
[Display(Name = "Em faturamento")]
[OrderStatusSummarizeTo(OrderStatusSummary.AwaitingInvoiceCreation)]
Processing = 5,
[Display(Name = "Produtos separados")]
[OrderStatusSummarizeTo(OrderStatusSummary.Separated)]
Separate = 6,
[Display(Name = "Em transporte")]
[OrderStatusSummarizeTo(OrderStatusSummary.Shipping)]
InDelivery = 7,
[Display(Name = "Pronto para retirada")]
[OrderStatusSummarizeTo(OrderStatusSummary.ReadyForPickup)]
ReadyForPickup = 8,
[Display(Name = "Finalizado")]
[OrderStatusSummarizeTo(OrderStatusSummary.Finalized)]
Finalized = 9,
[Display(Name = "Cancelado pelo ponto de venda")]
[OrderStatusSummarizeTo(OrderStatusSummary.Canceled)]
CanceledBySeller = 10,
[Display(Name = "Cancelado pelo consumidor")]
[OrderStatusSummarizeTo(OrderStatusSummary.Canceled)]
CanceledByBuyer = 11,
[Display(Name = "Cancelado pelo administrador")]
[OrderStatusSummarizeTo(OrderStatusSummary.Canceled)]
CanceledByAdmin = 12,
[Display(Name = "Pendente de cancelamento")]
[OrderStatusSummarizeTo(OrderStatusSummary.Canceled)]
PendingCancel = 13,
[Display(Name = "Aguardando criação da pré-venda")]
[OrderStatusSummarizeTo(OrderStatusSummary.AwaitingCreation)]
PendingCreatePreOrder = 14,
[Display(Name = "Pré-venda criada no ponto de venda")]
[OrderStatusSummarizeTo(OrderStatusSummary.CreatedExternal)]
PreOrderCreated = 15,
[Display(Name = "Erro ao cancelar pedido")]
[OrderStatusSummarizeTo(OrderStatusSummary.Error)]
ErrorCancel = 16,
[Display(Name = "Pendente de atualização")]
[OrderStatusSummarizeTo(OrderStatusSummary.InProgress)]
PendingUpdate = 17,
[Display(Name = "Pedido atualizado")]
[OrderStatusSummarizeTo(OrderStatusSummary.InProgress)]
Updated = 18,
[Display(Name = "Erro ao atualizar pedido")]
[OrderStatusSummarizeTo(OrderStatusSummary.Error)]
ErrorUpdate = 19,
[Display(Name = "Nota fiscal emitida")]
[OrderStatusSummarizeTo(OrderStatusSummary.InvoiceCreated)]
InvoiceCreated = 20,
[Display(Name = "Cancelado via processo")]
[OrderStatusSummarizeTo(OrderStatusSummary.Canceled)]
CanceledByProcessor = 21,
[Display(Name = "Aguardando geração da etiqueta de postagem")]
[OrderStatusSummarizeTo(OrderStatusSummary.WaitingCreateShippingLabel)]
WaitingCreateShippingLabel = 22,
[Display(Name = "Pronto para despacho")]
[OrderStatusSummarizeTo(OrderStatusSummary.ReadyForShipping)]
ReadyForShipping = 23,
[Display(Name = "Etiqueta de postagem gerada")]
[OrderStatusSummarizeTo(OrderStatusSummary.CreateShippingLabel)]
CreateShippingLabel = 24,
[Display(Name = "Aguardando decisão sobre cancelamento")]
[OrderStatusSummarizeTo(OrderStatusSummary.WaitingCancellationDecision)]
WaitingCancellationDecision = 25
}
}
