Como funciona
1
O vendedor habilita a integração na sua plataforma
Na tela de integrações da plataforma, o vendedor informa a chave de API
da Spedy da empresa dele. A chave fica no painel da Spedy, em menu do
perfil do usuário → Minha empresa → Credenciais de API.
2
A plataforma envia cada venda
A cada pedido, a plataforma cria a venda com
POST /v1/orders, usando a
chave do vendedor no header X-Api-Key.3
A plataforma atualiza o status da venda
A cada evento de pagamento (aprovação, recusa, reembolso, chargeback), a
plataforma atualiza a venda com
PUT /v1/orders/{id}/status.4
A Spedy emite e cancela as notas
Conforme o
autoIssueMode e o status da venda, a Spedy emite a nota no
momento certo — e cancela as notas autorizadas quando a venda é
reembolsada, sofre chargeback ou é cancelada.Sandbox e produção
A Spedy tem dois ambientes, com contas e chaves separadas:- Desenvolva e homologue no sandbox. Crie uma conta no ambiente de testes e use a chave dela para percorrer todo o fluxo deste guia.
- Em produção, use
https://api.spedy.com.br/v1. Deixe a base URL em configuração, nunca fixa no código: uma chave de produção enviada ao sandbox (ou o contrário) recebe401. - Não ofereça o sandbox aos seus clientes. A integração que o vendedor habilita deve apontar sempre para produção.
Os exemplos deste guia usam o sandbox. Ao levar a integração para
produção, troque
https://sandbox-api.spedy.com.br por
https://api.spedy.com.br.Habilitando a integração
A chave de API identifica uma empresa (CNPJ) e só opera em nome dela. Na sua tela de integração, guarde a chave por conta (ou loja) do vendedor. Se o vendedor vende por mais de um CNPJ, ele precisa informar a chave de cada empresa. Algumas recomendações para a tela de integração:- Valide a chave ao salvar. Uma chamada simples, como
GET /v1/orders?transactionId=teste, devolve401quando a chave é inválida. - Guarde a chave como segredo. Ela permite emitir e cancelar notas em nome do vendedor — trate-a como uma senha.
- Valide contra produção. A chave do vendedor é de produção: valide-a em
https://api.spedy.com.br. Veja Sandbox e produção.
A tributação da nota (códigos de serviço, NCM, CFOP, alíquotas e retenções)
não é enviada pela plataforma. O vendedor configura isso no painel da
Spedy, por produto e por empresa. Veja Configuração
inicial.
Criando a venda
Crie a venda comPOST /v1/orders. O exemplo abaixo é um pedido de um curso
pago por Pix, ainda aguardando o pagamento:
cURL (sandbox)
id da venda na Spedy. Guarde esse id junto do pedido
na sua plataforma: ele é usado em todas as atualizações seguintes.
Os campos que mais importam para uma plataforma:
A referência completa dos campos está em Criar
Venda.
Envie a venda assim que o pedido existir
Recomendamos criar a venda assim que o pedido é gerado — inclusive Pix e boleto ainda não pagos, comstatus: "awaitingPayment" — e depois só
atualizar o status. Assim a venda na Spedy acompanha a vida do pedido, e o
vendedor vê no painel também as vendas recusadas e expiradas.
Se a sua plataforma preferir enviar apenas pedidos pagos, crie a venda já com
status: "approved". Nesse caso, o restante do fluxo (reembolso, chargeback,
cancelamento) continua igual.
Mapeando os eventos da plataforma
Cada mudança no pedido vira uma atualização de status da venda:cURL (sandbox)
Os status
refused e expired não cancelam notas. Com
autoIssueMode: "immediately", a nota é emitida na criação da venda e
continua válida mesmo que o pagamento seja recusado ou expire.
A Spedy conclui a venda
Quando a nota é autorizada, a Spedy muda a venda paracompleted
automaticamente. A sua plataforma não precisa enviar completed. Depois
disso, a venda só aceita os status de reembolso, chargeback e cancelamento.
Regras da mudança de status
A Spedy recusa algumas mudanças de status. Trate essas respostas de erro sem retentar:- Mesmo status: enviar o status que a venda já tem retorna
A venda já está com status desejado.Pode ser tratado como sucesso (por exemplo, quando a sua plataforma reenvia um evento). completedsem nota autorizada: não é permitido. Para “pagamento aprovado”, use sempreapproved.- Voltar para
awaitingPaymentouapproveddepois da nota autorizada: não é permitido. Umapprovedque chegue atrasado, depois que a Spedy já concluiu a venda, é recusado — trate como sucesso.
A nota fiscal dessa venda está em processamento. é temporário: a
nota está sendo transmitida ao fisco. Aguarde alguns segundos e reenvie a
mesma atualização.
Corrigindo dados da venda
Para corrigir dados da venda antes da emissão (por exemplo, o endereço do comprador), usePUT /v1/orders/{id}. Notas já autorizadas não são alteradas
por essa chamada.
Para mudar só o status, use sempre PUT /v1/orders/{id}/status.
Quando a nota é emitida
O campoautoIssueMode, enviado na criação da venda, define em que momento a
Spedy emite a nota:
O ideal é deixar o vendedor escolher o modo de emissão na tela de integração
da sua plataforma (por exemplo: “Emitir após o pagamento” ou “Emitir após a
garantia”) e enviar a escolha em cada venda.
Emissão após a garantia
ComautoIssueMode: "afterWarrency", a nota só é emitida depois que o prazo
de reembolso termina. Isso evita emitir e depois ter de cancelar a nota de uma
venda que foi reembolsada durante a garantia.
Informe em warrantyDate o último dia da garantia. Por exemplo, para uma
garantia de 7 dias de uma venda aprovada em 05/11:
- A venda fica aprovada, sem nota, até o fim da garantia (12/11).
- No dia seguinte (13/11), a Spedy emite a nota, com data de competência 13/11.
- Se, até lá, a venda mudar para
refundRequested,refunded,chargebackou for cancelada, a nota não é emitida. Se o reembolso for negado e a venda voltar paraapproved, a emissão segue para o dia seguinte ao fim da garantia.
A emissão após a garantia depende do
warrantyDate. Sem ele, a nota da venda
aprovada é emitida imediatamente, como no afterPayment.Emissão manual e vendas de meses anteriores
A emissão automática acontece dentro do mês de competência da nota. Se a venda chegar à Spedy depois da virada do mês (por exemplo, um pedido aprovado em 31/10 enviado em 02/11), a nota não é emitida automaticamente — o vendedor emite pelo painel, ou a plataforma dispara a emissão informando a data de competência:cURL (sandbox)
effectiveDate, a nota usa a data original da venda. A mesma chamada
serve para vendas com autoIssueMode: "disabled".
Acompanhando a nota
A plataforma não precisa acompanhar a nota para a integração funcionar. Se quiser exibir a nota dentro da plataforma (por exemplo, o link do PDF na página do pedido), há dois caminhos:- Consulta:
GET /v1/orders/{id}traz as notas da venda no campoinvoices. - Webhook: o evento
invoice.status_changedenvia a nota emdata. Veja Webhooks: visão geral.
Ligando a nota ao pedido
Toda nota gerada a partir de uma venda traz o objetoorder, com os dados
da venda de origem. Ele vem em data.order no payload do webhook e em order
no GET da nota:
Use
data.order.id (ou data.order.transactionId) para localizar o pedido na
sua plataforma. O transactionId é único por empresa: se o vendedor tiver
mais de um CNPJ na mesma conta, combine-o com data.company para identificar
a empresa.
Boas práticas
- Um pedido, uma venda. Use sempre o mesmo
transactionIdpara o mesmo pedido. - Respeite a ordem dos eventos. Atualize o status na ordem em que os eventos acontecem na sua plataforma, e só depois que a venda tiver sido criada.
- Trate erros de validação como definitivos. Respostas
4xxcom mensagem de validação não mudam com retentativa — registre e, se for o caso, mostre ao vendedor. Retente apenas falhas de rede,429e5xx. Veja Erros e respostas e Rate limit. - Envie os dados do comprador. CPF/CNPJ, e-mail e endereço completos evitam rejeições, principalmente em NF-e e em municípios que exigem endereço do tomador.
- Teste em sandbox. Crie uma conta no ambiente de testes e percorra todos os eventos da tabela acima antes de liberar a integração aos seus clientes.