Boleto Charge
Emite um boleto em nome da conta. A conta é o beneficiário e um terceiro paga. O caminho inverso, pagar um boleto de terceiro, é Boleto Pay.
A feature boleto_charge nasce desligada para todos os tenants, inclusive os criados depois do lançamento. Enquanto estiver off, toda rota em /v1/accounts/{accountId}/boleto/charge responde 403 feature_disabled. A CorpX liga pelo painel administrativo. Desligar depois não cancela boleto já emitido.
Escopo da credencial: boleto_charge.manage. É entrada de dinheiro, não cashout. A leitura também aceita read.
Credenciar o beneficiário
O titular precisa estar cadastrado como beneficiário no liquidante antes da primeira emissão. O cadastro usa os dados da conta (nome, documento e, quando há mais de uma conta ativa, agência e conta). Não envie corpo. Qualquer JSON que não seja vazio ou {} responde 400 invalid_payload.
Consulta ao vivo. 404 boleto_charge_beneficiary_not_found quando a conta nunca foi cadastrada. O liquidante não devolve um motivo em texto: o que existe é status e relationshipStatus.
A primeira POST /boleto/charge também cadastra sozinha, com o mesmo 202, se você não tiver chamado o credenciamento antes.
Emitir
identifier é a chave de idempotência da conta. Se omitido, vale o header Idempotency-Key. Repetir o mesmo identifier devolve 200 com o boleto ao vivo, sem emitir outro.
Resposta 202 com chargeId (o id do liquidante), barcode, digitableLine, ourNumber e registrationCondition: PENDING. O registro na base centralizada chega depois, em boleto.charge.registered ou boleto.charge.registration_failed.
Campos do pedido
Dinheiro é number em BRL com duas casas. Nunca centavos, nunca string.
interest e fine compartilham a forma do encargo: calculationModel, typeId, typeKey, value e startDate. discount.groups[] traz sequence, typeId, typeKey, value e limitDate. typeKey com percentage trata value como percentual do nominal; os demais, como valor em BRL.
Encargo incompatível com o modelo responde 422 boleto_charge_rules_inconsistent. Desconto com data inválida responde 422 boleto_charge_discount_invalid. Abatimento mais descontos que zeram o título respondem 422 boleto_charge_reductions_exceed_amount. identifier já ativo responde 409 boleto_charge_identifier_in_use. Código de barras já ativo responde 409 boleto_charge_barcode_active.
O que a resposta traz
Consultar
Tudo é lido ao vivo no liquidante. Não há espelho local do boleto. A tabela local só guarda o ponteiro para rotear o webhook e a idempotência do identifier.
Filtros da lista: barcode (44 dígitos), payer (nome ou documento), dueDate, status, page (mínimo 1) e pageSize (1 a 200, padrão 50). A lista devolve items, page, pageSize, totalItems, totalPages e hasNext.
Ciclo de vida
- Credenciamento do beneficiário, se ainda não existir (202, alguns minutos).
- Emissão (202). O título nasce
OPENcom registroPENDING. boleto.charge.registeredouboleto.charge.registration_failed.- Daí:
boleto.charge.settled(também entra no extrato comoBOLETO),overdue,written_off,cancelledouexpired.
boleto.charge.failed está no catálogo e não é enviado nesta versão.
Não há como pedir a baixa de um boleto em aberto. O liquidante ainda não oferece essa operação; o DELETE existe no código e responde 501, fora deste contrato. Quando a validade precisar ser previsível, envie expirationPolicy.paymentLimitDate na emissão.