Guia de uso

Introdução

O FBA Onsite (Fulfillment by Amazon Onsite), ou FBAOS, é o programa de entrega pela Amazon e armazenamento pelo vendedor. Vale ressaltar a diferença para o FBA (também chamado de FBA Classic), onde a entrega e armazenamento são ambos feitos pela Amazon. É através destes programas de FBA que o vendedor consegue o selo Prime (entrega grátis para compradores membros).

Conceitos básicos

  • A gestão de inventário no FBAOS é feita exclusivamente pelo vendedor (sem utilizar integração) através de uma plataforma da Amazon chamada Seller Flex Tool. Ou seja, o desenvolvedor NÃO deve enviar nenhum feed de estoque para uma oferta FBAOS.
    Se o desenvolvedor fizer isso, ele estará duplicando os produtos do vendedor: o produto existirá tanto como uma oferta em FBAOS quanto uma oferta MFN.

  • O XML das notas fiscais das vendas dentro do programa devem ser enviadas para a Amazon via
    API. Diferentemente de um produto MFN ou FBA, as vendas de produtos FBAOS exigem com
    que os XMLs das notas sejam enviados para a Amazon após emissão.

  • A gestão do fluxo de pedidos é feita com auxílio do Amazon SQS (serviço de enfileiramento de
    mensagens do AWS). Para participar de FBAOS, cada vendedor terá que criar uma fila no SQS
    e, será através desta fila, que ele receberá as notificações dos pedidos que ele deve processar.
    Caberá aos desenvolvedores criarem uma fila SQS própria e conectá-la a cada fila uma das filas
    dos vendedores. Além disso, é preciso liberar acesso para que a fila dos vendedores possa
    escrever na fila do desenvolvedor. Só assim este último saberá quais pedidos estão pendentes
    e que precisam de nota emitida (esta fila contem o ID do pedido a ser processado). Este serviço
    é pago e não é possível desenvolver para FBAOS sem utilizá-lo.

  • Notifications APIs: essas API permitem com que suas aplicações leiam e escrevam na fila do
    SQS.

  • Shipment Invoicing APIs: permitem com que o desenvolvedor busque as informações dos
    pedidos e envie o XML das notas para a Amazon.

  • Conversão de produtos para FBAOS: quando um produto é criado na Amazon, ele sempre é
    criado como sendo uma oferta MFN. Para vendê-lo dentro do programa de FBAOS é preciso
    convertê-lo a uma oferta FBAOS, utilizando a API de Feed de estoque.

1. Fluxograma

Fluxograma de venda

Para o vendedor poder operar no dia a dia dentro do programa de FBAOS, ele deve seguir os passos abaixo. Basicamente, ele faz a gestão de seu inventário via Seller Flex (escaneando os itens que quer vender) e, após a venda ser executada, ele separa e empacota os itens para envio. Após ter a nota fiscal emitida e enviada para a Amazon, o vendedor escaneia os pacotes, etiqueta os pedidos e aguarda a coleta (que é realizada via agendamento, com uma transportadora parceira da Amazon - esse alinhamento é feito entre vendedor e o time de contas executivas da Amazon). Após a coleta, o
produto é entregue ao comprador final.

776

Fluxograma de Invoices

O Fluxo de invoice consiste em ler shipments pendentes na fila do AWS, buscar dados dos shipments
via API de getShipmentDetails, emitir a nota junto à SEFAZ (se o desenvolvedor for um ERP, já pode
fazer todo o processo in-house, caso contrário, precisa acionar o ERP parceiro) e submeter o XML da
nota para a Amazon (via API de submitInvoice). Caso o processamento tenha sido concluído com
sucesso (chamar a API de getInvoiceStatus), o processo chega ao fim. Caso não tenha sido concluído,
corrigir a nota e re-emitíla, passando pelas etapas posteriores novamente.

1405

2. SQS e Notificações

🚧

Esse passo é essencial para as notificações

Configure o SQS na conta Amazon, após esse passo configure as notificações.

Passo a passo de configurações SQS.

❗️

Configure o tipo da notificação

Passo a passo para configurar as notificações.

Para criar uma notificação configure o tipo FBA_OUTBOUND_SHIPMENT_STATUS

Tipo de notificação

Notification Type: FBA_OUTBOUND_SHIPMENT_STATUS

Quando um desenvolvedor se inscreve para receber notificações usando o FBA_OUTBOUND_SHIPMENT_STATUS, ele irá receber mensagens sempre que um novo shipment for
criado ou cancelado.

Exemplo de notificação

{
  "NotificationVersion": "1.0",
  "NotificationType": "FBA_OUTBOUND_SHIPMENT_STATUS",
  "PayloadVersion": "1.0",
  "EventTime": "2020-01-11T00:09:53.109Z",
  "Payload": {
    "FBAOutboundShipmentStatusNotification": {
      "SellerId": "merchantId",
      "AmazonOrderId": "113-2646096-4474645",
      "AmazonShipmentId": "DrLqQwqvb",
      "ShipmentStatus": "Created"
    }
  },
  "NotificationMetadata": {
    "ApplicationId": "appId",
    "SubscriptionId": "subId",
    "PublishTime": "2020-01-11T00:02:50.501Z",
    "NotificationId": "requestId"
  }
}

3. Shipment Invoicing

Após receber as notificações de shipments criados, é necessário processá-los: puxar as informações do pedido, emitir a nota e enviá-la para a Amazon. Para fazer isso, utilizar as 3 APIs de Shipment Invoicing:

  • getShipmentDetails
  • submitInvoice
  • getInvoiceStatus

RDT Token

📘

Sobre o RDT Token

Para fazer requisições RDT Token é necessário fazer a chamada especifica para cada endpoint, para saber tudo sobre RDT acesse a documentação completa.

Antes de rodar a API de getShipmentDetails é necessário gerar um RDT (Restricted Data Token) que
funcione para esta API (para as outras APIs desta seção, não é necessário RDT – somente para
getShipmentDetails).

Exemplo de chamada

Chamada POST

https://sellingpartnerapi-na.amazon.com/tokens/2021-03-01/restrictedDataToken

Payload

{
 "restrictedResources": [
 {
 "method": "GET",
 "path": "/fba/outbound/brazil/v0/shipments/{shipmentId}"
 ]
}

Exemplo de resposta

{
 "payload": {
 "restrictedDataToken": "Atz.sprdt|IQEBLjAsAhRmHjNgHpi0U-Dme37rR6CuUpSR",
 "expiresIn": 3600
 }
}

getShipmentDetails

Esta API retorna os dados do shipment.
Use o valor retornado na chamada de RDT para popular o x-amz-access-token.

Segue um detalhamento de como montar um request.

Exemplo de chamada

GET: https://sellingpartnerapi-na.amazon.com/fba/outbound/brazil/v0/shipments/{shipmentId}

Exemplo: https://sellingpartnerapi-na.amazon.com/fba/outbound/brazil/v0/shipments/DrLqQwqvb

Exemplo de resposta

{
  "payload": {
    "ShipmentDetail": {
      "PurchaseDate": "2018-04-16T14:44:38Z",
      "WarehouseId": "XXXX",
      "AmazonOrderId": "701-0000000-0000000",
      "AmazonShipmentId": "DrLqQwqvb",
      "BuyerTaxInfo": {
        "TaxClassifications": {
          "TaxClassification": {
            "Name": "CPF",
            "Value": "99999999999"
          }
        }
      },
      "PaymentMethodDetails": {
        "PaymentMethodDetail": "CreditCard"
      },
      "BuyerCounty": "Centro",
      "BuyerName": "Fulano da Silva",
      "MarketplaceId": "A2Q3Y263D00KWC",
      "ShippingAddress": {
        "City": "SAO PAULO",
        "PostalCode": "00000-000",
        "StateOrRegion": "SP",
        "Phone": "11912345678",
        "CountryCode": "BR",
        "Name": "Beltrano da Silva",
        "AddressLine1": "Rua da Consolação, 700",
        "AddressLine2": "Apto 32"
      },
      "ShipmentItems": {
        "ShipmentItem": {
          "QuantityOrdered": "2",
          "Title": "iPhone X Apple Cinza Espacial, 64 GB e Câmera 12 MP",
          "PromotionDiscount": {
            "CurrencyCode": "BRL",
            "Amount": "0.00"
          },
          "ASIN": "B078HVJB69",
          "SellerSKU": "XY-1A0O-B1CD",
          "OrderItemId": "19441439621890",
          "ShippingPrice": {
            "CurrencyCode": "BRL",
            "Amount": "30.00"
          },
          "GiftWrapPrice": {
            "CurrencyCode": "BRL",
            "Amount": "00.00"
          },
          "ItemPrice": {
            "CurrencyCode": "BRL",
            "Amount": "5099.99"
          },
          "ShippingDiscount": {
            "CurrencyCode": "BRL",
            "Amount": "00.00"
          },
          "SerialNumbers": {
            "SerialNumber": "1234567890"
          }
        }
      }
    }
  }
}

submitInvoice

A API de submitInvoice permite com que o desenvolvedor envie o XML da nota fiscal de volta para a
Amazon. Para o campo x-amz-access-token, utilizar o token normal (não é o RDT).

Exemplo de chamada

POST: https://sellingpartnerapi-na.amazon.com/fba/outbound/brazil/v0/shipments/{shipmentId}/invoice

Exemplo: https://sellingpartnerapi-na.amazon.com/fba/outbound/brazil/v0/shipments/DrLqQwqvb/invoice

Body (Exemplo em php)

{
  "InvoiceContent": base64_encode($xml),
  "ContentMD5Value": base64_encode(md5($xml, true))
}

Exemplo de resposta

A resposta vem vazia

{}

getInvoiceStatus

Após envio da nota fiscal, é necessário saber se ela foi processada corretamente.

Exemplo de chamada

GET https://sellingpartnerapi-na.amazon.com//fba/outbound/brazil/v0/shipments/{shipmentId}/invoice/status

Exemplo: https://sellingpartnerapi-na.amazon.com/fba/outbound/brazil/v0/shipments/DrLqQwqvb/invoice/status

Exemplo de resposta

{
  "payload": {
    "Shipments": {
      "Shipment": {
        "AmazonShipmentId": "DrLqQwqvb",
        "InvoiceStatus": "Accepted"
      }
    },
    "ResponseMetadata": {
      "RequestId": "98bbbfc7-22fe-42cf-9ae7-7cfb1849b90f"
    }
  }
}