POST /v2/debts/orders registra la deuda y pide el cargo a su cuenta.
Cuándo usar una orden de pago
Orden de pago
Un cobro único que quieres disparar ahora, con la cuenta que el usuario ya registró. Por ejemplo, un cargo extra o un pago que el usuario aprobó en tu app.
Débito automático
Si las deudas de un producto se tienen que cobrar solas cada vez que vencen.
Deuda
Si el usuario paga cuando quiere, por su
paymentUrl, con el medio que elija.Una orden de pago no necesita que el usuario esté adherido a un producto (
POST /adhesions). Solo necesita que tenga su cuenta bancaria registrada.Requisitos previos
- Tu compañía debe tener habilitadas las órdenes de pago y el débito automático (se configura con tu ejecutivo de Tapi).
- El usuario debe existir como contacto. Este endpoint no crea contactos en línea.
- El usuario debe haber registrado su cuenta bancaria en la página de enrolamiento (no por API). Puedes comprobarlo con
GET /payment-methods.
Crear una orden de pago
Campos
string
requerido
Tu identificador único de la orden, hasta 250 caracteres. Es la llave de idempotencia: si reintentas, usa el mismo valor. El
debtId de la deuda resultante es debt_<externalRequestId>. Ver Reintentos.string
requerido
El identificador del usuario, el mismo que usó al registrar su cuenta. Tiene que corresponder a un contacto existente.
string
requerido
Con qué medio se cobra. Por ahora el único valor es
BANK_ACCOUNT (la cuenta bancaria registrada).string
La cuenta con la que se cobra, tal como la devuelve
GET /payment-methods. Tiene que ser una cuenta vigente del usuario y del tipo indicado en paymentMethodType. Si no lo envías, se cobra con la cuenta predeterminada del usuario.string
Vencimiento de la deuda, en formato
YYYY-MM-DD. Si no lo envías, se toma la fecha de hoy en Ciudad de México más 7 días.string
Texto libre de hasta 255 caracteres. No puede ser vacío.
object
Objeto plano con tus datos propios. Sigue las mismas reglas que en las deudas. Ver Convenciones de la API.
string
Solo si tu cliente tiene varias companies. Ver Convenciones de la API.
La respuesta
Respuesta 201
debt: la deuda que se registró. Es una deuda como cualquier otra: la puedes leer conGET /debts/{debtId}. No admite pagos parciales.order: el cargo a la cuenta del usuario.estimatedProcessingDatees la fecha estimada del cargo (YYYY-MM-DD). Por ahora siempre viene ennull.
Estados de la orden
El cargo se procesa de forma asíncrona: la orden nace enPROCESSING y cambia de estado cuando el banco responde.
El resultado del cargo te llega por webhook: ver Pago de una orden. También puedes consultar la orden con
GET /v2/debts/orders.
Consultar una orden
Respuesta 200
externalRequestId es obligatorio y es el mismo que enviaste al crear la orden. data tiene la misma forma que order en la respuesta de creación. Si no existe una orden con ese externalRequestId, la respuesta es 404 RESOURCE_NOT_FOUND.
Reintentos e idempotencia
externalRequestId es la llave de idempotencia de la orden. Así se comporta un reintento con el mismo valor:
Errores
En estos dos endpoints, un
companyCode ajeno responde 403 con el envelope de error (error.code: RESOLUTION_ERROR y requestId), y no 422 como en el resto de la API. Ver Manejo de errores.
