Skip to content

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):

CampoTipoRegras
amountnumberobrigatório, ≥ min_pix_in da conta (≥ 1)
webhookurlopcional
namestring ≤100opcional
emailstring ≤100opcional, e-mail
documentstring ≤100opcional (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):

CampoTipoRegras
amountnumberobrigatório, ≥ tax_boleto da conta
namestring ≤255obrigatório
emailstring ≤100obrigatório, e-mail
documentstringobrigatório, CPF ou CNPJ válido
expiration_datedateobrigatório, ≥ hoje
phonestringopcional
webhookurlopcional
hasPixboolopcional — gera Bolepix (boleto + Pix)
hasPDFboolopcional — já gera o PDF
amount_rate + type_ratenumber + ABSOLUTE/PERCENTAGEjuros (obrigatórios juntos se um for enviado)
late_fee + late_fee_typenumber + ABSOLUTE/PERCENTAGEmulta (obrigatórios juntos)
discount + days_discount + type_discountnumber + number + ABSOLUTE/PERCENTAGEdesconto (obrigatórios juntos); a data após o desconto não pode ser < hoje
address.{street,number,city,state,zipcode}stringopcionais
messages, informativearrayopcionais

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):

CampoTipoRegras
idstringobrigatório — id do pagamento de boleto (de info-barcode)
pinstringobrigatório — PIN transacional
descriptionstringopcional

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):

CampoTipoRegras
keypixstring ≤150obrigatório
valuenumber ≥0opcional; se enviado, valida saldo (balance - tax_pix_out) e duplicidade na última 1 h
messagestring ≤255opcional

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):

CampoTipoRegras
internal_idintobrigatório — internal_id do passo anterior; deve estar AWAITING na conta
keypixstring ≤255obrigatório
valuenumber ≥0.01obrigatório; valida saldo e duplicidade
pinstring(6)obrigatório
messagestring ≤140opcional

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):

CampoTipoRegras
bank_codestring ≤255obrigatório (ISPB ou código)
agencystring ≤50obrigatório
accountstring ≤50obrigatório
beneficiary_namestring ≤255obrigatório
beneficiary_documentstring ≤20obrigatório
amountnumber ≥0.01obrigatório
pinstring(6)obrigatório
messagestring ≤255opcional

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):

CampoTipoRegras
keystring ≤255obrigatório
typestringobrigató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):

CampoTipoRegras
amountnumberobrigatório, ≤ max_pix_out
beneficiary_documentstringobrigatório, CPF ou CNPJ
beneficiary_namestring ≤99obrigatório
beneficiary_bank_branchstring ≤99obrigatório
beneficiary_bank_codestring ≤99obrigatório
beneficiary_accountstring ≤99obrigatório
beneficiary_account_typestringobrigatório: CORRENTE, PAGAMENTO, SALARIO, POUPANCA
messagestring ≤99opcional

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

EndpointEntradaSaída
GET /quickpay/withdraws/recipientsquery per_page (15), search200 — paginação de clientes com pixRecipients
GET /quickpay/withdraws/recipients/frequentquery search200, data = até 10 PixRecipient mais usados, message
GET /quickpay/withdraws/recipients/frequent/{id}path id200, 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: com download=true → arquivo (Content-Disposition: attachment). Sem download202, data.message "exportação iniciada" (arquivo enviado por e-mail). 422 formato 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 } ] }
}