Appearance
Pix, boletos e saques — /quickpay (descontinuado)
WARNING
Sem equivalente na API v1 ainda. Use até a substituição.
Todas 🔒 (Authorization: Bearer <token>), operam sobre a conta ativa. Valores em reais (decimal). Saques exigem o PIN transacional da conta (definir PIN).
Receber por Pix (Pix in)
POST /quickpay/pix/create · /quickpay/pix/qrcode · /quickpay/pix/qrcode-fixo
Cria um QR Code Pix dinâmico e uma cobrança pendente vinculada.
Entrada (corpo JSON):
| Campo | Tipo | Regras |
|---|---|---|
amount | number | obrigatório, ≥ min_pix_in da conta (≥ 1) |
webhook | url | opcional |
name | string ≤100 | opcional |
email | string ≤100 | opcional, e-mail |
document | string ≤100 | opcional (com name+email cria/atualiza o cliente) |
Saída: 201, chave pix:
json
{ "txid": "…", "value": 100, "id": 55, "qrcode": "00020126…", "created_at": "…", "image": "data:image/png;base64,…" }GET /quickpay/pix/image
Retorna o QR Code estático da conta (chave Pix). Cria/salva se ainda não existir. Entrada (query): code (opcional, numérico 1–5). Saída: 200, data: { "payload": "<copia e cola>" }.
GET /quickpay/pix/list
Sem txid/id: lista paginada. Com txid ou id: um único Pix. Entrada (query): per_page (15), page (1), ou txid/id. Saída (lista): resposta paginada — { data: [{id,txid,qrcode,value,status,created_at,image}], current_page, last_page, per_page, total, ... }. Saída (item): objeto do Pix completo + transactions[] + image.
GET /quickpay/pix/{txid}
Entrada: path txid (aceita também ?id=). Saída: 200:
json
{ "txid":"…","image":"data:image/png;base64,…","qrcode":"…","status":"PENDING","value":100,"name":null,"email":null,"document":null,"created_at":"…","updated_at":"…" }404 se não existir na conta.
Emitir boleto
Caminhos equivalentes: /quickpay/boleto/* (legado) e /quickpay/boletos/*.
GET /quickpay/boleto/list · /quickpay/boletos
Entrada (query): per_page (1–100, default 25), page (≥1), status, search (nome/e-mail/documento/txid), created_at_start/_end, payment_date_start/_end, updated_at_start/_end. Saída: 200, { data: [boletos], meta: {...} }. boleto: { id, status, txid, name, email, document, value, expired, barcode, digitableLine, rate, type_rate, discount, days_discount, type_discount, late_fee, ourNumber, yourNumber, pathPDF, paid_amount, payment_date, webhook, created_at, updated_at, charge:{id,value} }.
POST /quickpay/boleto/create · POST /quickpay/boletos
Entrada (corpo JSON):
| Campo | Tipo | Regras |
|---|---|---|
amount | number | obrigatório, ≥ tax_boleto da conta |
name | string ≤255 | obrigatório |
email | string ≤100 | obrigatório, e-mail |
document | string | obrigatório, CPF ou CNPJ válido |
expiration_date | date | obrigatório, ≥ hoje |
phone | string | opcional |
webhook | url | opcional |
hasPix | bool | opcional — gera Bolepix (boleto + Pix) |
hasPDF | bool | opcional — já gera o PDF |
amount_rate + type_rate | number + ABSOLUTE/PERCENTAGE | juros (obrigatórios juntos se um for enviado) |
late_fee + late_fee_type | number + ABSOLUTE/PERCENTAGE | multa (obrigatórios juntos) |
discount + days_discount + type_discount | number + number + ABSOLUTE/PERCENTAGE | desconto (obrigatórios juntos); a data após o desconto não pode ser < hoje |
address.{street,number,city,state,zipcode} | string | opcionais |
messages, informative | array | opcionais |
Saída: 200, data:
json
{ "txid":"…","value":100,"name":"…","document":"…","barcode":"…","digitableLine":"…",
"expired":"2026-10-01","boleto":{...},"pix":{ "txid":"…","qrcode":"…","image":"…" },
"pdf_path":"…" }message: "Boleto Gerado com sucesso". 400 em falha bancária.
GET /quickpay/boleto/{txid} · /quickpay/boletos/{txid}
Entrada: path txid. Saída: 200, boleto. 404 se não existir.
POST /quickpay/boleto/pdf/{txid} · POST /quickpay/boletos/{txid}/pdf
Entrada: path txid. Saída: 200, data: { pdf_url, pdf_path, pdf_url_full } (URLs para /storage/boletos/boleto_{txid}.pdf). 404 se não existir.
POST /quickpay/boleto/cancel · POST /quickpay/boletos/cancel
Entrada (corpo JSON): txid (string) ou txids (array de strings). Saída: 200, data: { "<txid>": { "success": bool, "message": "…" } }, message: "Processamento de cancelamento concluído". Boleto pago não pode ser cancelado.
DELETE /quickpay/boleto/{txid} · DELETE /quickpay/boletos/{txid}
Entrada: path txid. Saída: 200, message: "Boleto deletado com sucesso." (baixa no banco, marca status = DELETED, atualiza a cobrança e o Pix associados). 404 se não existir.
Pagar boleto (contas a pagar)
POST /quickpay/boleto/info-barcode
Consulta os dados do boleto pelo código de barras e registra um pagamento pendente.
Entrada (corpo JSON): barcode (obrigatório, string, ≥ 44). Saída: 200, { "boleto": { …dados do boleto (valor, vencimento, beneficiário)…, "id": <pagamento de boleto.id> } }. Erro se o boleto já foi pago.
GET /quickpay/boleto/payments
Entrada (query): per_page (15), status. Saída: 200, coleção paginada de pagamentos de boleto ({ id, barcode, value, status, due_date, paid_at, txid, json, created_at }).
GET /quickpay/boleto/payments/{id}
Entrada: path id. Saída: 200, pagamento de boleto. 404 se não existir.
POST /quickpay/boleto/payment-barcode
Efetua o o pagamento previamente consultado.
Entrada (corpo JSON):
| Campo | Tipo | Regras |
|---|---|---|
id | string | obrigatório — id do pagamento de boleto (de info-barcode) |
pin | string | obrigatório — PIN transacional |
description | string | opcional |
Saída: 200, objeto pagamento de boleto atualizado (status = COMPLETED, paid_at, txid). 403 PIN inválido; erro se já pago/em processamento.
POST /quickpay/boleto-saida-sicred
Indisponível
O método BoletoSaida não está implementado no controlador atual — a rota retorna erro. Use POST /quickpay/boleto/payment-barcode.
Saques / Pix out
POST /quickpay/withdraws
Consulta a chave Pix (DICT) e cria o saque em estado AWAITING.
Entrada (corpo JSON):
| Campo | Tipo | Regras |
|---|---|---|
keypix | string ≤150 | obrigatório |
value | number ≥0 | opcional; se enviado, valida saldo (balance - tax_pix_out) e duplicidade na última 1 h |
message | string ≤255 | opcional |
Saída: 200, { "data": { …dados do saque…, "internal_id": <id>, "account_balance": <saldo>, …dados do beneficiário (nome, banco, agência, conta)… } }. 404 se a chave Pix não existir no DICT.
POST /quickpay/withdraws/confirm
Confirma e envia o Pix.
Entrada (corpo JSON):
| Campo | Tipo | Regras |
|---|---|---|
internal_id | int | obrigatório — internal_id do passo anterior; deve estar AWAITING na conta |
keypix | string ≤255 | obrigatório |
value | number ≥0.01 | obrigatório; valida saldo e duplicidade |
pin | string(6) | obrigatório |
message | string ≤140 | opcional |
Saída: 201, data = detalhes do Pix enviado (endToEnd, txid, beneficiário, valor), message: "Transferência Pix realizada com sucesso". 403 PIN inválido.
POST /quickpay/withdraws/bank
Saque para conta bancária (sem chave Pix).
Entrada (corpo JSON):
| Campo | Tipo | Regras |
|---|---|---|
bank_code | string ≤255 | obrigatório (ISPB ou código) |
agency | string ≤50 | obrigatório |
account | string ≤50 | obrigatório |
beneficiary_name | string ≤255 | obrigatório |
beneficiary_document | string ≤20 | obrigatório |
amount | number ≥0.01 | obrigatório |
pin | string(6) | obrigatório |
message | string ≤255 | opcional |
Saída: 200, { "data": saque, "transaction": transação }. 403 PIN inválido; 422 se houver transação idêntica concluída na última 1 h.
GET /quickpay/withdraws
Entrada (query): per_page (15), search (nome/txid/endtoendid/documento). Saída: 200, { data: [saques], meta: {...} }.
GET /quickpay/withdraws/{id}
Entrada: path id. Saída: 200, { "data": saque, "transaction": transação|null }. 404 se não existir.
POST /quickpay/pix/lookup
Consulta o titular de uma chave Pix.
Entrada (corpo JSON):
| Campo | Tipo | Regras |
|---|---|---|
key | string ≤255 | obrigatório |
type | string | obrigatório: cpf, cnpj, email, telefone, aleatorio (o formato de key é validado conforme o tipo) |
Saída: 200 { status:"success", message:"Chave Pix encontrada", data:{…titular, instituição…} }. 400 formato inválido; 404 chave inexistente.
POST /quickpay/pixout/pix-key
Pix out imediato por chave.
Entrada (corpo JSON): amount (obrigatório, número), key (obrigatório), document (obrigatório), message (opcional, ≤99). Saída: 200, a transação de débito criada. 400 saldo insuficiente.
POST /quickpay/pixout/pix-databank
Pix out por dados bancários.
Entrada (corpo JSON):
| Campo | Tipo | Regras |
|---|---|---|
amount | number | obrigatório, ≤ max_pix_out |
beneficiary_document | string | obrigatório, CPF ou CNPJ |
beneficiary_name | string ≤99 | obrigatório |
beneficiary_bank_branch | string ≤99 | obrigatório |
beneficiary_bank_code | string ≤99 | obrigatório |
beneficiary_account | string ≤99 | obrigatório |
beneficiary_account_type | string | obrigatório: CORRENTE, PAGAMENTO, SALARIO, POUPANCA |
message | string ≤99 | opcional |
Saída: 200, objeto Transaction de débito. 400 saldo insuficiente.
POST /quickpay/saida-sicred
Pix out via Sicredi por chave. Entrada (corpo JSON): mount (obrigatório, número), keyPix (obrigatório ≤99), documentoBeneficiario (obrigatório ≤99), message (opcional ≤99). Saída: 200, objeto Transaction. 400 saldo insuficiente; exceção com o erro bancário caso a chave falhe.
POST /quickpay/pix-out/dataBank
Pix out via Sicredi por dados bancários. Entrada (corpo JSON): beneficiary_name (obrigatório), beneficiary_document (CPF/CNPJ), bank_code (obrigatório), branch (obrigatório), account (obrigatório), account_type (obrigatório), amount (obrigatório, ≥0.01), payment_date (opcional, YYYY-MM-DD), mensagem (opcional). Saída: 200, objeto Transaction.
Favorecidos
| Endpoint | Entrada | Saída |
|---|---|---|
GET /quickpay/withdraws/recipients | query per_page (15), search | 200 — paginação de clientes com pixRecipients |
GET /quickpay/withdraws/recipients/frequent | query search | 200, data = até 10 PixRecipient mais usados, message |
GET /quickpay/withdraws/recipients/frequent/{id} | path id | 200, data = PixRecipient; 404 se não existir |
Cobranças
GET /quickpay/charges/reports · /quickpay/chargess/reports
Entrada (query): group_by (obrigatório, days|months), date_start (obrigatório, data), date_end (obrigatório, ≥ date_start). Saída: 200 — array de linhas { reference_date, status_id, payment_method, total_qtd, total_amount_paid, total_value, total_method_paid, total_method_unpaid, status:{id,title,description} }.
GET /quickpay/charges/export
Entrada (query): format (xlsx|csv|pdf, default xlsx), download (bool),
- os filtros de listagem (
search,client_id,status_id, intervalos de data). Saída: comdownload=true→ arquivo (Content-Disposition: attachment). Semdownload→202,data.message"exportação iniciada" (arquivo enviado por e-mail).422formato inválido.
GET /quickpay/charges/{id}/download
Entrada: path id (id ou code). Saída: 200, application/pdf, Content-Disposition: attachment; filename="comprovante_{id}.pdf". 404 se a cobrança não existir.
POST /quickpay/charges/{id}/notify
Entrada: path id; corpo message (opcional, ≤255). Saída: 200 { "message": "Notificação enviada com sucesso!" }. 500 em falha de envio; 404 se não existir.
POST /quickpay/webhooks/send-charge/{chargeId}
Reenvia o webhook de uma cobrança paga (status_id = 2) para a URL configurada. Entrada: path chargeId. Saída: 200 { message, charge_id, status:"success", http_status, webhook_url, webhook_notification_id, response }. 404 se a cobrança não existir/estiver não paga; 400 se não houver Pix nem boleto; 500 se o webhook do cliente falhar.
Transações e extrato
GET /quickpay/transactions
Entrada (query): search (≤100), status (-1,0,1,2,3), type/type_id/type_ids[] (ids de tipo), per_page, page, created_at_start/_end (YYYY-MM-DD), payment_date_start/_end (YYYY-MM-DD, obrigatórios juntos, intervalo ≤ 45 dias). Saída: 200:
json
{
"data": [ transação ],
"sumary": { "total_transactions": 120, "income_value": 5000, "expenses_value": -1200 },
"meta": { "current_page": 1, "per_page": 15, "total": 120, "last_page": 8 }
}GET /quickpay/transactions/{id}
Entrada: path id. Saída: 200 { "success": true, "data": transação }. 404 se não existir.
GET /quickpay/transactions/{id}/download
Entrada: path id. Saída: 200, application/pdf, Content-Disposition: attachment; filename="comprovante_{id}<timestamp>.pdf".
GET /quickpay/transactions/balance-summary
Entrada (query): group_by (obrigatório, days|months), date_start (obrigatório), date_end (obrigatório, ≥ date_start). Saída: 200:
json
{
"data": [ { "period":"2026-09-01","sum":300,"running_balance":300,"income":500,"expenses":-200,
"income_count":3,"expenses_count":1,"transactions_count":4,
"transactions_in":[...],"transactions_out":[...] } ],
"resume": { "period":"total","sum":300,"running_balance":300,"income":500,"expenses":-200,
"income_count":3,"expenses_count":1,"transactions_count":4 }
}GET /quickpay/extract
Entrada (query): payment_date_start (obrigatório, data), payment_date_end (obrigatório, ≥ start); demais filtros de listagem opcionais. Saída: 200:
json
{
"data": [ { "date":"2026-09-01","transactions":[transação],
"transactions_count":4,"summary":{ "day_total":300,"balance_end_of_day":1300 } } ],
"sumary": { "balance": 1300, "total_transactions": 12,
"by_type": [ { "type_id":1,"type_name":"Pix In","count":8,"total":4000 } ] }
}