Qué puedes hacer
- Emite boletos con fechas de vencimiento, registrados en tu ledger de Midaz. Un boleto es tradicional, o híbrido cuando el pagador también puede pagarlo por Pix. Puedes elegir su nosso número en la Console o a través de la API. A través de la API, un boleto también puede llevar multas, intereses y descuentos.
- Emite una serie de 2 a 36 boletos en cuotas, o un lote de 1 a 25 boletos, en una sola solicitud a la API.
- Paga facturas (pagos de impuesto DARF y facturas de servicios públicos y de concesionarias) directamente desde la Console.
- Consulta una factura por su línea digitable antes de pagarla. La Console lo hace en el formulario de pago. La API tiene una operación para eso. La respuesta muestra el monto, las fechas y quién recibe el dinero.
- Haz seguimiento de las operaciones desde un dashboard con tarjetas KPI, actividad reciente y acciones rápidas.
Emitir un boleto
Todo boleto registra al titular de la cuenta emisora como beneficiario final, y la respuesta devuelve a ese titular en
guarantor. El servicio lee al titular en el CRM de Midaz cuando emite el boleto. No emite nada y rechaza la solicitud en estos casos:
- La cuenta no tiene titular registrado, o el registro del titular está incompleto:
400PBP-0116. - El titular registrado no puede ser beneficiario final:
422PBP-0117. - El servicio no puede leer el registro, o la lectura no está configurada:
503PBP-0118. - El pagador es el titular de la cuenta:
422PBP-0119.
Boletos híbridos
Un boleto híbrido (type HYBRID) se emite junto con un cobro Pix con vencimiento. Antes de emitir el primero, define la clave Pix y la dirección del receptor con POST /v1/admin/pix-config. Léelas de vuelta con GET /v1/admin/pix-config. Sin una configuración completa, el servicio rechaza el boleto híbrido con 422 PBP-0120. Una clave CPF o CNPJ debe ser el documento del titular de la cuenta emisora.
El servicio guarda un historial de los cambios de la clave Pix. GET /v1/admin/pix-config/history los lista, del más reciente al más antiguo, con la clave que fijó cada cambio, la clave que reemplazó, quién lo hizo y cuándo. Una clave CPF, e-mail o teléfono aparece enmascarada. La lista trae los cambios que POST /v1/admin/pix-config hizo después de que el historial empezó, así que una lista vacía no significa que el tenant no tiene clave.
pixTxId llega cuando se confirma la emisión. El qrCode de Pix, su pixLocation y el PDF solo se sirven después de que BTG registra el boleto. Mientras el boleto está PENDING, el PDF responde 503 con Retry-After.
Un boleto híbrido puede recibir un segundo pago por la vía que no lo liquidó. paidVia registra la vía que liquidó el boleto, BOLETO o PIX. El servicio no acredita el segundo pago: el boleto sigue liquidado por la primera vía. Cuando BTG asocia el segundo pago al boleto, excessPayments lo lista y el evento BOLETO_EXCESS_PAYMENT lo anuncia. Un segundo pago que BTG no asocia al boleto llega a la cuenta de cobro y no se lista.
Series de cuotas
POST /v1/boletos/installments crea una serie de 2 a 36 boletos tradicionales, uno por cuota. El total se divide en partes iguales, y el resto va a la última cuota, o tú indicas cada monto en installmentAmounts. La cuota k vence en firstDueDate más k−1 veces intervalDays, de 1 a 365 días, sin ajuste por día hábil.
La solicitud responde de inmediato con el estado CREATED, y BTG registra cada cuota después, una por vez. Sigue la serie con GET /v1/boletos/installments/{series_id}. Su status es CREATED, COMPLETED, PARTIAL_FAILURE o FAILED, y closed indica si toda cuota está liquidada, cancelada, inactivada o fallida. Una cuota que BTG aceptó todavía puede terminar FAILED, así que espera a que closed sea true para conocer el resultado final.
Lotes de boletos
POST /v1/boletos/batches emite de 1 a 25 boletos tradicionales para una cuenta y un ledger. Responde 202, y el servicio emite cada ítem después, de forma independiente.
- Un lote fuera de 1 a 25 ítems se rechaza con
422PBP-0122. - Cuando algún ítem incumple una regla, el servicio rechaza el lote completo con
422PBP-0123y lista cada problema enitemErrors. No se emite nada. Dos ítems con el mismo nosso número aparecen ahí comoPBP-0125. GET /v1/boletos/batcheslista lotes, yGET /v1/boletos/batches/{batch_id}devuelve uno con sus ítems.POST /v1/boletos/batches/{batch_id}/cancelintenta cancelar cada ítem en estadoCREATEDy devuelve un resultado por ítem:CANCELED,CANCEL_FAILEDcuando BTG rechaza la cancelación, oNOT_CANCELABLEpara cualquier otro ítem, que no se modifica.GET /v1/boletoslista ítems de lote conkindBATCH, o conbatchId. Un boleto de un lote llevabatchIdybatchPosition.
Notificaciones
Una configuración de webhook recibe solo los tipos de evento que nombra enenabledEvents (consulta POST /v1/admin/webhooks). Los eventos de boleto incluyen BOLETO_CREATED, BOLETO_BATCH_FINISHED, BOLETO_EXCESS_PAYMENT y BOLETO_FAILED. BOLETO_FAILED anuncia un boleto individual, una cuota o un ítem de lote que falló. Su cuerpo nombra el kind, la serie y el número de cuota o el lote y la posición, y el error. PIX_KEY_CHANGED anuncia un cambio de la clave Pix. Su aviso nombra el tipo de la clave, no la clave: lee el cambio con la operación de historial. Un evento de pago (PAYMENT_SETTLED, PAYMENT_REJECTED, PAYMENT_FAILED, PAYMENT_CANCELED o PAYMENT_SCHEDULED) anuncia el nuevo estado de un pago, ya lo fije el webhook de BTG o la conciliación.
Encuentra un boleto después de una emisión incierta
Una emisión sin nosso número puede responder202 con un boleto PENDING sin código de barras. El servicio no recibió una respuesta confirmada de BTG, y completa el boleto después. Léelo con GET /v1/boletos/{id}. No envíes la solicitud de nuevo con un nuevo Idempotency-Key: BTG puede haber emitido ya el boleto, y una segunda solicitud puede emitir un segundo. Reenviar con la misma clave es seguro. Cuando la lectura muestre FAILED, el boleto no se emitió, y puedes enviar la solicitud de nuevo con una nueva clave.
Cuando BTG rechaza una emisión de una forma que prueba que no emitió ningún boleto, el servicio responde el rechazo y el boleto registrado termina FAILED. GET /v1/boletos lo lista, y un nuevo intento registra un nuevo boleto.
Cómo un pago de factura mueve el dinero
- El ledger reserva el monto en la cuenta de fondeo. Si el saldo o el límite de sobregiro no lo permiten, el pago falla aquí, y BTG no lo recibe.
- Payments envía el pago a BTG.
- Cuando Payments registra que BTG aceptó el pago, la API responde
201con el estado actual del pago, por lo generalCREATED. Mientras Payments no tiene una respuesta registrada de BTG, la API responde202y el pago quedaUNCONFIRMED. - Para un pago de boleto bancario o de servicio público, la conciliación lee el pago en BTG. Si BTG no tiene registro de él durante toda la ventana que define el despliegue, el pago falla con
PBP-0211, y Payments libera los fondos. - Para un pago de DARF, los fondos siguen reservados hasta que llega el resultado de BTG.
Encuentra un pago después de un error
Una solicitud que crea un pago puede terminar sin el id del pago, por ejemplo después de un timeout o de una respuesta con estado
5xx. Primero, envía la solicitud de nuevo con el mismo Idempotency-Key. Después de un 409 con PBP-0007 o de un 503 con PBP-0008, espera y envíala de nuevo con la misma clave. Después de que la misma clave devuelva otra respuesta, llama a GET /v1/payments con idempotencyKey igual a esa clave para encontrar lo que la solicitud creó. Envía el mismo X-Organization-Id de esa solicitud. Una respuesta que el servicio devuelve de nuevo a partir de la almacenada lleva el header X-Idempotency-Replayed: true.
Después de enviar una solicitud de nuevo con un nuevo Idempotency-Key, no la envíes de nuevo con la clave anterior. La clave anterior puede ejecutar la solicitud otra vez, y las dos solicitudes pueden pagar.
Por dónde empezar
Payments en Lerian Console
Activa el plugin Payments y haz un primer recorrido por el módulo.
Resumen de Payments
El dashboard: tarjetas KPI, operaciones recientes y atajos.
Boletos
Emite, consulta y gestiona boletos.
Pago de facturas
Paga DARF y facturas de servicios públicos desde la Console.

