Pular para o conteúdo

Criar cobranças em lote

Quando você precisa gerar várias cobranças de uma só vez — por exemplo, mensalidades de um grupo de clientes ou cobranças recorrentes do mês — utilize o endpoint de criação em lote.

Em uma única requisição é possível enviar até 50 clientes, cada um com seu próprio valor e dados. A Az.pague gera uma cobrança (link de pagamento) individual para cada um deles.

Endpoint
POST /api/v1/payment-link-bulk

O processamento do lote é assíncrono: a requisição retorna imediatamente com o token do lote e o status inicial. Você pode acompanhar o progresso pelo endpoint de status.

Exemplo de criação em lote
curl --request POST \
--url https://sandbox.azpag.dev/api/v1/payment-link-bulk \
--header 'Authorization: Bearer {token}' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{
"name": "Cobranças Maio/2025",
"title": "Mensalidade",
"description": "Mensalidade do plano Premium",
"enable_pix": true,
"enable_credit": true,
"installments": 3,
"fee_mode": "customer_pay_fee",
"expired_at": "2025-06-30",
"expire_after_payment": true,
"customers": [
{
"name": "Maria Souza",
"email": "maria@exemplo.com",
"phone": "51999990000",
"document": "12345678901",
"amount": 99.90,
"reference": "INV-2025-05-001"
},
{
"name": "João Lima",
"email": "joao@exemplo.com",
"phone": "51988887777",
"document": "09876543210",
"amount": 149.90,
"reference": "INV-2025-05-002"
}
]
}'

Os atributos abaixo são aplicados a todas as cobranças geradas no lote, exceto quando sobrescritos individualmente pelo cliente.

AtributoTipoObrigatórioDescrição
nameTextoNãoNome interno do lote, utilizado para identificação no painel. Limite de 150 caracteres.
titleTextoNãoTítulo padrão exibido na página de cobrança.
descriptionTextoNãoTexto auxiliar padrão das cobranças. Limite de 1000 caracteres.
amountDecimalNãoValor padrão da cobrança. Caso omitido, é obrigatório informar o valor em cada cliente.
additional_amountDecimalNãoValor adicional opcional somado a cada cobrança.
bg_colorTextoNãoCor de fundo da página em formato hexadecimal.
show_company_logoBooleanNãoExibe o logo da empresa na página de cobrança.
expired_atDataNãoData de expiração padrão no formato YYYY-MM-DD.
expire_after_paymentBooleanNãoInvalida a cobrança após o primeiro pagamento confirmado.
enable_pixBooleanNãoHabilita o Pix em todas as cobranças.
enable_creditBooleanNãoHabilita o cartão de crédito.
enable_bank_slipBooleanNãoHabilita o boleto bancário.
installmentsInteiroNãoNúmero máximo de parcelas no cartão (1 a 12).
fee_modeTextoNãoDefine o modo de juros aplicado às cobranças: none, interest ou customer_pay_fee.
hide_customer_fieldsBooleanNãoOculta os campos de dados do cliente na página de cobrança.
payment_link_rule_tokenTextoNãoToken da régua de cobrança aplicada a todas as cobranças do lote.
customersArraySimLista de clientes que receberão uma cobrança. Mínimo de 1 e máximo de 50 clientes por requisição.

Campo único na API. Use fee_mode para definir como as taxas serão aplicadas na cobrança.

fee_modeenable_feecustomer_pay_feecash_discountSignificado
nonefalsefalsefalseEmpresa absorve todas as taxas
interesttruefalsetrueJuros incidem na parcela; à vista com desconto
customer_pay_feetruetruetrueRepasse das taxas ao comprador
AtributoTipoObrigatórioDescrição
amountDecimalSimValor cobrado desse cliente. Ex: 99.90
titleTextoNãoSobrescreve o título do lote para esse cliente específico.
descriptionTextoNãoSobrescreve a descrição do lote.
nameTextoNãoNome do cliente.
emailTextoNãoE-mail do cliente.
phoneTextoNãoTelefone do cliente, com DDD.
documentTextoNãoCPF ou CNPJ do cliente, sem formatação.
cepTextoNãoCEP do cliente. O sistema carrega automaticamente o endereço com base nos dados atualizados dos Correios. Se o CEP informado for inválido ou incorreto, o cliente deverá preencher o campo manualmente no momento do pagamento.
numberTextoNãoNúmero do endereço. Caso não informado, o cliente deverá preencher o campo no momento do pagamento.
referenceTextoNãoReferência externa para identificar essa cobrança na sua aplicação.
{
"data": {
"token": "bulk_3kd0192",
"name": "Cobranças Maio/2025",
"status": "pending",
"total": 2,
"processed": 0,
"percent": 0.00,
"created_at": "2025-05-30 10:00:00",
"updated_at": "2025-05-30 10:00:00"
}
}

Após criar o lote, você pode acompanhar o processamento consultando:

Endpoint
GET /api/v1/payment-link-bulk/{token}/status

A resposta retorna o total de links a serem gerados, quantos já foram processados e o percentual concluído:

Exemplo de resposta de status
{
"data": {
"token": "bulk_3kd0192",
"status": "processing",
"total": 50,
"processed": 32,
"percent": 64.00
}
}
StatusDescrição
pendingLote criado, aguardando início do processamento.
processingGeração dos links em andamento.
completedTodas as cobranças foram geradas com sucesso.
partial_failureLote finalizado, mas algum cliente falhou na geração.
canceledLote interrompido pelo cancelamento manual.

Recomendamos consultar o status em intervalos de 5 a 10 segundos e parar quando receber um status final (completed, partial_failure ou canceled).

Para obter a lista completa de cobranças geradas pelo lote, com a URL pública de cada uma:

Endpoint
GET /api/v1/payment-link-bulk/{token}

A resposta inclui o array payment_links com cada cobrança gerada, no mesmo formato retornado pelo endpoint de criação avulsa.

Caso esteja construindo a lista em partes, é possível adicionar novos clientes a um lote existente:

Endpoint
POST /api/v1/payment-link-bulk/{token}/customers

A requisição aceita o mesmo array customers da criação, com o mesmo limite de 50 clientes por requisição.

Para interromper um lote em processamento:

Endpoint
POST /api/v1/payment-link-bulk/{token}/cancel

As cobranças que ainda não foram geradas deixam de ser processadas. Cobranças já geradas e ainda não pagas podem ser canceladas individualmente através de DELETE /api/v1/payment-link/{slug}.