POST /v1/payments sin duplicarlo en un
reintento, y leer y conciliar los pagos que ya existen en Mozart.
Registrar un pago por la API requiere una clave con el scope
write (ver
Autenticación). Sin ese scope, POST /v1/payments
responde 403 forbidden.Registrar un pago
Campos del body
Idempotencia por externalId
externalId es tu clave de idempotencia: identificá cada pago de tu lado con
un valor propio (el id de tu transacción, por ejemplo) y mandalo siempre que
registres ese pago.
1
Primer request
Un
externalId nuevo para esa cartera crea el pago y responde 201.2
Reintento con el mismo externalId
Si volvés a mandar el mismo
externalId en la misma cartera —por un
timeout, un reintento automático de tu lado, lo que sea— la API no crea
un segundo pago: responde 200 con el pago que ya existía.3
Mismo externalId con otro cuerpo
Si el
externalId ya existe en esa cartera pero el cuerpo es distinto
(monto, moneda, fecha, deudor, deuda, método o referencia), la API no
devuelve el pago anterior ni crea uno nuevo: responde 409
idempotency_conflict. Usá un externalId nuevo para un pago distinto.Errores típicos
Ver Paginación, errores y límites para el
formato completo del sobre de error.
Ejemplos por lenguaje
Otras formas en que se registra un pago
POST /v1/payments no es la única fuente: un pago también se registra
manualmente desde el panel de Mozart, por un link de cobro
(pay.mozarth.com), o lo trae el importador de carteras cuando una deuda
llega al archivo ya parcialmente pagada. Los tres caminos se leen igual por
GET /v1/payments.
Leer pagos
paymentMethod es uno de transfer, cash, collection_network,
deposit, card, check u other.
Promesas de pago
GET /v1/promises lista los compromisos de pago futuro. Cuando una promesa
se cumple, queda vinculada al pago que la cumplió:
status de una promesa es uno de pending, partial, fulfilled, broken
o cancelled.
Conciliación con tus propios registros
La forma confiable de conciliar una promesa con el pago que la cumplió es el vínculo directo por id:promise.paymentId apunta al id del pago
correspondiente (y, a la inversa, payment.promiseId apunta a la promesa que
ese pago cumplió).
Si además necesitás cruzar un pago contra tu propio sistema, usá reference
para lo que ya venías registrando manualmente, o externalId para lo que
registrás vos mismo por POST /v1/payments: es la clave que elegiste y vuelve
en el campo externalId del pago (null en los pagos que no se cargaron por
ese endpoint).
promise.paymentReference es el mismo tipo de dato visto desde la promesa.
reference es texto libre y opcional: puede venir vacío, así que no lo uses
como única clave de conciliación si tu proceso lo necesita sin excepciones.