Order

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.

FieldData TypeLocation / FunctionAPI Routing Pattern
Idstring (GUID)Primary identifier found in the page URL link.N/A (Direct Resource ID)
ExternalIdstringDisplayed in the first order information block.cp/.../external/{id} or /orderNumber
SellerOrderIdstringDisplayed in the first order information block.cp/.../sellerOrderId/{id}

NEO In Store Order Details Page:

Pedido Neomode

Full Order Body

Top Level Order Fields

FieldType
idstring
createDatestring (ISO)
externalIdstring
sellerOrderIdstringSeller-specific order ID
orderPackageIdstringOptional package grouping ID
channelstring
friendlyCodestring
cpfPickUpstringCPF for pickup
cpfInvoicestringCPF for invoice
invoiceUrlstringURL to the invoice document
dealerCodestringOptional dealer code
feeAmountnumber
bonusAmountnumber
isDeliveryboolean
isCvvValidatedboolean
maxPickUpTimestringMaximum pickup time
orderNotestringOptional note added to order
plpstringPLP (postal list) reference
statusnumberSeparated

Buyer

FieldTypeDescription
bonusCustomerIdstringnullOptional loyalty/bonus ID
cpfstringCPF of the buyer
stateInscriptionstringnullState registration
documentTypenumberType of document (1 = CPF, 2 = CNPJ)
phoneNumberstringBuyer phone number
fullNamestringBuyer full name
emailstringBuyer email
cnpjstringnullBuyer CNPJ if applicable
companyNamestringnullBuyer company name
addressobjectDelivery address (see Address fields below)

Seller

FieldTypeDescription
pointSaleIdstringPoint of sale ID
fullNamestringSeller name
emailstringSeller email
cnpjstringSeller CNPJ
addressobjectSeller address (same structure as buyer address)
workingHoursarrayOptional working hours for store
integrationConfigobjectCredentials and integration info for order, payment, fraud, promotion engine

Address

FieldTypeDescription
streetstringStreet name
numberstringNumber
complementstringnullAddress complement
neighborhoodstringNeighborhood
cepstringPostal code
citystringCity
statestringState abbreviation
latitudenumbernullGPS latitude
longitudenumbernullGPS longitude
fullAddressstringFormatted full address

Freight

FieldTypeDescription
deliveryTimenumberEstimated delivery time
referencestringDelivery service reference
descriptionstringDescription of freight service
amountnumberFreight amount

PaymentInfo & PaymentList

FieldTypeDescription
amountnumberPayment amount
quantityInstallmentsnumberNumber of installments
paymentMethodobjectPayment method details

Payment Method

FieldTypeDescription
infostringMethod name (e.g., Credit Card, Pix)
brandstringnullCard brand if applicable
typenumberNumeric payment type
modalitynumberModality type
idstringUnique ID for payment method

Invoice

FieldTypeDescription
keystringnullInvoice key
numberstringnullInvoice number
serieNumbernumberSeries number
totalAmountnumberTotal invoice amount
xmlUrlstringnullXML URL
fileUrlstringnullPDF file URL
issuanceDatestringDate of issuance

Items Array

FieldTypeDescription
quantitynumberItem quantity
unitPricenumberUnit price of the item
subTotalAmountnumberSubtotal for the item
totalAmountnumberTotal price for the item
skuobjectSKU details (code, name, attributes, linked product)
isGiftbooleanIf item is a gift
couponobjectnullCoupon applied

Custom Data Array

🚧

Here will be order key:value customizations

FieldTypeDescription
keystringCustom key name
valuestringCustom 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
    }
}