Creation Permanent Mandate

Creation Permanent Mandate

Qué hace

Crea un mandato de tipo PERMANENT para un compromiso con monto total y cuotas definidos al momento de su creación.

Cuándo usarlo

Se utiliza cuando el monto total y las cuotas están definidos desde el inicio, como en un plan de pago previamente acordado. El mandato se crea junto con esas cuotas y sus respectivos vencimientos.

Endpoint

POST /mandate

Autenticación

Envía x-api-key y Authorization: Bearer <token> con las credenciales del ambiente de la solicitud. Obtén el token mediante el proceso de autenticación.

Headers requeridos

  • country, commerce y channel: contexto comercial autorizado para la solicitud.
  • requestDateTime: fecha y hora de la solicitud.
  • correlationId: identificador de la solicitud. Se recomienda usar un UUID para facilitar su seguimiento.
  • processId y salesExecutiveId: valores obligatorios en esta operación.

Consulta los parámetros de la operación para conocer las restricciones de cada header y utiliza los valores asignados a tu integración.

Campos principales

CampoDescripción
customer.userId o customer.internalUserIdIdentifica al cliente. Usa solo una variante segun el ejemplo.
mandate.idID externo unico del comercio para el mandato/deuda.
mandate.typeTipo del producto: DYNAMIC, PERMANENT, SUBSCRIPTION u ONEPAY.
mandate.name / mandate.detailTexto visible o descriptivo del compromiso.
mandate.chargesConfiguracion de vigencia, monto, moneda y periodicidad segun el tipo.
paymentMethodsMetodos habilitados para este mandato; si se omite, se usan los disponibles para el comercio.
installmentsCuotas iniciales cuando el producto lo permite.
metadataDatos propios del comercio para conciliacion.
urls.callback, urls.activationWebhook, urls.paymentWebhookURLs de retorno/notificacion si tu flujo las usa.

Variantes soportadas

  • Cliente por customer.userId externo.
  • Cliente por customer.internalUserId interno Forpay.

Reglas de negocio

  • Si envías validateCreation: true y mandate.serviceId, desarrollo comprueba si ese serviceId ya existe. La prevalidación de producción no realiza esa comprobación.
  • El usuario debe estar asociado al comercio en este ambiente. Regístralo o asócialo antes mediante Create User.
  • Dentro de mandate.charges, envía startDate, endDate, cumulative, wayToPay y totalAmounts. El bloque paymentPeriod es opcional; si lo incluyes, debe cumplir el esquema de la operación.
  • Usa mandate.type=PERMANENT.
  • mandate.charges debe incluir configuracion coherente de periodo, monto y vigencia.
  • terminateWhenCharged normalmente debe ser false para este producto.

Respuesta exitosa

Si creas el compromiso sin firma, la respuesta incluye statusCode, message y payload. Según el resultado del flujo, los datos se entregan en payload.customer, payload.mandate, payload.installments y payload.activation.

Guarda los identificadores del cliente, del mandato y de las cuotas que recibas para utilizarlos en consultas posteriores. Si la respuesta incluye un enlace de activación, lo encontrarás en payload.activation.url.

Ejemplo recomendado

El monto de mandate.charges.totalAmounts coincide con la suma de las dos cuotas. installmentsNumber coincide con la cantidad enviada y cada cuota tiene un ID externo distinto.

Los datos son ficticios. Sustituye customer.internalUserId por el valor real devuelto por POST /user, usa un mandate.id nuevo y reemplaza las URLs por las de tu integración. El medio seleccionado debe estar habilitado para el comercio. Estos cuerpos se envían a POST /mandate con los headers de la operación. Los ejemplos no incluyen firma documental.

La URL de la respuesta es ilustrativa. En la integración, utiliza exactamente payload.activation.url devuelto por Forpay; no construyas el enlace a partir de su ejemplo.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Body Params

Body Params de creación de mandato según el tipo seleccionado.

Body de creación de mandato permanente

customer
required

Identifica al usuario asociado al comercio mediante exactamente uno de userId o internalUserId.

mandate
object
required
boolean

Indicador que determina si se muestra la ventana de Detalle de Compra. (Opcional)

paymentMethods
array
length ≥ 1

Selecciona medios habilitados para este tipo de mandato y para tu comercio. Cada elemento puede ser un nombre público o su ID entero. Se admiten listas mixtas. Al omitir el campo se utilizan los medios disponibles del comercio.

paymentMethods
number
required

Cantidad de cuotas a crear. Se deben enviar installments en una cantidad exactamente igual al número ingresado

installments
array of objects
required

Listado de cuotas ingresadas a cobrar con el mandato

installments*
metadata
object

Identificadores clave de nuestros clientes

signature
object

Bloque opcional de firma. Si no se envía, no se crea flujo de firma asociado al mandato. (Opcional)

urls
object
boolean
Defaults to false

(Opcional) Si se envía en true, antes de crear el recurso Forpay ejecuta validaciónes previas de consistencia y unicidad. Si alguna validación falla, la API responde con 400 y un array errors[] que contiene todos los códigos detectados, y la creación se aborta sin tocar la base de datos. Si se omite o se envía false, el flujo se ejecuta directamente (comportamiento histórico).

Headers
string
enum
required

Identificador de país donde proviene la solicitud

Allowed:
string
required
length between 5 and 30

Identificador único del comercio asociado definido por forpay

string
required
length ≥ 3

Tipo de plataforma usada por el comercio para integrarse con Forpay

date-time
required
Defaults to 2026-07-09T14:35:12.500Z

Fecha y hora de la solicitud en formato ISO 8601. En esta documentación se muestra un ejemplo precargado; al consumir la API debe enviarse la fecha/hora real de la solicitud.

string
required
length ≥ 1

Identificador de trazabilidad obligatorio. Se recomienda usar un UUID único por solicitud.

string
required
length ≥ 5

Proceso de la solicitud. Para el flujo de nuevas integraciones documentado, utiliza HYBRID.

string
required
length ≥ 1

Identificador del ejecutivo que realiza la venta

string
required

Clave x-api-key

Responses

Callbacks
Language
Credentials
URL
LoadingLoading…
Click Try It! to start a request and see the response here! Or choose an example:
application/json