Crear un anticipo
POST /stores/{storeKey}/advances
Crea un anticipo para un cliente de la tienda. El cliente se busca por su documento de identidad y se crea si no existe. La moneda debe estar habilitada en la tienda y la tienda debe tener una caja activa.
Si pay_now es true, se registra el cobro del anticipo con el método de pago indicado en payment, que debe estar habilitado en la tienda. Si además issue_receipt es true, se emite el comprobante y se envía por correo a customer.email.
La respuesta no incluye el identificador del anticipo creado. Si el cobro falla después de crear el anticipo, la respuesta es 400, el anticipo queda creado sin cobro y la respuesta no incluye su identificador.
Authorizations
Sección titulada «Authorizations »Parameters
Sección titulada « Parameters »Path Parameters
Sección titulada «Path Parameters »Identificador (UUID) de la tienda.
Example
2b7d9e40-c1a3-4f58-8e06-5a4d3c7b9f12Request Body required
Sección titulada «Request Body required »object
Descripción del anticipo.
Importe del anticipo.
Identificador de la moneda. Debe estar habilitada en la tienda.
Datos del cliente. No admite campos adicionales.
object
Nombres del cliente.
Apellidos del cliente.
Correo electrónico del cliente.
Tipo de documento.
Número de documento, sin espacios. Se valida según el tipo de documento; por ejemplo, el DNI tiene 8 dígitos.
Si es true, se registra el cobro del anticipo. Requiere payment.
Datos del cobro. Obligatorio cuando pay_now es true. No admite campos adicionales.
object
Identificador del método de pago. Debe estar habilitado en la tienda.
Número de referencia del cobro, solo dígitos.
Últimos cuatro dígitos de la tarjeta.
Si es true y pay_now es true, se emite el comprobante y se envía por correo a customer.email.
Examples
Anticipo sin cobro
{ "description": "Anticipo para evento corporativo", "amount": 500, "currency": "719b61f7-0e77-4e7c-8e78-7a9b51791c29", "customer": { "name": "Lucía", "lastname": "Paredes Quispe", "email": "lucia.paredes@example.com", "identification_type": "dni", "identification_value": "12345678" }}Anticipo cobrado con comprobante
{ "description": "Anticipo para evento corporativo", "amount": 500, "currency": "719b61f7-0e77-4e7c-8e78-7a9b51791c29", "customer": { "name": "Lucía", "lastname": "Paredes Quispe", "email": "lucia.paredes@example.com", "identification_type": "dni", "identification_value": "12345678" }, "pay_now": true, "payment": { "payment_method": "7e5b2a90-14cd-4d83-b6f1-0a9c3d8e5b72", "reference_number": "000172", "last_four_digits": "4242" }, "issue_receipt": true}Responses
Sección titulada « Responses »Confirma que el anticipo se creó. El cuerpo solo trae un mensaje de confirmación en data.message.
- No incluye el identificador del anticipo creado.
- Con
pay_nowentrue, un201indica que el anticipo se creó y que su cobro quedó registrado. - Un
400no garantiza que el anticipo no se haya creado: puede haber quedado creado sin cobro, o cobrado si falló la emisión del comprobante.
object
Resultado de la operación, con un mensaje de confirmación.
object
Mensaje de confirmación.
Examples
{ "data": { "message": "Anticipo creado correctamente" }}No se pudo crear el anticipo. El campo error.message trae un texto del error; su redacción puede cambiar, por lo que no debe usarlo como identificador del motivo. Si el error ocurrió en el cobro, el anticipo puede haberse creado sin cobro.
Formato de error con error.message.
object
Detalle del error, con su mensaje.
object
Descripción del error.
Examples
{ "error": { "message": "La moneda no esta habilitada para esta tienda" }}Credenciales ausentes, inválidas, deshabilitadas o vencidas. El campo error.description indica el motivo.
Formato de error de la autenticación y del control de acceso del token.
object
Detalle del error, con su código, su mensaje y su descripción.
object
Siempre es 0.
Mensaje del error.
Detalle del error, cuando existe.
Examples
Falta una de las cabeceras
{ "error": { "code": 0, "message": "No autorizado", "description": "El token es obligatorio" }}Token que no corresponde a la clave
{ "error": { "code": 0, "message": "No autorizado", "description": "El token es inválido" }}Clave inexistente
{ "error": { "code": 0, "message": "No autorizado", "description": "El token no fue encontrado" }}Token deshabilitado
{ "error": { "code": 0, "message": "No autorizado", "description": "El token está deshabilitado" }}Token vencido
{ "error": { "code": 0, "message": "No autorizado", "description": "El token expiró" }}La tienda indicada en la ruta no pertenece al token. La respuesta es la misma para una tienda ajena y para una tienda inexistente.
Formato de error de la autenticación y del control de acceso del token.
object
Detalle del error, con su código, su mensaje y su descripción.
object
Siempre es 0.
Mensaje del error.
Detalle del error, cuando existe.
Examples
{ "error": { "code": 0, "message": "Acceso denegado", "description": "El token no tiene acceso a la tienda solicitada" }}Los datos enviados no cumplen las reglas de validación.
Formato de error cuando los datos enviados no superan la validación.
object
Mensaje general de validación.
Mensajes de error agrupados por nombre de campo.
object
Examples
{ "message": "Uno o más de los datos que has ingresado no cumplen con los requisitos mínimos.", "errors": { "amount": [ "El campo amount es obligatorio." ] }}