Primeiros passos
Do certificado à sua primeira cobrança aprovada no sandbox, com cada passo na ordem para você ver o fluxo funcionar de ponta a ponta.
Neste guia usamos o sandbox (https://api.sandbox.payzu.io/v1). Em produção a base URL é https://api.payzu.io/v1.
Pré-requisitos
Antes da primeira chamada você precisa de dois itens, ambos fornecidos pela equipe PayZu:
- Certificado mTLS de cliente (
cliente.crt,cliente.keyeca.pem). Instale o certificado e configure seu sistema para utilizá-lo em todas as chamadas à API, sempre por HTTPS. Detalhes em Autenticação. - Credenciais
client_ideclient_secret, usadas para obter o token de acesso.
Obter o token
Chame POST /token usando Basic Auth com client_id e client_secret, junto do certificado mTLS, e use o access_token retornado como Bearer token nas próximas chamadas. Para o exemplo completo de requisição e resposta, veja Autenticação.
Criar a primeira cobrança
Crie uma cobrança via POST /charges. Os campos obrigatórios são amount, customer, paymentType, cart, creditCardPayment e externalId. Schema completo na referência.
curl --request POST \
--url https://api.sandbox.payzu.io/v1/charges \
--header "Authorization: Bearer SEU_ACCESS_TOKEN" \
--header 'Content-Type: application/json' \
--cert cliente.crt \
--key cliente.key \
--cacert ca.pem \
--data '{
"amount": 10000,
"externalId": "pedido-2026-0001",
"paymentType": "creditcard",
"customer": {
"name": "João da Silva"
},
"cart": [
{
"name": "Plano mensal",
"quantity": 1,
"sku": "PLANO-01",
"unitPrice": 10000
}
],
"creditCardPayment": {
"installments": 1,
"authenticate": false,
"card": {
"number": "4111111111111111",
"holder": "JOAO DA SILVA",
"expiration": "12/2030",
"cvv": "123"
}
}
}'Em produção, troque a base URL para https://api.payzu.io/v1.
Valores monetários (amount, unitPrice) são sempre em centavos. 10000 equivale a R$ 100,00.
Com authenticate: false o comprador não é direcionado ao emissor para autenticação. Para fluxos autenticados, veja 3D Secure.
Ler a resposta
A resposta traz o id da cobrança, o externalId informado e o objeto creditCardPayment com status, reasonCode e reasonMessage. Os principais status:
| Código | Status | Significado |
|---|---|---|
| 1 | Authorized | Aprovado pelo emissor, apto a ser capturado, mas ainda não concluído. |
| 2 | PaymentConfirmed | Pagamento confirmado e finalizado. |
| 3 | Denied | Pagamento negado por autorizador. |
Se creditCardPayment.status retornou 2 (PaymentConfirmed), sua primeira cobrança está confirmada. A lista completa de códigos está em Status da transação.
Testar cenários e configurar webhooks
Para simular aprovações, negativas e time out no sandbox, use os cartões de teste: os últimos dígitos do número do cartão determinam o resultado da transação.
Para receber notificações sobre o status da cobrança sem precisar consultar a API, informe uma postbackUrl na criação da cobrança. Estrutura do payload e validação em Webhooks.
Próximos passos
Cartão de Crédito
Uma integração para cobrar no cartão do seu cliente e dar conta do ciclo inteiro: autorização e captura na hora, parcelamento, 3D Secure, antifraude, recorrência e estorno.
Autenticação
A API usa duas camadas que trabalham juntas: um certificado de cliente (mTLS) que garante quem está de cada lado e um token que você gera e envia em toda chamada.