Faturamento

Nesta seção é apresentado o faturamento de pedidos Fulfillment via API e a consulta das entregas geradas para o serviço

POST - Faturando o pedido Fulfillment

Existem 2 (duas) formas de encaminhar o XML para faturamento de um pedido Americanas Fulfillment via API: A primeira consiste no envio do arquivo XML, enquanto que a segunda destina-se ao envio do conteúdo do XML no corpo da requisição.

Para ambos os faturamentos - tanto pelo envio do arquivo XML quanto pelo encaminhamento do conteúdo do XML - será utilizada a URL base vista a seguir:

https://api.skyhub.com.br/fulfillment/b2w/delivery

Independente da forma de envio, o arquivo XML precisa conter a tag <xPed> com o número da entrega dentro das informações do produto.

Sem essa tag contendo a identificação da entrega o marketplace não será capaz de receber o arquivo para faturamento.

Para as contas de teste é possível receber retornos de insucesso para o envio do faturamento.

Isto ocorre porquê o recurso Fulfillment trata um serviço específico do marketplace para o qual não há vínculo direto com o ambiente de teste da API.

Para homologação do recurso, é imprescindível o contato com os times responsáveis através do api@skyhub.com.br para as devidas orientações.

Envio do arquivo XML

O envio do arquivo XML deve ser em UTF-8 e requer atenção especial para o header Content-Type, que deverá ser preenchido com o valor multipart/form-data, conforme orientações disponibilizadas a seguir:

Request headers:

KeyValue

X-User-Email

email_de_usuario

X-Api-Key

token_de_integracao de sua conta SkyHub

X-Accountmanager-Key

token_account único de cada Plataforma/ERP

Accept

application/json

Content-Type

multipart/form-data

Request body:

// O conteúdo a seguir representa o formato multipart/form-data para inclusão do arquivo
--form 'recipient_document="cnpj_cd_direct"' \
--form 'invoice=@"/path/to/file"'

Example request:

curl --location --request POST 'https://api.skyhub.com.br/fulfillment/b2w/delivery' \
--header 'X-User-Email: email_de_usuario' \
--header 'X-Api-Key: token_de_integracao de sua conta SkyHub' \
--header 'X-Accountmanager-Key: token_account único de cada Plataforma/ERP' \
--header 'Accept: application/json' \
--header 'Content-Type: multipart/form-data' \
--form 'recipient_document="776570005909"' \
--form 'invoice=@"arquivo_example.xml"'

Response esperado:

204 [Success] - No content

Envio do conteúdo do XML

Para o envio do conteúdo do XML no body da requisição o header Content-Type será o application/json, conforme orientações disponibilizadas a seguir:

Request headers:

KeyValue

X-User-Email

email_de_usuario

X-Api-Key

token_de_integracao de sua conta SkyHub

X-Accountmanager-Key

token_account único de cada Plataforma/ERP

Accept

application/json

Content-Type

application/json

Request body:

{
    "invoice": {
        "payload": "<body_xml>"
    },
    "recipient_document": "cnpj_cd_direct"
}

Example request:

curl --location --request POST 'https://api.skyhub.com.br/fulfillment/b2w/delivery' \
--header 'X-User-Email: email_de_usuario' \
--header 'X-Api-Key: token_de_integracao de sua conta SkyHub' \
--header 'X-Accountmanager-Key: token_account único de cada Plataforma/ERP' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{
    "invoice": {
        "payload": "Conteúdo completo do XML da NFe"
    },
    "recipient_document": "776570005909"
}'

Response esperado:

204 [Success] - No content

GET - Consultando as entregas

Via API é possível consultar as entregas geradas para o serviço Americanas Fulfillment. Esta consulta resultará numa listagem contendo: CD, número da entrega, status, chave da NFe, data de faturamento e arquivo enviado.

Para a consulta de entregas deverá ser executado um GET utilizando os headers padronizados na API para o endpoint:

https://api.skyhub.com.br/fulfillment/b2w/delivery?from_date=DD/MM/AAAA&to_date=DD/MM/AAAA

O filtro que delimita o período da consulta é obrigatório para esta requisição.

A falta de inclusão do período a ser consultado (parâmetros from_date e to_date) resultará em status 422.

Request headers:

KeyValue

X-User-Email

email_de_usuario

X-Api-Key

token_de_integracao de sua conta SkyHub

X-Accountmanager-Key

token_account único de cada Plataforma/ERP

Accept

application/json

Content-Type

application/json

Example request:

curl --location --request GET 'https://api.skyhub.com.br/fulfillment/b2w/delivery?from_date=01/05/2023&to_date=31/05/2023' \
--header 'X-User-Email: email_de_usuario' \
--header 'X-Api-Key: token_de_integracao de sua conta SkyHub' \
--header 'X-Accountmanager-Key: token_account único de cada Plataforma/ERP' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json'

Response esperado:

200 [Success] - OK: Em resposta serão apresentadas as entregas Fulfillment:

{
    "deliveries": [
        {
            "cd_vat_number": "776570005909",
            "delivery": "200000000201",
            "status": "Finalizada",
            "order_access_key": "30000000000000000331111110000033333333333330",
            "invoice_sent_at": "01/05/2023 00:00:00",
            "xml_nfes_path": "/fulfillment/b2w/delivery/nfe?cd_vat_number=776570005909&order_access_key=30000000000000000331111110000033333333333330"
        },
        {
            "cd_vat_number": "776570004848",
            "delivery": "200000000202",
            "status": "Cancelada",
            "order_access_key": "32222222222220000333333330000055555555555524",
            "invoice_sent_at": "05/05/2023 00:00:00",
            "xml_nfes_path": "/fulfillment/b2w/delivery/nfe?cd_vat_number=776570004848&order_access_key=32222222222220000333333330000055555555555524"
        },
        {
            "cd_vat_number": "776570004848",
            "delivery": "200000000701",
            "status": "Finalizada",
            "order_access_key": "35555555555550000333333330000077777777777760",
            "invoice_sent_at": "10/05/2023 00:00:00",
            "xml_nfes_path": "/fulfillment/b2w/delivery/nfe?cd_vat_number=776570004848&order_access_key=35555555555550000333333330000077777777777760"
        }
    ],
    (...)
    "total_items": 650,
    "next_page_path": "/fulfillment/b2w/delivery?from_date=01%2F05%2F2022&page=1&to_date=31%2F12%2F2022"
}

Filtros na consulta de entregas

Além do filtro obrigatório de datas (inicial e final), é possível limitar a listagem das entregas retornadas em uma consulta ao aplicar parâmetros às buscas.

A partir de um GET para o endpoint base (/fulfillment/b2w/delivery) e os headers informados acima é possível aplicar filtros por:

Paginação da consulta

Ao se tratar de uma conta com muitas entregas para o serviço Fulfillment pode ser necessário realizar a paginação dos resultados para visualização de todos os registros.

Através do /fulfillment/b2w/delivery é possível utilizar os parâmetros page e per_page para paginação da consulta de entregas Fulfillment, sendo:

KeyValue

page

Indica o número da página de registros que será retornada. Caso não seja especificado, sempre será retornada a primeira página (valor padrão 0)

per_page

Indica a quantidade de registros que serão visualizados na página. O valor padrão é de 100 registros. Caso a conta possua mais de 100 entregas faz-se necessário acessar a(s) próxima(s) página(s) para visualização dos demais registros

https://api.skyhub.com.br/fulfillment/b2w/delivery?from_date=DD/MM/AAAA&to_date=DD/MM/AAAA&page={int}&per_page={int}

Example request:

curl --location --request GET 'https://api.skyhub.com.br/fulfillment/b2w/delivery?from_date=01/05/2023&to_date=31/05/2023&page=0&per_page=2' \
--header 'X-User-Email: email_de_usuario' \
--header 'X-Api-Key: token_de_integracao de sua conta SkyHub' \
--header 'X-Accountmanager-Key: token_account único de cada Plataforma/ERP' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json'

Response esperado:

200 [Success] - OK: Como resposta para a execução do cURL exemplificado acima haverá um body contendo os 2 registros presentes na página 0:

{
    "deliveries": [
        {
            "cd_vat_number": "776570005909",
            "delivery": "200000000201",
            "status": "Finalizada",
            "order_access_key": "30000000000000000331111110000033333333333330",
            "invoice_sent_at": "01/05/2023 00:00:00",
            "xml_nfes_path": "/fulfillment/b2w/delivery/nfe?cd_vat_number=776570005909&order_access_key=30000000000000000331111110000033333333333330"
        },
        {
            "cd_vat_number": "776570004848",
            "delivery": "200000000202",
            "status": "Cancelada",
            "order_access_key": "32222222222220000333333330000055555555555524",
            "invoice_sent_at": "05/05/2023 00:00:00",
            "xml_nfes_path": "/fulfillment/b2w/delivery/nfe?cd_vat_number=776570004848&order_access_key=32222222222220000333333330000055555555555524"
        }
    ],
    "total_items": 650,
    "next_page_path": null
}

Filtro por status

No retorno para a consulta das entregas é possível ver o status do pedido, podendo este se referir a entrega finalizada, cancelada ou em aberto.

Para realizar a listagem de entregas pelo atual status que estas apresentam, basta aplicar o parâmetro status ao GET para o endpoint base (/fulfillment/b2w/delivery):

https://api.skyhub.com.br/fulfillment/b2w/delivery?from_date=DD/MM/AAAA&to_date=DD/MM/AAAA&status={finalizada/cancelada/em aberto}

Example request:

curl --location --request GET 'https://api.skyhub.com.br/fulfillment/b2w/delivery?from_date=01/03/2023&to_date=31/05/2023&status=em aberto' \
--header 'X-User-Email: email_de_usuario' \
--header 'X-Api-Key: token_de_integracao de sua conta SkyHub' \
--header 'X-Accountmanager-Key: token_account único de cada Plataforma/ERP' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json'

Response esperado:

200 [Success] - OK: Para a execução do cURL acima, como resposta haverá um response body contendo as entregas "em aberto":

{
    "deliveries": [
        {
            "cd_vat_number": "776570004848",
            "delivery": "2300000003",
            "status": "Em aberto",
            "order_access_key": null,
            "invoice_sent_at": "19/03/2023 00:00:00",
            "xml_nfes_path": null
        }
    ],
    "total_items": 1,
    "next_page_path": null
}

Filtro de entregas por Centro de Distribuição (CD)

Além da consulta por status, via API é possível realizar a listagem de entregas Fulfillment filtrando pelo CNPJ do Centro de Distribuição (CD).

Para aplicação do filtro, é necessário executar uma requisição contendo o método GET, utilizando os headers padronizados, para o endpoint base /fulfillment/b2w/delivery e aplicando como parâmetro o CNPJ (definido nesta consulta como cd_vat_number) a ser consultado:

https://api.skyhub.com.br/fulfillment/b2w/delivery?from_date=DD/MM/AAAA&to_date=DD/MM/AAAA&cd_vat_number={CNPJ}

Example request:

curl --location --request GET 'https://api.skyhub.com.br/fulfillment/b2w/delivery?from_date=01/05/2023&to_date=31/05/2023&cd_vat_number=776570005909' \
--header 'X-User-Email: email_de_usuario' \
--header 'X-Api-Key: token_de_integracao de sua conta SkyHub' \
--header 'X-Accountmanager-Key: token_account único de cada Plataforma/ERP' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json'

Response esperado:

200 [Success] - OK: A consulta trará como retorno as entregas geradas para o CNPJ selecionado:

{
    "deliveries": [
        {
            "cd_vat_number": "776570005909",
            "delivery": "200000000201",
            "status": "Finalizada",
            "order_access_key": "30000000000000000331111110000033333333333330",
            "invoice_sent_at": "01/05/2023 00:00:00",
            "xml_nfes_path": "/fulfillment/b2w/delivery/nfe?cd_vat_number=776570005909&order_access_key=30000000000000000331111110000033333333333330"
        }
    ],
    "total_items": 1,
    "next_page_path": null
}

Last updated