Valores em centavos
Todos os valores monetários são inteiros, em centavos. Nunca use casas decimais.
A moeda é informada no campo
currency (código ISO 4217). Hoje o único valor aceito é
BRL, que também é o padrão quando você omite o campo — enviar qualquer outro código resulta em
erro de validação.
Datas
Toda data trafega em ISO 8601 com timezone (offset):Escopo da conta
Sua chave de API só enxerga os recursos da sua conta. As listagens já vêm filtradas — não existe parâmetro para “ver de outra conta”, e buscar pelo ID de um recurso que não é seu responde404, o
mesmo que um ID inexistente. Você não precisa passar nenhum identificador de conta em lugar nenhum:
ele vem da chave.
Identificadores
Cada recurso tem um ID com prefixo legível, que diz de que tipo ele é:txn_ebgsvfsb4151nmbgvj4sek6ol
é uma transação, pay_ um pagamento, cust_ um cliente. A página de cada recurso mostra o prefixo
dele.
O prefixo serve para você reconhecer o que está lendo em log ou payload — não para parsing. Trate
o ID como string opaca: não dependa do tamanho, do conjunto de caracteres, nem monte um ID a partir
do prefixo. Guarde-o inteiro, do jeito que veio.
Use o referenceCode para amarrar uma transação ao seu identificador interno (ex.: número do
pedido). Recomendamos usar um valor único por pedido, mas a Z2Pay não valida unicidade do
referenceCode — para evitar transações duplicadas em retries, use o header Idempotency-Key
(veja Idempotência). Na listagem, o filtro ?referenceCode= faz match
exato — envie o código completo, como foi cadastrado.
Paginação
Endpoints de listagem aceitampage e limit por query string:
Idempotência
Operações de escrita sensíveis (criar transação, estornar, etc.) aceitam o headerIdempotency-Key — um valor único que você gera por operação. Se a mesma requisição for
reenviada com a mesma chave (ex.: timeout + retry), a Z2Pay não duplica a operação e retorna o
mesmo resultado.
- TTL da chave: 7 dias no
POST /transactions; 24 horas nos demais endpoints idempotentes. Use um valor estável e único por intenção de operação (ex.: o ID do pedido no seu sistema). - Mesma chave + corpo diferente →
422(Idempotency key already used with a different request body). - Requisições concorrentes com a mesma chave → a API aguarda a primeira terminar por até
5 segundos; se não terminar, responde
409. - Replays (respostas repetidas da mesma chave) vêm com o header
Idempotency-Replayed: true. - Apenas respostas
2xxsão memorizadas. Se a requisição original falhar (4xx/5xx), a chave é liberada e pode ser reutilizada no retry.
Nos erros de idempotência acima (
422/409), error vem como texto, não como objeto:
{ "error": "Idempotency key already used with a different request body" }. Não há error.code
nem error.message — trate pelo status HTTP. Veja Erros.