Caso de uso
Introdução
O Delivery By Amazon (também conhecido como DBA ou EasyShip) é o programa de entrega pela Amazon. É um serviço que irá beneficiar o seller por meio da nossa rede de provedores de serviços logísticos parceiros, impactando positivamente o negócio do seller e os clientes.
Com o DBA, o seller irá vender os produtos dele, embalar, emitir e enviar a nota fiscal (em casos de vendedores CNPJ) para a Amazon, imprimir a etiqueta e nós, Amazon, seremos responsáveis por entregá-los aos clientes, com condições mais atraentes, entregas rápidas e 100% rastreáveis e com mais opções de frete grátis.
-
O DBA é um programa aberto para os sellers. Qualquer seller que tiver o interesse consegue rapidamente se cadastrar pelo seller central.
-
Não há necessidade de conversão dos produtos por meio do envio de um feed específico. Uma vez que o seller se cadastra no programa e os produtos deles estão elegíveis para o programa (ex: não é hazmat, etc) a Amazon fará a conversão dos produtos automaticamente. Os produtos não elegíveis permanecerão no programa “SelfShip” (envio pelo seller).
-
O cadastro de produto, gestão de inventário, preço, continuam como era antes em produtos de “SelfShip” (envio pelo seller). Não há nenhuma mudança.
-
Os pedidos devem ser importados através da API de Orders.
-
Os xmls das notas fiscais devem ser encaminhados para a Amazon através da API Shipment Invoicing v2022-07-01 (obrigatório somente para vendedores CNPJ).
-
Por meio da API Easy Ship, você consegue agendar a coleta de pedidos, ter acesso às etiquetas de envio (Shipping Label) / lista de postagens (post list) para emissão e aos ids de rastreios.
-
Os produtos NÃO recebem selo prime. O selo prime só é liberado em produtos do programa Seller Flex ou FBA Classic.
Fluxogramas
Fluxograma de importação de pedidos
Esse fluxo consiste em importar os pedidos DBA com as informações necessárias. Saiba mais detalhes nos tópicos 2 e 3.
Fluxograma da nota fiscal
Esse fluxo consiste em submeter e consultar o status da nota fiscal na Amazon. Saiba mais detalhes no tópico 4.
Fluxograma de agendamento de coleta e emissão de etiqueta de envio
Esse fluxo consiste em imprimir a etiqueta de envio e a Post List. O agendamento da coleta acontecerá de forma automática. Saiba mais detalhes no tópico 5.
Notificação de orders
Você pode usar a notificação ORDER_STATUS_CHANGE para manter o gerenciamento dos seus pedidos. Se optar por usá-la saiba que você receberá uma notificação na sua fila SQS toda vez que um pedido for criado, sofrer alteração de status ou for cancelado.
Exemplo de notificação
{
"NotificationVersion": "1.0",
"NotificationType": "ORDER_STATUS_CHANGE",
"PayloadVersion": "1.0",
"EventTime": "2020-07-13T19:42:04.284Z",
"Payload": {
"OrderStatusChangeNotification": {
"SellerId": "AXXXXXXXXXXXXX",
"MarketplaceId": " A2Q3Y263D00KWC",
"AmazonOrderId": "333-7777777-7777777",
"PurchaseDate": 1595882000633,
"OrderStatus": "Unshipped",
"DestinationPostalCode": "48110",
"SupplySourceId": "55448834-0d79-5155-75c4-8529543a7c31",
"OrderItemId": "OIID34853450",
"SellerSKU": "SellerSKUID1",
"Quantity": 45,
"FulfillmentChannel": "MFN"
}
},
"NotificationMetadata": {
"ApplicationId": "app-id-d0e9e693-c3ad-4373-979f-ed4ec98dd746",
"SubscriptionId": "subscription-id-d0e9e693-c3ad-4373-979f-ed4ec98dd746",
"PublishTime": "2020-07-13T19:42:04.284Z",
"NotificationId": "d0e9e693-c3ad-4373-979f-ed4ec98dd746"
}
}
Importante
Você pode optar por fazer o gerenciamento dos pedidos DBA usando essa notificação paralelamente com a API de Orders ou optar por fazer o gerenciamento de pedidos somente chamando a API de orders, isto é, sem usar a notificação.
Importante
Para usar a notificação você precisar de uma fila SQS cadastrada. Caso não tenha uma, acesse esse material para saber mais
Importante
A inscrição na notificação é por seller, portanto, caso você decida fazer o gerenciamento dos pedidos usando essa notificação tenha em mente que cada seller que entrar no programa deverá ser inscrito nesse notificationType, na sua fila, para que assim você receba essas atualizações via SQS.Para saber mais sobre como inscrever um seller na notificationType, clique aqui.
Importante
Essa notificação não é exclusiva para o programa DBA, ou seja, ao inscrever o seller nela você receberá notificações de pedidos com o FulfillmentChannel = “MFN” (relacionados aos programas “SelfShip” e “DBA”) e pedidos com o FulfillmentChannel = “AFN” (relacionados aos programas “FBA Onsite” e “FBA Classic”)
Importante
Você pode deletar as notificações que receber na sua fila com FulfillmentChannel = “AFN” caso não tenha esses programas desenvolvidos.
Importante
Notificações "OrderStatus": "Upcoming" podem ser excluídas e ignoradas. Comecem a reserva de estoque/importação dos pedidos somente a partir do recebimento da notificação de "OrderStatus": "Pending."
Fluxo de importação de pedidos
Após receber as notificações de pedidos, é necessário importá-los para a sua plataforma. Para fazer isso você deve utilizar a API de Orders chamando 2 endpoints:
- GetOrders
- GetOrderItems
Importante
Caso não utilize a notificação basta criar uma rotina de importação de pedidos sem colocá-la no fluxo. Atente-se aos limites de requests de cada chamada.
RDT
Antes de rodar a API de Orders é necessário gerar um RDT (Restricted Data Token) que funcione para esta API para poder acessar dados sensíveis.
Exemplo de requisição
https://sellingpartnerapi-na.amazon.com/tokens/2021-03-01/restrictedDataToken
{
"restrictedResources": [
{
"method": "GET",
"path": "/orders/v0/orders/{order-id}/orderItems",
"dataElements": [
"buyerInfo"
]
}
]
}
Exemplo de reposta
{
"payload": {
"restrictedDataToken": "Atz.sprdt|IQEBLjAsAhRmHjNgHpi0U-Dme37rR6CuUpSR",
"expiresIn": 3600
}
}
Exemplo de requisição
https://sellingpartnerapi-na.amazon.com/tokens/2021-03-01/restrictedDataToken
{
"restrictedResources": [
{
"method": "GET",
"path": "/orders/v0/orders/{order-id}/orderItems",
"dataElements": [
"buyerInfo"
]
}
]
}
Exemplo de resposta
{
"payload": {
"restrictedDataToken": "Atz.sprdt|IQEBLjAsAhRmHjNgHpi0U-Dme37rR6CuUpSR",
"expiresIn": 3600
}
}
Orders API – GetOrders
Path
GET /orders/v0/orders?AmazonOrderIds={AmazonOrderIds}&MarketplaceIds={MarketplaceIds}
Descrição
Essa API retorna os dados de pedidos criados ou atualizados durante o prazo indicado pelos parâmetros especificados. Você também pode aplicar uma série de critérios de filtragem para restringir a lista de pedidos retornados. Se o NextToken estiver presente, ele deve ser usado para recuperar os pedidos em vez de outros critérios. Use o valor retornado na chamada de RDT para popular o xamzaccess-token.
Plano de uso
Rate (Requisições por segundo) | Busrt |
---|---|
0.0167 | 20 |
Parâmetros
- Alguns parâmetros disponíveis. Para ver todos os parâmetros disponíveis nessa chamada, clique aqui:
Tipo | Nome | Descrição | Schema | Requerido |
---|---|---|---|---|
Query | MarketplaceIds | Marketplace id do país específico. Nesse caso usar o do Brasil: A2Q3Y263D00KWC | Array de string | Sim |
Query | EasyShipShipmentStatuses | Uma lista de valores EasyShipShipmentStatus. Usado para selecionar pedidos DBA com status que correspondam aos valores especificados. Se EasyShipShipmentStatus for especificado, somente os pedidos Amazon DBA serão retornados. Valores possíveis: • PendingSchedule: O pacote está aguardando o agendamento da coleta. • PendingPickUp: A Amazon ainda não coletou o pacote do seller. • PendingDropOff: O seller tem que entregar o pacote para a transportadora. • LabelCanceled: O seller cancelou o agendamento. • PickedUp: A Amazon já coletou o pacote do seller. • DroppedOff: O pacote foi entregue pelo seller para a transportadora. • Delivered: O pacote foi entregue ao comprador. • RejectedByBuyer: O pacote foi rejeitado pelo comprador. • Undeliverable: O pacote não pode ser entregue. • ReturningToSeller: O pacote não foi entregue ao comprador e está sendo devolvido ao seller. • ReturnedToSeller: O pacote não foi entregue ao comprador e foi devolvido ao seller. • Lost: O pacote está perdido. • OutForDelivery: O pacote está fora para entrega. • Damaged: O pacote foi danificado pela transportadora | string | Não |
Query | NextToken | Um token de string retornado na resposta de sua solicitação anterior | string | Não |
Query | AmazonOrderIds | Uma lista de valores AmazonOrderId. Um AmazonOrderId é um identificador de pedido definido pela Amazon, no formato 3-7-7. Contagem máxima: 50 | Array de strin | Não |
Exemplo de requisição
https://sellingpartnerapi-na.amazon.com/orders/v0/orders?AmazonOrderIds=701-5250991-
8194635&MarketplaceIds=A2Q3Y263D00KWC
Exemplo de resposta
{
"payload": {
"Orders": [
{
"BuyerInfo": {
"BuyerEmail": "[email protected]",
"BuyerCounty": "Bela Vista"
},
"AmazonOrderId": "752-2219524-7348619",
"EarliestDeliveryDate": "2022-06-02T03:00:00Z",
"EarliestShipDate": "2022-05-31T03:00:00Z",
"SalesChannel": "Amazon.com.br",
"AutomatedShippingSettings": {
"HasAutomatedShippingSettings": false
},
"OrderStatus": "Unshipped",
"NumberOfItemsShipped": 0,
"OrderType": "StandardOrder",
"IsPremiumOrder": false,
"IsPrime": false,
"FulfillmentChannel": "MFN",
"NumberOfItemsUnshipped": 1,
"HasRegulatedItems": false,
"IsReplacementOrder": "false",
"IsSoldByAB": false,
"LatestShipDate": "2022-06-01T02:59:59Z",
"ShipServiceLevel": "Std EZ Local",
"DefaultShipFromLocationAddress": {
"AddressLine2": "São Paulo",
"StateOrRegion": "SÃO PAULO",
"AddressLine1": "São Paulo, 123",
"Phone": "555 555-5555",
"PostalCode": "01135020",
"City": "São Paulo",
"CountryCode": "BR",
"Name": "Alexander"
},
"IsISPU": false,
"MarketplaceId": "AZXD3QD5B39HD",
"LatestDeliveryDate": "2022-06-07T02:59:59Z",
"PurchaseDate": "2022-05-30T15:33:14Z",
"ShippingAddress": {
"StateOrRegion": "Sao Paulo",
"PostalCode": "01319-900",
"City": "Sao Paulo",
"CountryCode": "BR"
},
"IsAccessPointOrder": false,
"PaymentMethod": "Other",
"IsBusinessOrder": false,
"OrderTotal": {
"CurrencyCode": "BRL",
"Amount": "43.18"
},
"PaymentMethodDetails": [
"GiftCertificate"
],
"IsGlobalExpressEnabled": false,
"LastUpdateDate": "2022-05-30T16:19:05Z",
"ShipmentServiceLevelCategory": "Standard",
"ElectronicInvoiceStatus": "NotFound"
},
{
"BuyerInfo": {
"BuyerEmail": "[email protected]",
"BuyerCounty": "Bela Vista"
},
"AmazonOrderId": "952-1394384-6312625",
"EarliestDeliveryDate": "2022-06-02T03:00:00Z",
"EarliestShipDate": "2022-05-31T03:00:00Z",
"SalesChannel": "Amazon.com.br",
"AutomatedShippingSettings": {
"HasAutomatedShippingSettings": false
},
"OrderStatus": "Unshipped",
"NumberOfItemsShipped": 0,
"OrderType": "StandardOrder",
"IsPremiumOrder": false,
"IsPrime": false,
"FulfillmentChannel": "MFN",
"NumberOfItemsUnshipped": 1,
"HasRegulatedItems": false,
"IsReplacementOrder": "false",
"IsSoldByAB": false,
"LatestShipDate": "2022-06-01T02:59:59Z",
"ShipServiceLevel": "Std EZ Local",
"DefaultShipFromLocationAddress": {
"AddressLine2": "São Paulo",
"StateOrRegion": "SÃO PAULO",
"AddressLine1": "São Paulo, 123",
"Phone": "555 555-5555",
"PostalCode": "01137766",
"City": "São Paulo",
"CountryCode": "BR",
"Name": "testename"
},
"IsISPU": false,
"MarketplaceId": "A2Q3Y263D00KWC",
"LatestDeliveryDate": "2022-06-07T02:59:59Z",
"PurchaseDate": "2022-05-30T15:34:18Z",
"ShippingAddress": {
"StateOrRegion": "Sao Paulo",
"PostalCode": "01319-900",
"City": "Sao Paulo",
"CountryCode": "BR"
},
"IsAccessPointOrder": false,
"PaymentMethod": "Other",
"IsBusinessOrder": false,
"OrderTotal": {
"CurrencyCode": "BRL",
"Amount": "43.18"
},
"PaymentMethodDetails": [
"GiftCertificate"
],
"IsGlobalExpressEnabled": false,
"LastUpdateDate": "2022-05-30T16:20:07Z",
"ShipmentServiceLevelCategory": "Standard",
"EasyShipShipmentStatus": "PendingSchedule",
"ElectronicInvoiceStatus": "Accepted"
}
],
"NextToken": "UGYYhHsRleGaJqJYLDm0ZAmQazDrhw3C09uoReIMT5lUojdU4H46tsNI3HOI22PIxqXyQLkGMBs8VhF73Xgy+9f32XRKG2brqFgiT4dRcg7+pDWtTzLT/mSM0rf71Y7MInTAy+XKVmRZBY+oaVuycwQFure81U/CbNnRLnMRDB36YUM3QLuNukElRijvo92f2GLmUGyr9UGnxD0RJmrryegoU0IPZxXH5ONIrrUMtTIpzs55mWnSB8egkQf5MvgMBO/reDY2s/VSsSZnYLBv5zJkJrX4f/3IIYkgmdzyCpNQzRAUqdu/lLe5xTjsfs3Wh6eH2mzao0flzT+NbaI3vyAULdxUEMyQQAxFNyFufa3Qls5+H7qLvj6KB3gIU8fN3wU5DX8pYxW ut/lzAoWkIMwoUFiWgZyU65VjUQZRinL52R7aRQ/Y22iMYFXG9yK6G4I/dhxbeqPnp7zXB4uNUJjuV2l U3LFiOJgwRc5hsrPZjTnVM/HGQ==",
"CreatedBefore": "2022-06-09T20:14:38Z"
}
}
Parâmetros importantes na resposta 200 http code:
O campo “ElectronicInvoiceStatus” é o status da nota fiscal eletrônica. Segue lista com o significado de cada “ElectronicInvoiceStatus”:
-
NotRequired = Não é necessário o envio da nota fiscal nesse caso.
-
NotFound = Pendente a submissão da nota fiscal. Não encontrado nenhuma submissão.
-
Processing = Validação da Nota Fiscal está em processamento.
-
Accepted = Validação da Nota Fiscal foi realizada com sucesso e aceita pela Amazon.
-
Errored = Houve um erro com a validação da nota (provavelmente algo com InvalidDigestValue ou InvalidSignature). Tentar novamente.
O campo “EasyShipShipmentStatus” é o status do pedido Amazon DBA. Este campo está disponível apenas para pedidos Amazon DBA. Segue lista com o significado de cada “EasyShipShipmentStatus”:
-
PendingSchedule: O pacote está aguardando o agendamento da coleta.
-
PendingPickUp: A Amazon ainda não coletou o pacote do seller.
-
PendingDropOff: O seller tem que entregar o pacote para a transportadora.
-
LabelCanceled: O seller cancelou o agendamento.
-
PickedUp: A Amazon já coletou o pacote do seller.
-
DroppedOff: O pacote foi entregue pelo seller para a transportadora.
-
Delivered: O pacote foi entregue ao comprador.
-
RejectedByBuyer: O pacote foi rejeitado pelo comprador.
-
Undeliverable: O pacote não pode ser entregue.
-
ReturningToSeller: O pacote não foi entregue ao comprador e está sendo devolvido ao seller.
-
ReturnedToSeller: O pacote não foi entregue ao comprador e foi devolvido ao seller.
-
Lost: O pacote está perdido.
-
OutForDelivery: O pacote está fora para entrega.
-
Damaged: O pacote foi danificado pela transportadora
Para saber sobre todos os possíveis retornos e o que cada um significa veja mais aqui.
Importante
Use o GetOrders ou GetOrder para diferenciar qual pedido é “DBA” e qual é “SelfShip”. Se o pedido tiver o campo “ElectronicInvoiceStatus” ou o campo “EasyShipShipmentStatus” significa que ele é DBA
Importante
O campo “EasyShipShipmentStatus” não aparece em pedidos com “OrdersStatus” igual a "Pending" ou "Canceled".
Importante
Diferencie na sua plataforma os pedidos com tags específicas de cada programa. Um pedido DBA não deve seguir o mesmo fluxo de processamento de um pedido “SelfShip”, por exemplo, e isso deve ficar visível para o seller na sua plataforma.
Importante
É recomendado realizar a reserva de estoque para pedidos com OrderStatus = “Pending”. Veja mais aqui
Importante
Chamadas que contenham acesso aos dados restritos precisam que o integrador use o RDT token no lugar do access token. Saiba mais aqui ou veja o tópico 3.1.
Importante
Se você quer buscar um OrderId por vez id você pode usar o GetOrder (veja mais aqui). Lembre-se de se atentar aos limites de requests disponibilizados pela Amazon para evitar throttling.
Orders API – GetOrderItems
Path
GET orders/v0/orders/{orderId}/orderItems
Descrição
Retorna as informações do comprador e do item do pedido especificado. Se o NextToken for fornecido, ele deve ser usado para recuperar a próxima página de itens do pedido. Use o valor retornado na chamada de RDT para popular o xamz-access-token. Observação: quando um pedido está no OrderStatus Pending (o pedido foi feito, mas o pagamento não foi autorizado), a operação getOrderItems não retorna informações sobre preços, impostos, taxas de envio, status do presente ou promoções para os itens do pedido no pedido. Depois que um pedido sai do estado OrderStatus (isso ocorre quando o pagamento foi autorizado) e entra no estado Unshipped, Partially Shipped, or Shipped, a operação getOrderItems retorna informações sobre preços, impostos, taxas de envio, status do presente e promoções para os itens do pedido.
Plano de uso
Rate (Requisições por segundo) | Burst |
---|---|
0.5 | 30 |
Parâmetros:
- Alguns parâmetros disponíveis. Para ver todos os parâmetros disponíveis nessa chamada, clique aqui:
Tipo | Nome | Descrição | Schema | Requerido |
---|---|---|---|---|
Path | orderId | O identificador de pedido definido pela Amazon, no formato 3-7-7. | string | Sim |
Query | NextToken | Um token de string retornado na resposta de sua solicitação anterior | string | Sim |
Query | AmazonOrderIds | Uma lista de valores AmazonOrderId. Um AmazonOrderId é um identificador de pedido definido pela Amazon, no formato 3-7-7. Contagem máxima: 50 | Array de string | Não |
Exemplo de requisição:
https://sellingpartnerapi-na.amazon.com/orders/v0/orders/701-8504864-5617063/orderItems
Exemplo de resposta:
{
"payload": {
"OrderItems": [
{
"ProductInfo": {
"NumberOfItems": "1"
},
"BuyerInfo": {},
"ItemTax": {
"CurrencyCode": "BRL",
"Amount": "0.00"
},
"QuantityShipped": 0,
"ItemPrice": {
"CurrencyCode": "BRL",
"Amount": "0.20"
},
"ASIN": "B07JM9487B",
"SellerSKU": "puff",
"Title": "Puff Infantil Banana Grande Unissex em Corino",
"IsGift": "false",
"ConditionSubtypeId": "New",
"IsTransparency": false,
"QuantityOrdered": 2,
"PromotionDiscountTax": {
"CurrencyCode": "BRL",
"Amount": "0.00"
},
"ConditionId": "New",
"PromotionIds": [
"VPC-526970-153018660 Coupon"
],
"PromotionDiscount": {
"CurrencyCode": "BRL",
"Amount": "0.00"
},
"OrderItemId": "45975081693602"
},
{
"ProductInfo": {
"NumberOfItems": "1"
},
"BuyerInfo": {},
"ItemTax": {
"CurrencyCode": "BRL",
"Amount": "0.00"
},
"QuantityShipped": 0,
"ItemPrice": {
"CurrencyCode": "BRL",
"Amount": "20.00"
},
"ASIN": "B084Q59N8W",
"SellerSKU": "B084Q59N8W",
"Title": "Luminária de Mesa Articulavel Pixar Garra Base Quarto Preta",
"ShippingTax": {
"CurrencyCode": "BRL",
"Amount": "0.00"
},
"IsGift": "false",
"ShippingPrice": {
"CurrencyCode": "BRL",
"Amount": "0.25"
},
"ConditionSubtypeId": "New",
"ShippingDiscount": {
"CurrencyCode": "BRL",
"Amount": "0.00"
},
"ShippingDiscountTax": {
"CurrencyCode": "BRL",
"Amount": "0.00"
},
"IsTransparency": false,
"QuantityOrdered": 1,
"PromotionDiscountTax": {
"CurrencyCode": "BRL",
"Amount": "0.00"
},
"ConditionId": "New",
"PromotionIds": [
"VPC-526970-153018660 Coupon"
],
"PromotionDiscount": {
"CurrencyCode": "BRL",
"Amount": "15.00"
},
"OrderItemId": "09400181061466"
}
]
}
}
Para saber sobre todos os possíveis retornos e o que cada um significa veja mais aqui.
Importante
Chamadas que contenham acesso aos dados restritos precisam que o integrador use o RDT token no lugar do access token. Saiba mais aqui ou veja o tópico 3.1.
Importante
Lembre-se de se atentar aos limites de requests disponibilizados pela Amazon para evitar throttling.
Fluxo da nota fiscal
Após importar os pedidos para a sua plataforma é necessário validar se o pedido precisa que a nota fiscal seja enviada para a Amazon e, se sim, que você envie e consulte o status de processamento. Para fazer isso, você deve utilizar a API de Shipment Invoicing v2022-07-01 chamando 2 endpoints:
- submitInvoiceByOrderId
- getInvoiceStatusByOrderId
Importante
Sellers CPF a Amazon aceita a declaração de contéudo ao invés da Nota fiscal, isto é, a nota fiscal nesse caso não é obrigatória. Portanto, o fluxo de nota fiscal só deve ser realizado para orders com o campo ElectronicInvoiceStatus diferente de “NotRequired”.
Importante
Para pedidos com ElectronicInvoiceStatus igual a “NotRequired” pular para o fluxo de agendamento de coleta e emissão de etiqueta de envio (tópico 5).
Shipment Invoicing API – submitInvoiceByOrderId
Path
POST /delivery/2022-07-01/invoice
Descrição
A API de submitInvoice permite com que o desenvolvedor envie o XML da nota fiscal em base 64 para a Amazon. Para o campo x-amz-access-token, utilizar o access token normal (não é o RDT).
Plano de uso
Rate (Requisições por segundo) | Burst |
---|---|
1.133 | 25 |
Parâmetros
Tipo | Nome | Descrição | Schema | Requerido |
---|---|---|---|---|
Path | orderId | O identificador de pedido definido pela Amazon, no formato 3-7-7. | string | Sim |
Body | invoiceContent | Base64 encode do XML da nota | string | Sim |
Body | marketplaceId | Marketplace id do país específico. Nesse caso usar o do Brasil: A2Q3Y263D00KWC | string | Sim |
Body | contentMD5Value | Soma MD5 para validar os dados da nota fiscal. Para obter mais informações sobre como calcular esse valor, consulte Trabalhando com somas de verificação Content-MD5. | string | Sim |
Body | invoiceType | O tipo da nota fiscal. Envie sempre como “Outbound” | string | Sim |
Body | programType | O tipo de programa. Envie sempre como “EasyShip” | string | Sim |
Exemplo de requisição
https://sellingpartnerapi-na.amazon.com/delivery/2022-07-01/invoice?orderId=701-3301310-5485821
{
"invoiceContent": "string",
"marketplaceId": "string",
"contentMD5Value": "string",
"invoiceType": "Outbound",
"programType": "EasyShip"
}
Exemplo de resposta
{}
Importante
A resposta, em caso de 200 http code vem vazia.
Shipment Invoicing API – getInvoiceStatusByOrderId
Importante
A Amazon processa a nota fiscal de forma assíncrona. Portanto, execute essa operação por volta de 5 minutos depois da submissão da nota fiscal para pegar um processamento concluído.
Importante
É importante que você deixe visível o status da nota fiscal na sua plataforma. Em casos de erros deixe visível para o seller o status e a chance de reencaminhar para a Amazon uma nota corrigida.
Importante
Assegure-se de que o seu aplicativo possua o role de Inventário e Rastreamento de Pedidos ( Inventory and Order Tracking ) para realizar essa chamada com sucesso.
Caso contrário, a resposta à solicitação retornará um código de status HTTP 403, acompanhado de informações detalhadas sobre o erro contidas no body da resposta.
Além disso, verifique cuidadosamente se a fatura integrada ao seu sistema está codificada em Base64, e que inclui o valor de contentMD5 no body.
Path
GET /delivery/2022-07-01/invoice/status
Descrição
Após envio da nota fiscal, é necessário saber se ela foi processada corretamente. Para o campo x-amzaccess-token, utilizar o access token normal (não é o RDT).
Plano de uso
Rate (Requisições por segundo) | Burst |
---|---|
1.133 | 25 |
Parâmetros
Tipo | Nome | Descrição | Schema | Requerido |
---|---|---|---|---|
Query | orderId | O identificador de pedido definido pela Amazon, no formato 3-7-7. | string | Sim |
Query | marketplaceId | Marketplace id do país específico. Nesse caso usar o do Brasil: A2Q3Y263D00KWC | string | Sim |
Query | invoiceType | O tipo da nota fiscal. Envie sempre como “Outbound” | string | Sim |
Query | programType | O tipo de programa. Envie sempre como “EasyShip” | string | Sim |
Exemplo de requisição
https://sellingpartnerapi-na.amazon.com/delivery/2022-07-01/invoice/status?orderId=701-3301310-5485821&marketplaceId=A2Q3Y263D00KWC&invoiceType=Outbound&programType=EasyShip
Exemplo de resposta
{
"payload": {
"amazonOrderId": "string",
"invoiceStatus": " Accepted"
}
}
Parâmetros importante no response 200 http code
Nome | Descrição | Schema |
---|---|---|
amazonOrderId | O identificador do pedido | string |
invoiceStatus | Status de processamento da nota fiscal | enum < Processing Accepted Errored NotFound > |
Segue lista com o significado de cada invoiceStatus:
-
Processing: Validação da Nota Fiscal está em processamento.
-
Accepted: O processo de validação da nota fiscal foi bem-sucedido e a nota fiscal foi aceita pela Amazon. Para casos de pedidos que não precisam de nota fiscal (orders que estiverem como ElectronicInvoiceStatus = “NotRequired” na API de Orders) sempre será retornado como NotFound aqui nesse campo.
-
Errored: Houve um erro com a validação da nota (provavelmente algo com InvalidDigestValue ou InvalidSignature). Tentar novamente.
-
NotFound: Não foi encontrado uma submissão com sucesso para os dados solicitados.
Fluxo de agendamento de coleta e emissão de etiqueta de envio
Após importar os pedidos para a sua plataforma, encaminhar a nota fiscal para a Amazon e consultar o status é necessário realizar o agendamento da coleta e emissão da etiqueta. Para fazer isso você deve utilizar a API de EasyShip chamando 1 endpoint:
- createScheduledPackageBulk
RDT
Antes de rodar a API de Bulk EasyShip é necessário gerar um RDT (Restricted Data Token) que funcione para esta API.
Exemplo de requisição
https://sellingpartnerapi-na.amazon.com/tokens/2021-03-01/restrictedDataToken
{
"restrictedResources": [
{
"method": "POST",
"path": "/easyShip/2022-03-23/packages/bulk"
}
]
}
Exemplo de resposta
{
"payload": {
"restrictedDataToken": "Atz.sprdt|IQEBLjAsAhRmHjNgHpi0U-Dme37rR6CuUpSR",
"expiresIn": 3600
}
}
Easy Ship API – createScheduledPackageBulk
Importante
Essa é uma chamada síncrona, portanto, a Amazon retornará os dados necessários (link para acessar etiqueta, data de coleta, etc) já no próprio response, incluindo os casos de orders que derem erro.
Importante
Um order-id com erro não invalida a chamada inteira. Ex: caso você encaminhe 3 pedidos e um deles está com erro, esse pedido com erro não será agendado e terá o motivo explicado no response e os demais pedidos seguirão o agendamento da coleta com sucesso.
Importante
Sempre será retornada apenas uma URL com todos os casos que deram sucesso.
Path
POST /easyShip/2022-03-23/packages/bulk
Descrição
Essa operação agenda automaticamente um horário de coleta para todos os amazonOrderIds informados como parâmetros, gerando as etiquetas de envio associadas, juntamente com outros documentos de conformidade de acordo com o marketplace (consulte a tabela de suporte de documentos do marketplace).
Em relação ao formato do arquivo da etiqueta de envio, os desenvolvedores externos podem escolher
entre PDF ou ZPL, e a Amazon criará a etiqueta de acordo.
Essa operação retorna um array composto pelos pacotes agendados e uma URL de curta duração apontando para um arquivo zip contendo as etiquetas de envio geradas e os demais documentos habilitados para seu marketplace. Se pelo menos um pedido não puder ser agendado, a Amazon adicionará a lista de rejectedOrders à resposta, que contém uma entrada para cada pedido que não conseguimos processar. Cada entrada é composta por uma mensagem de erro descrevendo o motivo da falha, para que os vendedores possam corrigir e reenviar.
Importante
Você só deve seguir com o agendamento e olhar para o campo EasyShipShipmentStatus quando o ElectronicInvoiceStatus for igual a “NotRequired” ou “Accepted”. Por exemplo, caso você tenha uma order com ElectronicInvoiceStatus = ”Errored” e EasyShipShipmentStatus = “PendingSchedule” isso significa que primeiro você deve resolver o problema da nota fiscal, enviar uma nova nota fiscal correta para a Amazon para que o status ElectronicInvoiceStatus fique como “Accepted” para depois seguir com a etapa de agendamento.
Plano de uso
Rate (Requisições por segundo) | Burst |
---|---|
1 | 5 |
Parâmetros
Tipo | Nome | Descrição | Schema | Requerido |
---|---|---|---|---|
Body | marketplaceId | Marketplace id do país específico. Nesse caso usar o do Brasil: A2Q3Y263D00KWC | string | Sim |
Body | amazonOrderId | Um identificador de pedido definido pela Amazon. Identifica o pedido que o vendedor deseja entregar usando o Amazon DBA. Podem ser encaminhados até 25 orders id na mesma chamada. | string | Sim |
Body | labelFormat | O formato de arquivo no qual a etiqueta de envio será criada. Opções possíveis “PDF” ou “ZPL”. | string | Sim |
Exemplo de requisição
https://sellingpartnerapi-na.amazon.com/easyShip/2022-03-23/packages/bulk
{
"marketplaceId": "A2Q3Y263D00KWC",
"orderScheduleDetailsList": [
{
"amazonOrderId": "903-1713775-3598252"
},
{
"amazonOrderId": "903-5645781-4567521"
},
{
"amazonOrderId": "951-9026094-1233333"
}
],
"labelFormat": "ZPL"
}
Exemplo de resposta
Essa operação também retorna o resultado da criação do pacote por pedido, portanto, se um você adicionar 25 pedidos à solicitação, a Amazon retornará uma lista contendo 25 entradas, cada uma associada a um único pedido. É importante mencionar que alguns ou todos os pedidos podem falhar. Nesse caso, a Amazon adiciona no retorno da operação uma lista contendo as mensagens de erro de cada pedido que falhou, para que os vendedores possam tomar providências para resolvê-los.
{
"scheduledPackages": [
{
"scheduledPackageId": {
"amazonOrderId": "903-1713775-3598252",
"packageId": "1ab0f06a-9149-87e0-aba9-7098117872d6"
},
"packageTimeSlot": {
"startTime": "2022-03-09T23:30:00Z",
"endTime": "2022-03-10T02:00:00Z"
},
"packageDimensions": {
"length": 5.905511805,
"width": 3.6220472404,
"height": 3.4645669256,
"unit": "IN",
"identifier": "IN_SuggestedContainerDimension"
},
"packageWeight": {
"value": 8.466,
"unit": "ounces"
},
"packageStatus": "ReadyForPickup",
"trackingDetails": {
"trackingId": "1652969339691"
}
},
{
"scheduledPackageId": {
"amazonOrderId": "903-5645781-4567521",
"packageId": "80c06e53-3d96-f13f-30ca-85b50b1cb4ce"
},
"packageTimeSlot": {
"startTime": "2022-05-21T06:08:52.036Z",
"endTime": "2022-05-21T10:08:52.036Z"
},
"packageDimensions": {
"length": 5.905511805,
"width": 3.6220472404,
"height": 3.4645669256,
"unit": "IN",
"identifier": "IN_SuggestedContainerDimension"
},
"packageWeight": {
"value": 8.466,
"unit": "ounces"
},
"packageStatus": "ReadyForPickup",
"trackingDetails": {
"trackingId": "1652969339693"
}
}
],
"rejectedOrders": [
{
"amazonOrderId": "951-9026094-1233333",
"error": {
"code": "InvalidInput",
"message": "Couldn't find the order details for 951-9026094-1233333"
}
}
],
"printableDocumentsUrl": "https://www.amazon.com/documents.zip"
}
Importante
A URL tem duração de 3 minutos.
Importante
Uma única URL é retornada para todos as orders.
Importante
Se você encaminhar uma OrderId já agendada antes o mesmo agendamento será retornado, isto é, não há sobrescrita no agendamento.
Importante
Garanta que o seu seller saberá quais orders deram certo e quais não deram, qual foi o erro e como podem corrigir essas orders.
Importante
Deixe essas etiquetas disponíveis para os seus sellers poderem fazer o download na sua plataforma.
Importante
Aqui você tem uma resposta síncrona. No momento que fizer o input já terá o resultado com a url caso pelo menos uma das orders derem sucesso ou o nó de rejected orders para aquelas que derem erro.
Parâmetros importantes na resposta 200 http code
Nome | Descrição | Schema | Atributo pai |
---|---|---|---|
amazonOrderId | O identificador do pedido. | string | ScheduledPackageId |
packageId | Um identificador definido pela Amazon para o pacote programado. | string | ScheduledPackageId |
startTime | A data e hora de início do intervalo de tempo. | DateTime string($date-time) A datetime value in ISO 8601 format | packageTimeSlot |
endTime | A data e hora de término do intervalo de tempo. | DateTime string($date-time) A datetime value in ISO 8601 format | packageTimeSlot |
length | Comprimento. | float | packageDimensions |
width | Largura. | float | packageDimensions |
height | Altura. | float | packageDimensions |
unit | A unidade de medida usada para medir o comprimento. Possível valor em “Cm” | UnitOfLengthstring | packageDimensions |
identifier | Identificador para dimensões de pacote personalizadas. | string | packageDimensions |
value | O peso do pacote. | float | packageWeight |
unit | A unidade de medida usada para medir o peso. Possíveis valores “Grams”, “G”. | string | packageWeight |
packageStatus | O status do pacote. Para saber os valores possíveis veja abaixo. | string | scheduledPackages |
trackingId | O identificador de rastreamento para o pacote programado. | string | trackingDetails |
amazonOrderId | O identificador do pedido rejeitado. | string | rejectedOrders |
code | Código do erro. Possíveis valores vejam na lista abaixo. | string | error |
message | Mensagem que descreve o erro. | string | error |
printableDocumentsUrl | Um URL préassinado para o documento zip contendo as etiquetas de envio e os documentos habilitados par o país. | string | - |
Para o nó rejectedOrders, esses são os possíveis cenários para um pedido ser rejeitado na hora do agendamento da coleta/emissão da etiqueta de envio.
{
"code": "InvalidInput",
"message": "Couldn't find the order details for 951-9026094-1233333"
}
{
"code": "InternalServerError",
"message": "We couldn't fetch the available ship methods for amazon Order Id 951-9026094-1233333"
}
{
"code": "TimeSlotNotAvailable",
"message": "We couldn't find an available time slot for Amazon Order Id 951-9026094-1233333"
}
{
"code" : "InternalServerError",
"message" : "We couldn't schedule a package for Amazon Order Id 951-9026094-1233333"
}
Esses são os possíveis valores para o campo packageStatus:
-
ReadyForPickup: O pacote está pronto para coleta.
-
ReadyForDropOff: O pacote está pronto para ser entregue pelo seller ao ponto de coleta.
-
PickedUp: A Amazon já coletou o pacote do seller.
-
DroppedOff: O seller ja entregou o pacote para a transportadora.
-
Delivered: O pacote foi entregue ao comprador.
-
Rejected: O pacote foi rejeitado.
-
Undeliverable: O pacote não pode ser entregue.
-
ReturnedToSeller: O pacote não foi entregue ao comprador e foi devolvido ao seller.
-
ReturningToSeller: O pacote não foi entregue ao comprador e está sendo devolvido ao seller.
-
LostInTransit: O pacote está perdido em trânsito.
-
LabelCanceled: A etiqueta do pacote foi cancelada.
-
OutForDelivery: O pacote está fora para entrega.
-
DamagedInTransit: O pacote foi danificado em trânsito.
Extras
Responses http diferentes de 200
Segue a lista de possíveis erros que podem retornar em um http diferente de 200 nas chamadas apresentadas nesse documento:
HTTP code | Descrição |
---|---|
400 | "Request has missing or invalid parameters and cannot be parsed." |
403 | "Indicates access to the resource is forbidden. Possible reasons include Access Denied, Unauthorized, Expired Token, or Invalid Signature." |
404 | The resource specified does not exist. |
429 | The frequency of requests was greater than allowed. |
500 | An unexpected condition occurred that prevented the server from fulfilling the request. |
503 | Temporary overloading or maintenance of the server. |
De/Para dos valores do campo “packageStatus” (presente na operação “createScheduledPackageBulk”) com o campo “EasyShipShipmentStatus” (presente na operação de “GetOrders”)
Apesar de estarem com escritas diferentes em alguns casos ambos os campos querem dizer a mesma coisa: qual o status do pacote/pedido DBA.
Abaixo está o de/para dos dois campos. À esquerda os possíveis valores retornados pelo createScheduledPackageBulk no campo packageStatus e à direta os possíveis valores utilizados pelo GetOrder no campo EasyShipShipmentStatus:
packageStatus | EasyShipShipmentStatus |
---|---|
NÃO HÁ VALOR | PendingSchedule |
ReturningToSeller | ReturningToSeller |
ReadyForDropOff | PendingDropOff |
ReadyForPickup | PendingPickUp |
DroppedOff | DroppedOff |
PickedUp | PickedUp |
Delivered | Delivered |
Rejected | RejectedByBuyer |
Undeliverable | Undeliverable |
ReturnedToSeller | ReturnedToSeller |
LostInTransit | Lost |
LabelCanceled | LabelCanceled |
DamagedInTransit | Damaged |
OutForDelivery | OutForDelivery |
Como cancelar um pedido DBA
Para cancelar um pedido DBA você pode encaminhar um feed usando a API de FEEDs do tipo "feedType": "POST_ORDER_ACKNOWLEDGEMENT_DATA” com o seguinte XML:
<AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="amzn-envelope.xsd">
<Header>
<DocumentVersion>1.01</DocumentVersion>
<MerchantIdentifier>AAAAA11A0AA00A</MerchantIdentifier>
</Header>
<MessageType>OrderAcknowledgement</MessageType>
<Message>
<MessageID>1</MessageID>
<OrderAcknowledgement>
<AmazonOrderID>701-1111111-1111111</AmazonOrderID>
<StatusCode>Failure</StatusCode>
</OrderAcknowledgement>
</Message>
</AmazonEnvelope>
Para saber mais sobre como enviar um feed acesse aqui.
Importante
Garanta de alterar apenas o campo MerchantIdentifier inserindo o seller id do seller em questão e o altere o AmazonOrderID para o identificador no pedido na Amazon que você deseja cancelar.
Updated 11 months ago