Pagamentos
Enviar fundos do seu saldo para uma carteira móvel ou uma conta bancária.
Criar um pagamento
POST /v1/payouts
Passe um Idempotency-Key — conta ainda mais do que na cobrança: um pagamento reenviado sem
idempotência pagaria duas vezes.
| Campo | Obrigatório | Descrição |
|---|---|---|
asset_id |
sim | O activo, pelo seu identificador |
amount_minor |
sim | Cadeia, em unidades menores |
country |
sim | País da operação (ISO 3166-1 alfa-2) |
platform_id |
sim | A plataforma de pagamento (GET /v1/corridors) |
recipient |
sim | O destinatário — ver abaixo |
platform_account_handle |
— | A subconta debitada. Vazio = a primária do corredor |
rail |
— | Força um rail preciso |
client_ref |
— | A sua referência |
description |
— | Texto livre |
O destinatário é tipado
"recipient": {
"name": "Mouhamadou Sy",
"identifier_type": "msisdn",
"identifier": "+221771234567"
}
identifier_type diz que espécie de endereço detém (msisdn, iban, um alias…) e identifier
transporta-o. É o que permite a uma plataforma com vários rails resolver sem que tenha de nomear
nenhum.
phone sozinho continua plenamente aceite e lê-se como (msisdn, phone). Fornecer as duas formas,
ou um tipo sem valor, é recusado — nunca adivinhado.
O saldo primeiro
Um pagamento é debitado no seu saldo disponível:
GET /v1/balances
Os saldos são devolvidos por activo e por (plataforma, país), com o disponível, o pendente e o reservado. O reservado cobre as saídas já comprometidas: não é gastável.
Os saldos nunca se somam entre activos. Não existe conversão de moeda nesta plataforma, pelo que um total de todos os activos não faria sentido.
Um pagamento que ultrapassasse o disponível é recusado de imediato, na própria resposta: 422 com o
código insufficient_funds. Nunca fica à espera de fundos — não existe descoberto.
Pedir um levantamento do seu saldo
POST /v1/payout-requests
GET /v1/payout-requests
GET /v1/payout-requests/{id}
É um pedido, não um pagamento. Nenhum dinheiro se move e nada é reservado: a operação abre no estado
requestede uma pessoa decide-a no painel. É a separação maker-checker — a chave de API pede, um proprietário da conta decide. Não existe deliberadamente qualquer anulação: um pedido pendente não retém nada, por isso é recusado do lado de quem decide.
O montante é BRUTO: as comissões de levantamento são deduzidas dele, não acrescentadas. Sem uma
tabela de comissões configurada para o activo, o pedido é recusado com 409 — um levantamento
gratuito é uma linha a zero escrita de propósito, nunca uma ausência.
Acompanhamento
payout.success, payout.failed e payout.cancelled chegam por webhook;
GET /v1/payouts/{id} dá o estado a pedido.