A BitPay ainda não está em produção: aguardamos a certificação da EMIS. Podes criar conta e testar tudo em sandbox — avisamos-te quando os pagamentos reais abrirem.

BitPay
Sandbox NO AR — cria a tua conta em segundos

Integra pagamentos angolanos
com algumas linhas de código.

Uma API para todos os rails: Referências Multicaixa, Multicaixa Express e Débitos Directos. Channel-agnostic — o mesmo /v1 serve o teu site, a tua app e os teus sistemas.

primeiro-pagamento.sh
1# 1. Conta sandbox imediata (sem registo, sem emails)
2curl -X POST https://api-sandbox.bitpay.ao/v1/sandbox/accounts \
3 -H "Content-Type: application/json" \
4 -d '{"name":"A Minha Empresa"}'
5# → { "sk": "sk_test_…", "pk": "pk_test_…" }
6export BITPAY_SK=sk_test_... # cola aqui o "sk"
7
8# 2. Primeiro pagamento (923000000 aprova em ~5s)
9curl -X POST https://api-sandbox.bitpay.ao/v1/payment_intents \
10 -H "Authorization: Bearer $BITPAY_SK" \
11 -H "Content-Type: application/json" \
12 -H "Idempotency-Key: pedido-001" \
13 -d '{"amount":25000,"currency":"AOA",
14 "payment_method":"multicaixa_express",
15 "customer":{"mobile":"923000000"}}'
16# → { "id": "pay_…", "status": "PENDING" } … e o webhook confirma

Do zero à produção

01

Cria a conta

Em dashboard.bitpay.ao (recomendado) ou com um só pedido à API.

02

Recebe as chaves sandbox

pk_test e sk_test imediatas — sem esperar por aprovações.

03

Faz o primeiro pagamento

Testa qualquer método com os cenários determinísticos do sandbox.

04

Pede produção

KYC, contrato e banco/PSP validados — recebes as chaves live.

API Explorer

Não acredites na nossa palavra — testa. Cria uma conta sandbox e dispara um pagamento real de teste sem sair desta página.

Experimenta agora — API real, sem sair da página

Dois cliques: conta sandbox e um pagamento de teste. A resposta é do servidor, não é uma simulação de ecrã.

PASSO 1

Cria uma conta sandbox

PASSO 2

Dispara um pagamento de teste

Primeiro cria a conta no passo 1.

Uma API, todos os rails

REST/JSON com especificação OpenAPI pública, Idempotency-Key obrigatório em operações financeiras e erros padronizados.

POST/v1/payment_intentsCriar intenção de pagamento
GET/v1/payment_intents/{id}Consultar estado
POST/v1/refundsSolicitar reembolso
POST/v1/payment_linksCriar Pay by Link
POST/v1/checkout/sessionsCriar sessão de checkout
POST/v1/qr_codesGerar QR de pagamento
POST/v1/webhook_endpointsRegistar endpoint de webhooks
GET/v1/eventsConsultar eventos
POST/v1/mandatesRegistar mandato de débito directobrevemente (P3)
POST/v1/debit_instructionsEmitir débito sob mandatobrevemente (P3)

Sandbox determinístico

Já está no ar: números de teste que produzem sempre o mesmo resultado — o caminho feliz e todos os caminhos difíceis. Base URL: https://api-sandbox.bitpay.ao/v1

923 000 000Pagamento aprovado
923 000 001Rejeitado pelo cliente
923 000 002Timeout → estado UNKNOWN / reconciliação
923 000 003Saldo insuficiente
923 000 004Operador indisponível

Webhooks assinados

Entrega at-least-once com retries (10s, 60s, 5min). Deduplica pelo BitPay-Event-Id, verifica a assinatura HMAC e entrega a encomenda no payment.succeeded.

BitPay-Signature: t=1766066400,v1=hex(hmac_sha256(whsec, t + "." + corpo))

payment.createdpayment.succeededpayment.failedpayment.unknownpayment.reconciledpayment.expiredpayment.cancelledreference.paidrefund.succeededcheckout.session.completedtest.ping

SDKs e plugins

Zero dependências, já apontados para o sandbox, com verificação de webhooks incluída. Ainda não estão no npm/Composer/PyPI — descarrega o .zip; o README traz um quickstart que corre tal como está.

BitPay for WooCommerce

beta · sandbox

Instala, cola a secret key e grava — o webhook configura-se sozinho e a loja aceita Multicaixa em minutos. Testado contra o sandbox.

Descarregar v0.1.1 (.zip)

Integração com assistente de IA

O teu assistente integra por ti.

Usas Claude, Cursor ou Copilot? Aponta-o para o llms.txt (guia compacto para modelos) e para a especificação OpenAPI — ele cria a conta sandbox, escreve o código e testa os cenários sozinho.

prompt.txt
1Integra o gateway BitPay (Angola) no meu projeto.
2Lê https://developers.bitpay.ao/llms.txt
3e https://developers.bitpay.ao/openapi.yaml.
4- Sandbox: https://api-sandbox.bitpay.ao/v1
5- Secret key só no servidor (BITPAY_SK).
6- Idempotency-Key = id da encomenda.
7- Confirma SÓ no webhook payment.succeeded,
8 com assinatura verificada e dedupe.
9- Testa 923000000, 923000001 e 923000002.

Erros previsíveis, sempre

Todos os erros seguem o mesmo formato, com código estável, mensagem clara e request_id para diagnóstico. Operador indisponível não é erro HTTP: o pagamento fica FAILED com failure_code provider_unavailable.

400invalid_requestPayload ou parâmetros inválidos
400invalid_jsonO corpo não é JSON válido
400invalid_phone_numberNúmero Multicaixa Express em falta ou mal formado
400amount_out_of_rangeMontante fora do mínimo/máximo do método
401authentication_failedChave de API inválida ou expirada
404resource_not_foundObjeto inexistente ou fora da tua conta
409idempotency_conflictMesma Idempotency-Key com payload diferente
409payment_already_processedOperação incompatível com o estado atual
429rate_limit_exceededLimite de pedidos excedido (120/min) — respeita o Retry-After
500internal_errorErro do nosso lado — repete com a mesma Idempotency-Key

Constrói connosco desde o primeiro dia.

O sandbox está aberto — cria a conta por API e faz o primeiro pagamento em minutos. Para produção, fala connosco.

Developers — BitPay