Uma API que a sua equipa vai gostar de usar
REST previsível, chaves de idempotência, webhooks assinados e uma sandbox com redes simuladas, para integrar de ponta a ponta antes de mover um único franco.
A sua primeira cobrança num único pedido
REST limpo, um envelope JSON previsível e um ID de pedido em cada resposta. A sandbox espelha a produção: mesma API, mesmos estados, mesmos webhooks.
- Chaves de sandbox e de produção, com âmbito por aplicação
- Webhooks assinados com HMAC e proteção contra replay
- Chaves de idempotência em todas as chamadas que movem dinheiro
- Erros tipados que lhe dizem exatamente o que corrigir
- Especificacao OpenAPI, colecao Postman e llms.txt, todos publicados
- Sessões de checkout alojadas e callbacks planos para conectores CRM, ERP e de lojas
curl https://api.capayglobal.com/v1/collections \
-H "Authorization: Bearer sk_test_..." \
-H "Idempotency-Key: 9f1c-collect-01" \
-H "Content-Type: application/json" \
-d '{
"amount": "2500",
"currency": "XAF",
"country": "CM",
"method": "mobile_money",
"msisdn": "2376XXXXXXXX",
"merchant_reference": "order-1042"
}'{
"status": "success",
"data": {
"id": "col_9xKQ2mD41Vb8",
"object": "collection",
"status": "pending",
"amount": "2500",
"currency": "XAF",
"country": "CM",
"method": "mobile_money",
"merchant_reference": "order-1042",
"fees": {
"platform_fee": "50",
"provider_fee": "0",
"total_fee": "50",
"bearer": "merchant"
},
"net_amount": null,
"livemode": false,
"created_at": "2026-08-30T12:04:11Z"
},
"request_id": "req_b0f3d2c1"
}A sua primeira cobranca
Um pedido cria uma intencao de pagamento, devolve um identificador de pedido e, no dinheiro movel, envia o aviso para o telemovel do pagador. O ambiente de testes comporta-se exatamente como producao.
curl -X POST https://api.capayglobal.com/v1/collections \
-H "Authorization: Bearer sk_test_XXXXXXXXXXXX" \
-H "Idempotency-Key: col-order-10482-a1b2c3" \
-H "Content-Type: application/json" \
-d '{
"amount": "5000",
"currency": "XAF",
"country": "CM",
"method": "mobile_money",
"msisdn": "+237650000001",
"merchant_reference": "order-10482"
}'{
"status": "success",
"data": {
"id": "col_7Qm3k1Xa9Zr4",
"object": "collection",
"status": "pending",
"amount": "5000",
"currency": "XAF",
"auth_model": "STK_PROMPT",
"livemode": false
},
"request_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}SDK de servidor
Camadas finas e tipadas sobre a mesma API REST, com idempotencia e verificacao de assinatura ja incluidas.
import { Capay } from '@capay/sdk';Ainda não está no npm. A linha de import acima é definitiva, por isso a sua integração não muda quando for publicado.
Ler o guiafrom capay import CapayAinda não está no PyPI. A linha de import acima é definitiva, por isso a sua integração não muda quando for publicado.
Ler o guiause Capay\CapayClient;Ainda não está no Packagist. A linha de import acima é definitiva, por isso a sua integração não muda quando for publicado.
Ler o guiaVerifique cada webhook
As assinaturas sao calculadas sobre o corpo cru e comparadas em tempo constante, e uma marca temporal mais antiga que 300 segundos e rejeitada. Nunca confie num webhook que nao verificou.
# T is the t= value from X-Capay-Signature; delivery.json is the raw body as received.
T=1767225600
SECRET=whsec_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
{ printf '%s.' "$T"; cat delivery.json; } \
| openssl dgst -sha256 -hmac "$SECRET" -r | cut -d' ' -f1
# Compare the printed hex with each v1= value in the header (either may match
# during a secret rotation), and reject the delivery if |now - T| > 300 s.X-Capay-Signature: t=1767225600,v1=6f8b4c2d9e0a1b3c5d7e9f0a2b4c6d8e0f1a3b5c7d9e1f0a2b4c6d8e0f1a3b5c
X-Capay-Event-Id: evt_2n4Kq8Zr41Xa
X-Capay-Event-Type: collection.completedUma entrega falhada e repetida num calendario fixo: 1m, 5m, 30m, 2h, 6h, 12h, 24h, 24h. Um endpoint que falha 8 vezes seguidas e desativado e voce e avisado, para que um endpoint morto nunca engula eventos em silencio.
Dois segredos de assinatura podem estar ativos ao mesmo tempo, por isso pode roda-los sem perder um evento. Rejeite tudo o que fique fora da janela de 300 segundos e guarde o identificador do evento para que as repeticoes sejam inofensivas.
O resto do kit
Especificacoes legiveis por maquina, uma colecao que pode importar e as ferramentas que as leem.
Explore a plataforma
Comece hoje a receber pagamentos em toda a África
Crie uma conta gratuita, desenvolva na sandbox e entre em produção após a verificação.
Fale-nos dos seus corredores e volumes a qualquer momento.