Enviar Pix via chave
POST /v1/payouts — cria pagamento Pix usando chave.
Envia Pix via chave
Cria um pagamento Pix usando chave. O response já traz o desfecho da criação em kind: submitted (aceito, status PROCESSING), rejected (recusado, valor devolvido ao saldo) ou submitted_unknown (indeterminado; a plataforma resolve sozinha). O endToEndId definitivo só é emitido após a confirmação do provider e chega via webhook pix.payout.succeeded.
Para monitorar o pagamento até a liquidação, registre um webhook em pix.payout.succeeded / pix.payout.failed / pix.payout.cancelled / pix.payout.refunded. Como alternativa, faça polling em GET /v1/payouts/:id (mas webhooks são preferíveis). Em submitted_unknown (HTTP 200, status SUBMITTED_UNKNOWN) o provedor não respondeu a tempo e o desfecho ainda é desconhecido: o valor fica reservado (debitado) e a plataforma resolve sozinha. NÃO reenvie com outra Idempotency-Key — risco de pagar duas vezes. Reenviar com a MESMA Idempotency-Key devolve esta mesma resposta (Idempotency-Replay: true). Acompanhe via GET /v1/payouts/:id até o status virar SUCCEEDED ou FAILED, ou aguarde pix.payout.succeeded / pix.payout.failed. Em rejected (HTTP 422) o valor já voltou ao saldo; leia reason. Trate o desfecho pelo campo kind/status do corpo, não pelo código HTTP.
Headers
- AuthorizationObrigatóriostringBearer SUA_API_KEY
- Idempotency-KeyObrigatóriostringUUID para retry seguro — obrigatório.
- Content-TypeObrigatóriostringapplication/json
Body
- pixKeyObrigatóriostringChave Pix do destinatário.
- pixKeyTypeObrigatório"EMAIL" | "PHONE" | "CPF" | "CNPJ" | "EVP"Tipo da chave.
- amountCentsObrigatóriostringValor a transferir em centavos.
- dictLookupIdstringID retornado por POST /v1/dict/lookup. Recomendado para auditoria do destinatário.
- descriptionstringDescrição livre exibida no extrato e no metadata do movimento.
- externalRefstring (≤ 64)Referência externa do seu sistema (ex.: ID do pedido, do lote, da fatura). Até 64 caracteres. Permite consultar o payout e seu movimento depois via GET /v1/payouts/external-ref/:reference (e /movement).
Exemplo de requisição
curl -X POST https://api.staterpay.io/v1/payouts \ -H "Authorization: Bearer SUA_API_KEY" \ -H "Idempotency-Key: 438e4e8d-3f81-4579-a2e4-3f55b5993413" \ -H "Content-Type: application/json" \ -d '{ "pixKey": "fulano@example.com", "pixKeyType": "EMAIL", "amountCents": "1500", "dictLookupId": "cmoxample0001qkxyzdictentry", "description": "Pagamento pedido #123", "externalRef": "pedido-2026-0001" }'Resposta
- kind"submitted" | "rejected" | "submitted_unknown"Desfecho da criação. submitted → HTTP 200 (aceito pelo provedor, status PROCESSING); rejected → HTTP 422 (recusado pelo provedor; o valor já voltou ao saldo); submitted_unknown → HTTP 200 (indeterminado: o provedor não respondeu a tempo; o valor fica reservado e a plataforma resolve sozinha).
- payoutIdstringIdentificador interno do pagamento (cuid).
- status"PROCESSING" | "SUBMITTED_UNKNOWN" | "FAILED"Estado correspondente ao kind: PROCESSING em submitted, SUBMITTED_UNKNOWN em submitted_unknown, FAILED em rejected.
- endToEndIdstring | nullSempre null na criação; preenchido após liquidação. Presente quando submitted.
- providerTransactionIdstringID da transação no provider Pix subjacente. Presente quando submitted.
- reasonstringMotivo da recusa ou da indeterminação. Presente quando rejected ou submitted_unknown.
- providerStatusCodenumberStatus HTTP retornado pelo provedor. Presente quando rejected.
{ "kind": "submitted", "payoutId": "cmoxample0001qkxyzpayout", "status": "PROCESSING", "endToEndId": null, "providerTransactionId": "00000000"}https://api.staterpay.io