NeoBank Documentation

NeoBank API

El NeoBank API está construido como una interfaz REST. El principal beneficio es que acepta form-encoded request bodies y devuelve respuestas JSON-encoded, usando códigos estándar de respuesta HTTP lo cual debería hacer nuestra API familiar para cualquier persona con experiencia previa utilizando APIs.

Changelog

15 de Marzo, 2022

Descripción general de cambios:

Ajustes en la estructura de endpoints de suscripción al webhook de notificaciones.

Cambio de nomenclatura para payload de notificaciones.

NotificationEnlistPOST:
  • Se incluye un endpoint para el enlistamiento al webhook de notificaciones.
TransactionEventsPOST:
  • Se ajusta la estructura de la respuesta 201.
  • Se incluye una variable que carga el payload de notificaciones con los códigos descriptivos de la misma.
  • Se cambia la nomenclatura del campo del payload de notificaciones de c2Pan a c2cardId

8 de Marzo, 2022

Descripción general de cambios:

Corrección de typos y errores de consistencia en ambiente de pruebas.

Cambio de tipo de variable para algunos campos.

Para flujos relacionados al EndUser:
  • El campo de “salary” cambia de tipo desde string a integer
  • El campo de “clientID” se elimina de la llamada POST
  • El campo de “pep” cambia de tipo desde string a bool
  • El campo de “isActive” cambia de tipo desde string a bool
Para flujos relacionados a MerchantUser:
  • El campo de “affidavitOfIncome” se elimina.
  • El campo de “pactoSocial” se elimina.
  • El campo de “kindOfBusiness” se corrige de bool a string.
  • El campo de “address” se corrige el duplicado
  • Los campos “isActive” y “walletId” se eliminan de la llamada MerchantUserPOSTrequest
Para los flujos relacionados a Wallets:
  • La nomenclatura del campo “id” cambia a “walletId” para facilitar reconocimiento
Para los flujos relacionados a DebitCards y PrepaidCards:
  • Se elimina el campo “panToken” de las llamadas POST.
Adiciones a la documentación
  • Se incluye la descricpión de campos del payload de notificaciones a la documentación

25 de Agosto, 2022

Descripción general de cambios:
  • Revisión completa de documentación
  • Inclusión de webhooks de validación de KYC
  • Inclusión de errores descriptivos 400
  • Inclusión de estructura de entidades
  • Auth    

NeoBank Documentation

Acceso a Sandbox y Auth

Para empezar un proceso de integración, debes inicialmente solicitar API Keys de integración a (dirección de correo para esto). Los API keys van a ser entregados vía email al responsable técnico.

El manejo de las llaves es un tema de gran importancia y es responsabilidad del destinatario de las llaves mantenerlas seguras. Las llaves secretas no deberán ser compartidas en ningún sitio accesible al público como GitHub, código client-side, etc.

La autenticación al API deberá ser efectuada via HTTP Basic Auth. Es necesario proveer el API Key como el valor básico de usuario, sin necesidad de proveer password.

Todas las llamadas tienen que ir por HTTPS, cualquier llamada por HTTP o sin Autenticación va a fallar.

Con las credenciales de integración podrás hacer llamados al ambiente de pruebas de NeoBank API de forma directa. Nuestro equipo proveerá herramientas para hacer pruebas sobre los endpoints mientras vas desarrollando tu código hacia nuestros ambientes (Puede elegir entre Swagger o Postman).

A partir de ese momento y utilizando esta documentación como guía, debes ser capaz de integrarte y probar llamados para:

  • Crear usuarios de tipo persona natural y jurídica. (ver USERS)
  • Crear wallets para cada usuario que crees. (ver WALLETS)
  • Gestionar balances de wallets creados por medio de PayIns, PayOuts y transferencias entre wallets. (ver WALLET OPERATIONS)
  • Crear tarjetas vinculadas a los wallets creados. (ver CARDS)

Importante destacar que la creación de tarjeta cuenta con dos endpoints distintos para tarjetas de débito y prepago. En la exploración inicial, nuestro equipo comercial debe haberles asignado los detalles específicos de los perfiles de su programa de tarjetas, lo que definirá a cuál o cuales endpoints deberán hacer llamados para la creación de sus tarjetas y también un código único para su perfil asignado que deben incluir los llamados de creación de tarjeta.

  •     Intro
  • Estructura de entidades    

NeoBank Documentation

Estructura de Entidades

El NeoBank API cuenta con 3 entidades fundamentales con las que se interactuará cada vez que se consuma algún endpoint para completar los distintos flujos disponibles. Dichas entidades identifican a los usuarios finales del servicio de emisión de tarjetas, los monederos o contenedores virtuales de dinero y las tarjetas asociadas a ellos.

UserID


Identifica de forma única a un EndUser o MerchantUser indistintamente. El UserID es la entidad primaria del NeoBank API. El flujo de creación de un EndUser o MerchantUser siempre dan por resultado la creación de un userID y a su ves un walletID asociado.

WalletID


El walletId es el identificador del contenedor de dinero electrónico al cual se acreditan y debitan fondos por medio de PayIns, PayOuts y/o transacciones de la o las tarjetas asociadas al mismo. Un userId siempre estará asociado a mínimamente un walletId, sin embargo puede contener múltiples walletIds si así requiere la solución del cliente.

CardID


Son los identificadores únicos de la tarjeta que además sirven como una abstracción del PAN de las tarjetas emitidas, evitando la necesidad del almacenamiento de información sensitiva de las tarjetas.

  •     Auth
  • Flujos    

NeoBank Documentation

Flujos

Los flujos disponibles con el uso del NeoBank API se categorizan en base a la entidad principal que registran, modifican o consultan. A un alto nivel los flujos se correlacionan de la siguiente manera:

Usuarios

La creación de nuevos userIds en el NeoBank API sigue dos flujos separados dependiendo del tipo de persona a ser ingresada al sistema.

End user es como se denominan los usuarios creados para personas naturales.

MerchantUser es como se denominan los usuarios creados para personas jurídicas.

  • endUser POST

    La creación de un nuevo usuario para una persona natural empieza con la llamada POST en la que se consume un endpoint para el envío de los datos básicos del usuario:

    
        {
            "email": "string",
            "firstName": "string",
            "lastName": "string",
            “occupation”: “string",
            “placeofwork”: “string”,
            “pep” : “bool”,
            “salary” : “integer”,
            “telephone” : “string”,
             "address": {
                "addressLine1": "string",
                "addressLine2": "string",
                "city": "string",
                "region": "string",
                "postalCode": "string",
                "country": "string"
            }
        }
                                                                        
     

    Cabe destacar que la responsabilidad de validar la veracidad y formato de los datos ingresados recae sobre el cliente de PayCaddy, es decir, nuestra API devolverá una respuesta exitosa siempre y cuando se cumplan los siguientes parámetros, independiente de la veracidad de la información o la duplicidad de los datos compartidos:

    • Los campos de First Name y Last Name deben sumar un total máximo de 22 caracteres que deben ser enviados de forma sanitizada, eliminando caracteres especiales y limitándose al rango ASCII.
    • Ninguno de los campos debe ser enviado como NULL.
    • El campo de correo debe seguir un formato estándar de correo.

    Aparte de las verificaciones de formato, es importante destacar la responsabilidad del cliente de enviar consistentemente los demás campos con información correcta:

    • El campo de salary debe incluir el salario mensual del usuario en USD.
    • El campo de pep indica si la persona natural para la cual se está creando el usuario está políticamente expuesta.

    PEP Alguien a quien se le ha confiado una responsabilidad pública prominente. Por lo general, una PEP presenta un mayor riesgo de participación potencial en sobornos y corrupción en virtud de su posición y la influencia que pueda tener.

    El control sobre la duplicidad de usuarios debe ser manejado por parte del cliente de PayCaddy, nuestra API generará múltiples userIds distintos independiente de que los datos compartidos sean idénticos en llamadas duplicadas.

    Si este evento no genera errores, el sistema responderá con un mensaje HTTP 200 OK. La respuesta exitosa replica los datos ingresados y añade información sobre los parámetros isActive y el walletId inicial asociado al userId, además carga un timestamp de la fecha de creación de dicho usuario.

    
    {
        "id": "string",
        "firstName": "string",
        "lastName": "string",
        "email": "string",
        “telephone” : "string",
        “placeofwork”: "string",
        “pep” : true,
        “salary” : 0,
        "address": {
            "addressLine1": "string",
            "addressLine2": "string",
            "city": "string",
            "region": "string",
            "postalCode": "string",
            "country": "string",
        },
        “isActive” : false,
        “walletId” : "string",
        “kycUrl” : "string",
        “CreationDate” : "2022-07-13T21:07:21.166Z"
    }
                                                                                                
                             

    De existir algún error el sistema responderá con uno de los siguientes mensaje de error 400:

    Campos vacíos:

    
    {
        "type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
        "title": "One or more validation errors occurred.",
        "status": 400,
        "traceId": "00-68857a5c83b83b498f4c49d8a61d91cb-1a140dcbf259a24d-00",
        “errors” : {
            "FirstName": [,
                "The FirstName field is required."
            ]
        }
    }
                                                                                                
                             

    Límite de caracteres:

    
    {
        "type": "",
        "title": "The value provided for the name exceeds the maximum value",
        "status": 0,
        "detail": "",
        “instance” : ""
    }
                                                                                                
                             

    Formato de email:

    
    {
        "type": "",
        "title": "Invalid format for email",
        "status": 0,
        "detail": "",
        “instance” : ""
    }
    
                            

    Algunos errores del sistema pudieran resultar en un mensaje de error 500. En estos casos, se solicita que el cliente haga un reporte via correo al equipo de PayCaddy.

    Validación de KYC

    Una vez asignados el identificador de usuario y de wallet, al end-user debe realizar la verificación KYC para poder completar con el procedimiento de crear el perfil con la verificación del usuario. Mientras esta verificación no se realice, el campo de control “isActive” se mantendrá asignado como false, inhabilitando cualquier procedimiento.

    En la respuesta de creación de usuario EndUser POST se presenta un link hacia la validación de identidad asociada al userId en Metamap, en el cual se le presentarán las instrucciones y pasos a seguir para que el endUser pueda completar con la verificación.

    
    {
        "id": "string",
        "firstName": "string",
        "lastName": "string",
        "email": "string",
        “telephone” : "string",
        “placeofwork”: "string",
        “pep” : true,
        “salary” : 0,
        "address": {
            "addressLine1": "string",
            "addressLine2": "string",
            "city": "string",
            "region": "string",
            "postalCode": "string",
            "country": "string"
        },
        “isActive” : false,
        “walletId” : "string",
        “kycUrl” : "https%3a%2f%2fsignup.getmati.com%2f%3fmerchantToken%3d6046cc2a54816f001bedd641%26flowId%3d6046cc2a54816f001bedd640%26metadata%3d%7b%22userid%22%3a%226955ea0f-34f3-4254-b10a-0181f307298c%22%7d",
        “CreationDate” : "2022-07-12T15:29:01.8271862+00:00"
    }
                                                                                                
                             

    Es importante considerar que el kycURL es compartido aplicando un URL encoding que permite el envío de la metadata (userId) que vincula la validación con el usuario creado. Para garantizar la activación del usuario al completar la validación de forma exitosa, es necesario asegurarse que el URL al que se redirige el usuario desde la interfaz en front end carga la siguiente estructura:

    Una vez completados los pasos de validación de identidad en la URL compartida en el campo kycURL, el sistema de validación de Metamap procesa los datos enviados y lo compara con listas negras y listas de AML y envía notificaciones sobre la validación via webhook.

    Para recibir correctamente las notificaciones de validaciones hechas en Metamap, es necesario mantener una URL para la recepción de mensajes desde el NeoBank API via webhook, debes entrar en contacto con el equipo de integración de PayCaddy para la configuración del envío de notificaciones a dicha URL.

    Las notificaciones se envían de acuerdo a la siguiente estructura:

    Datos enviados: La recepción de este webhook indica que el usuario ha completado exitosamente el envío de datos. Es importante destacar que esto no significa que la validación haya sido exitosa. Una segunda notificación se envía via webhook indicando el status de la validación

    
    {
        "metadata": {,
            "userid": "2c6ad273-fbd3-44e0-9a05-018190eec785"
        },
        "eventName": "verification_inputs_completed",
        “timestamp” : "2022-06-23T14:27:55.979Z"
    }
    
                            

    Validación Exitosa: Luego de completados los datos, si la validación ocurre exitosamente, se envía una notificación via webhook al mismo URL con el siguiente esquema. A partir de este punto el usuario se encuentra validado y listo para operar los siguientes flujos. El campo isActive para dicho usuario se convierte en true.

    
    {
        "metadata": {,
            "userid": "bccd97f9-fcb2-42d0-b244-01811c26997a"
        },
        "status": "Verification expired"
    }
    
                            

    A partir de este momento, es útil reiterar las instrucciones de subida de datos para la validación y proporcionar nuevamente un botón con el kycUrl relacionado al userId para un reintento de validación.

    Validación Manual: En caso que el segundo intento de validación haya fallado, se hace necesaria una validación manual de los datos ingresados. El cliente debe entrar en contacto con el equipo de cumplimiento de PayCaddy detallando el caso incluyendo Nombre, Apellido y userId para dicho usuario. De ser aprobada la revisión de los datos, la activación se hará manualmente y una notificación se enviará via webhook con la siguiente estructura:

    
    {
        "metadata": {,
            "userid": "bccd97f9-fcb2-42d0-b244-01811c26997a"
        },
        "status": "reviewNeeded"
    }
    
                            

    Esta notificación garantiza que la revisión manual ha sido exitosa y el usuario se encuentra activo. El campo isActive para dicho usuario se convierte en true. A partir de este punto el usuario se encuentra validado y listo para operar los siguientes flujos.

  • endUser GET

    La llamada GET para un endUser permite conocer los datos almacenados de un userId en particular, en especial el walletId de su wallet inicial y el status de actividad de este usuario en el campo isActive. Ambos datos son cruciales para las demás llamadas al NeoBank API.

    Esta llamada se puede utilizar para verificar el status del usuario en cualquier punto del flujo.

  • merchantUser POST

    La creación de un nuevo usuario para una persona jurídica empieza con la llamada POST en la que se consume un endpoint para el envío de los datos básicos de la persona jurídica:

    
    {
        "email": "string",
        "registeredName": "string",
        "numOfRegistration": "string",
        "ruc": "string",
        “KindOfBusiness” : "string",
        “telephone”: "string",
        "address": {
            "addressLine1": "string",
            "addressLine2": "string",
            "city": "string",
            "region": "string",
            "postalCode": "string",
            "country": "string"
        }
    }
                                                                                                
                             

    Cabe destacar que la responsabilidad de validar la veracidad y formato de los datos ingresados recae sobre el cliente de PayCaddy, es decir, nuestra API devolverá una respuesta exitosa siempre y cuando se cumplan los siguientes parámetros, independiente de la veracidad de la información o la duplicidad de los datos compartidos:

    • El campo de registeredName debe contener un total máximo de 22 caracteres que deben ser enviados de forma sanitizada, eliminando caracteres especiales y limitándose al rango ASCII.
    • Ninguno de los campos debe ser enviado como NULL.
    • El campo de correo debe seguir un formato estándar de correo.

    Aparte de las verificaciones de formato, es importante destacar la responsabilidad del cliente de enviar consistentemente los demás campos con información correcta:

    • El campo de “ruc” debe incluir el número del Registro Único de Contribuyentes o su contraparte internacional para la identificación tributaria como VATIN, CUIT, CNPJ, NIT o RUT.
    • El campo de “numOfRegistration” debe incluir el folio del registro de la persona jurídica tal como determinado por la institución. Dicho campo puede replicar los datos del “ruc” en caso de no tener disponible la información.
    • El campo de “kindOfBusiness” debe ingresar una descripción acotada de la actividad económica desempeñada por la persona jurídica. El NeoBank API no valida el detalle de la información brindada en este campo, sin embargo es crucial asegurar el envío de información fidedigna ya que la misma será utilizada por el equipo de cumplimiento en la evaluación del usuario.

    El control sobre la duplicidad de usuarios debe ser manejado por parte del cliente de PayCaddy, nuestra API generará múltiples userIds distintos independiente de que los datos compartidos sean idénticos en llamadas duplicadas.

    Si este evento no genera errores, el sistema responderá con un mensaje HTTP 200 OK. La respuesta exitosa replica los datos ingresados y añade información sobre los parámetros isActive y el walletId inicial asociado al userId, además carga un timestamp de la fecha de creación de dicho usuario.

    
    {
        "id": "string",
        "email": "string",
        "registeredName": "string",
        "numOfRegistration": "string",
        “ruc” : "string",
        “kindOfBusiness”: "string",
        “telephone” : "string",
        "address": {
            "addressLine1": "string",
            "addressLine2": "string",
            "city": "string",
            "region": "string",
            "postalCode": "string",
            "country": "string"
        },
        “isActive” : true,
        “walletId” : "string",
        “CreationDate” : "2022-07-18T22:29:45.914Z"
    }
                                                                                                
                             

    De existir algún error el sistema responderá con uno de los siguientes mensaje de error 400:

    Campos vacíos:

    
    {
        "type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
        "title": "One or more validation errors occurred.",
        "status": 400,
        "traceId": "00-68857a5c83b83b498f4c49d8a61d91cb-1a140dcbf259a24d-00",
        “errors” : {
            "registreredName": [,
                "The registeredName field is required."
            ]
        }
    }
                                                                                                
                             

    Límite de caracteres:

    
    {
        "type": "",
        "title": "The value provided for the name exceeds the maximum value",
        "status": 0,
        "detail": "",
        “instance” : ""
    }
    
                            

    Formato de email:

    
    {
        "type": "",
        "title": "Invalid format for email",
        "status": 0,
        "detail": "",
        “instance” : ""
    }
    
                            

    Algunos errores del sistema pudieran resultar en un mensaje de error 500. En estos casos, se solicita que el cliente haga un reporte via correo al equipo de PayCaddy.

    Validación de KYC

    A diferencia de los usuarios creados por personas naturales (endUser), las personas jurídicas al crear un merchantUser asociado obtienen su cuenta activa por defecto, es decir, desde la respuesta exitosa del API ante un llamado de creación de merchantUser, el userId asociado al merchant se encontrará en status “active” por un período temporal y tendrá a su disposición todos los flujos habilitados.

    Como parte del proceso estándar del equipo de cumplimiento de PayCaddy, todos los usuarios de tipo merchantUser son revisados en un lapso de 48 horas luego de lo cual, de encontrarse alguna inconsistencia con la información brindada, la cuenta es bloqueada manualmente y los motivos se informan via correo al cliente de PayCaddy.

  • merchantUser GER

    La llamada GET para un merchantUser permite conocer los datos almacenados de un userId en particular, en especial el walletId de su wallet inicial y el status de actividad de este usuario en el campo isActive. Ambos datos son cruciales para las demás llamadas al NeoBank API.

    Esta llamada se puede utilizar para verificar el status del usuario en cualquier punto del flujo.

Wallets

Todos los usuarios de tipo endUser y merchantUser creados en el NeoBank API nacen con un wallet principal asociado, sin embargo, múltiples wallets pueden ser creados para un mismo userId. La creación de un nuevo wallet siempre debe estar asociada a un userId que debe además mantenerse activo en el sistema, es decir, su atributo “isActive” debe encontrarse como true.

  • wallet POST

    La creación de un wallet se hace por medio de la llamada POST que carga la siguiente estructura:

    
    {
        "userId": "string",
        "currency": "string",
        "description": "string"
    }
    
                            

    Dicha llamada se debe hacer asociándola a un userId activo previamente creado. El campo de currency debe considerar los códigos numéricos del ISO 4217. (ej. Dólares Estadounidenses se ingresarían con el código “840”).

    El campo “description” está creado para nombrar al wallet creado de acuerdo al uso que se le pretende dar. No es un campo obligatorio para la creación de un nuevo wallet.

    De ser exitosa la llamada, el NeoBank API responderá con un mensaje 200 con la siguiente estructura:

    
    {
        "id": "string",
        "userId": "string",
        "currency": "string",
        "description": "string",
        "balance": 0,
        "amountWithheld": 0,
        "creationDate": "2022-07-19T20:08:29.970Z"
    }
    
                            

    En caso de haber algún error en la llamada, el NeoBank API responderá con un error HTTP 400 con la descripción de error. En caso de encontrarse con algún error HTTP 500, favor contactar al equipo de soporte de PayCaddy con la descripción del incidente.

  • wallet GET

    La llamada GET para los wallets permite conocer la información asociada al walletId consultado. Esta llamada es especialmente importante para la consulta de saldos disponibles en wallet y saldo retenido por transacciones en movimiento.

    El saldo total se refleja en el campo balance de la respuesta 200 exitosa de esta llamada, mientras que el saldo retenido se refleja en el campo amountWithheld

    Todos los montos se reflejan en centavos, es decir, USD 1,000.00 se representarían como 100000.

    La llamada pudiera fallar si el walletId proporcionado es incorrecto, en cuyo caso el NeoBank API respondería con un error 400.

    
    {
        "type": "",
        "title": "Wallet 'c4d165d1-721d-4d78-a48d-017f0c6facf8' not found",
        "status": 0,
        "detail": "",
        “instance” : ""
    }
    
                            

    En caso de encontrarse con un error 500 deben contactar al equipo de atención de PayCaddy con los detalles de dicha instancia.

Wallet Operations

  • Payin POST

    El PayIn es el método del NeoBank API para ingresarle fondos a un wallet específico. Es una llamada sencilla que carga la información del walletId al que se le quieren cargar fondos, el monto a acreditarse al wallet en centavos, el código numérico de la moneda de acuerdo al ISO 4217 y una descripción de dicha transacción.

    
    {
        "walletIdTo": "string",
        "amount": 0,
        "currency": "string",
        "statement": "string"
    }
    
                            

    La respuesta exitosa de dicha llamada carga además de la información brindada, un timestamp con la fecha de ejecución de dicha transacción y un identificador único de la transacción que permite recuperar la información asociada a la misma con la llamada GET.

    
    {
        "id": "string",
        "walletIdTo": "string",
        "amount": 0,
        "currency": "string",
        "statement": "string",
        "creationDate": "2022-07-20T20:47:04.060Z"
    }
    
                            

    En caso de no encontrar registro del walletId enviado en la llamada, el NeoBank API responderá con un error 400:

    
    {
        "type": "Decoding body",
        "title": "Error",
        "status": 422,
        "detail": "Wallet not found",
        "instance": ""
    }
    
                            

    De manera similar, el NeoBank API responderá con el mismo error en caso de tratarse de un walletId asociado a un usuario bloqueado. Se recomienda hacer una verificación de status del usuario asociado al walletId al que se le quiere acreditar fondos previamente a la llamada PayIn POST.

    Los PayIns se deben hacer siempre en la misma moneda parametrizada en la creación del wallet, en caso de encontrar una discrepancia en monedas, el NeoBank API responderá con el siguiente error 400:

    
    {
        "type": "",
        "title": "currency code does not match target walletId",
        "status": 0,
        "detail": "",
        "instance": ""
    }
    
                            
  • Payin GET

    La llamada GET para un PayIn permite acceder a la información relacionada a un transactionId específico. La respuesta exitosa de dicha llamada carga la siguiente estructura.

    
    {
        "data": [
            {
                "id": "string",
                "walletIdTo": "string",
                "amount": 0,
                "currency": "string",
                "statement": "string",
                "creationDate": "2022-07-20T20:47:04.056Z"
            }
        ]
    }
    
                            

    El NeoBank API responderá con un error 400 en caso de tratarse de un id de transacción incorrecto o de un id de transacción no relacionado a un PayIn.

  • PayOut POST

    El PayOut es un método para debitar fondos disponibles en un wallet específico. A diferencia de una transferencia, la utilización de este método elimina la existencia de los fondos del NeoBank API. Este método debe estar asociado a una operación contable que requiera dicha llamada.

    
    {
            "walletIdFrom": "string",
            "amount": 0,
            "currency": "string",
            "statement": "string"
    }
    
                            

    Similar al PayIn, la respuesta exitosa regresará los datos ingresados acompañados de un identificador único de la transacción y el timestamp de la misma.

    
    {
            "id": "string",
            "walletIdFrom": "string",
            "amount": 0,
            "currency": "string",
            "statement": "string",
            "creationDate": "2022-07-20T20:47:04.060Z"
    }
    
                            

    En caso de no encontrar registro del walletId enviado en la llamada, el NeoBank API responderá con un error 400:

    
    {
        "type": "Decoding body",
        "title": "Error",
        "status": 422,
        "detail": "Wallet not found",
        "instance": ""
    }
    
                            

    De manera similar, el NeoBank API responderá con el mismo error en caso de tratarse de un walletId asociado a un usuario bloqueado. Se recomienda hacer una verificación de status del usuario asociado al walletId al que se le quiere acreditar fondos previamente a la llamada PayOut POST.

    Los PayOuts se deben hacer siempre en la misma moneda parametrizada en la creación del wallet, en caso de encontrar una discrepancia en monedas, el NeoBank API responderá con el siguiente error 400:

    
    {
        "type": "",
        "title": "currency code does not match target walletId",
        "status": 0,
        "detail": "",
        "instance": ""
    }
    
                            

    De igual forma, la llamada fallará con un error descriptivo 400 en caso de que los fondos del wallet a debitar sean insuficientes.

  • PayOut GET

    La llamada GET para un PayOut permite acceder a la información relacionada a un transactionId específico. La respuesta exitosa de dicha llamada carga la siguiente estructura:

    
    {
        "data": [
            {
                "id": "string",
                "walletIdTo": "string",
                "amount": 0,
                "currency": "string",
                "statement": "string",
                "creationDate": "2022-07-20T20:47:04.056Z"
            }
        ]
    }
    
                            

    El NeoBank API responderá con un error 400 en caso de tratarse de un id de transacción incorrecto o de un id de transacción que no esté relacionado a un PayOut.

  • Transfer POST

    Para realizar transacciones dentro del ambiente del NeoBank API entre dos wallets previamente creadas, se debe emplear la llamada de Transfer POST que cuenta con la siguiente estructura:

    
    {
            "walletIdFrom": "string",
            "walletIdTo": "string",
            "amount": 0,
            "currency": "string",
            "statement": "string"
    }
    
                            

    En esta llamada se deben especificar principalmente el walletId desde el cual se envían los fondos y el walletId hacia el cual se envían los fondos. El campo de “currency” debe cargar el código numérico de la moneda asociada a ambos wallets siguiendo el estándar del ISO 4217.

    El NeoBank API no gestiona conversiones de moneda, por lo que es necesario considerar que ambas wallets deben estar configuradas bajo la misma moneda.

    El monto ingresado en el campo de “amount” debe estar en centavos siguiendo el estándar de las demás llamadas del NeoBank API.

    El campo de statement permite ingresar una descripción de dicha transacción para referencia futura y visualización en front end.

    La respuesta exitosa de esta llamada cargar un identificador único de la transacción y el timestamp de aceptación de la misma.

    
    {
            "id": "string",
            "walletIdFrom": "string",
            "walletIdTo": "string",
            "amount": 0,
            "currency": "string",
            "statement": "string"
            "creationDate": "2022-07-22T15:54:08.059Z"
    }
    
                            

    En caso de existir algún error en la llamada, el NeoBank API responderá con un error 400.

    Comúnmente, la llamada fallará si los walletIds involucrados en la transacción pertenecen a un userId inactivo, es decir que mantenga su atributo “isActive” como false.

    De igual manera, la llamada fallará siempre que el walletIdFrom no mantenga el saldo adecuado para cubrir la transacción o cuando el código de currency de ambas wallets no sea el mismo de la llamada transfer POST.

  • Transfer GET

    La llamada GET para una transferencia entre wallets permite acceder a la información relacionada a un transactionId específico. La respuesta exitosa de dicha llamada carga la siguiente estructura:

    
    {
        "data": [
            {
                "id": "string",
                "walletIdFrom": "string",
                "walletIdTo": "string",
                "amount": 0,
                "currency": "string",
                "statement": "string",
                "creationDate": "2022-07-22T16:07:33.092Z"
            }
        ]
    }
    
                            

    El NeoBank API responderá con un error 400 en caso de tratarse de un id de transacción incorrecto o de un id de transacción que no esté relacionado a una transferencia.

Cards

El NeoBank API cuenta con llamados diferenciados para la creación de tarjetas de débito y prepago. Por medio de estas llamadas es posible crear una tarjeta física o virtual para un userId existente vinculada al saldo disponible en un walletId específico de dicho usuario.

Todas las tarjetas se crean utilizando un código de parametrización único para cada producto de tarjeta que debe ser previamente solicitado al equipo de integración de PayCaddy.

La creación de una tarjeta empieza con la llamada post debitCard POST o prepaidCard POST dependiendo del servicio de emisión adquirido.

Es importante tener en cuenta el tipo de usuario para el cual la tarjeta ha sido parametrizada. Las tarjetas parametrizadas para personas naturales solamente se podrán crear asociándolas a userIds que representen EndUsers, mientras que las parametrizadas para personas jurídicas solamente se prodrán crear asociándolas a MerchantUsers.

Una vez se le haya otorgado un code de creación de tarjeta, podrá empezar a probar la creación de tarjetas en ambiente de pruebas.

  • debitCard POST

    La llamada de creación de tarjetas de débito mantiene la siguiente estructura:

    
    {
        "userId": "string",
        "walletId": "string",
        "physicalCard": true,
        "code": "string"
    }
    
                            

    Donde en cada llamado se incluye el userId al que se le debe asociar la tarjeta y el walletId con cuyo saldo la tarjeta estará transaccionando. El campo de physicalCard indica si se trata de una tarjeta que deba imprimirse en físico true o en su defecto, una tarjeta exclusivamente digital false.

    Los datos de la impresión de la tarjeta se extraen de los campos almacenados en la creación del usuario, por lo que es importante visualizar que las tarjetas se imprimen tomando en cuenta los campos de FirstName y LastName en el caso de personas naturales y RegisteredName en el caso de personas jurídicas. Es esencial asegurar la integridad de dichos campos en el flujo de creación de usuario, incluyendo las limitantes de caracteres, ya que el mismo afecta el subsecuente flujo de creación de tarjeta.

    El code enviado en la llamada debe ser provisto por el equipo de PayCaddy para cada tipo y variación de tarjeta que se incluya en el proyecto de habilitación, es decir, para un proyecto que habilite emisión de una tarjeta de débito virtual o física para personas naturales, se otorgarían 2 códigos distintos, uno para física de endUser y uno para virtual de endUser. Es responsabilidad del cliente invocar los llamados correctamente tomando en consideración el tipo de usuario y la condición de impresión asociada al código brindado.

    La respuesta exitosa del llamado de creación de tarjeta de débito devuelve un mensaje 200 que carga el identificador único de la tarjeta que debe ser utilizado en todas las llamadas de operaciones de tarjeta (ver cardOperations)

    
    {
            "id": "string",
            "userId": "string",
            "walletId": "string",
            "physicalCard": true,
            "code": "string"
            "isActive": true,
            "status": "string",
            "creationDate": "2022-08-01T19:37:50.392Z",
            "dueDate": 0
    }
    
                            

    Además del cardId, la respuesta 200 brinda también un booleano que indica si la tarjeta está operativa o no y un campo de status que describe el estado de la tarjeta.

    PendingAck - Para tarjetas físicas recién creadas que no hayan sido activadas. (ver AckReception POST)
    Temporarilyblocked - Para los bloqueos autogestionables. (ver UnblockCard POST)
    Cancel - Para las tarjetas canceladas (ver CancelCard POST)
    Active - Para las tarjetas activas

    Los datos sensitivos de la tarjeta (PAN y CVV) se pueden consultar haciendo uso de las llamadas checkPan POST y checkCvv POST, sin embargo es importante destacar que dichos datos NO se deben almacenar en bases de datos ya que implican requerimientos de ciberseguridad asociados con la norma PCI que han sido abstraídos con el uso del cardId en el NeoBank API.

    La fecha de caducidad de la tarjeta se presenta dentro de la respuesta exitosa de la llamada de creación de tarjeta en el campo dueDate siguiendo el formato YYYYMM.

    En caso de encontrarse algún error o inconsistencia con los datos brindados, el API responderá con un error 400 descriptivo de uno de los posibles motivos más comunes:

    • El userId al que se desea asociar la tarjeta no existe o se halla inactivo.
    • El walletId al que se desea asociar la tarjeta no existe o no pertenece al usuario ingresado.
    • El código provisto en la llamada no concuerda con el tipo de usuario al que se le desea asociar dicha tarjeta.
    • El código provisto en la llamada no concuerda con el tipo de tarjeta (virtual o física) que se está intentando crear.

    Es importante destacar que los reintentos en caso de errores deben gestionarse de forma responsable, es decir, creando límites de tiempo de por lo menos 5 segundos antes del reintento y limitando el número de reintentos a 3.

  • debitCard GET

    La llamada GET para las tarjetas de débito permite consultar los datos de una tarjeta en base a un cardId.

    
    {
        "data": [
            {
                "id": "string",
                "userId": "string",
                "walletId": "string",
                "physicalCard": true,
                "code": "string"
                "isActive": true,
                "status": "string",
                "creationDate": "2022-08-01T21:57:16.932Z",
                "dueDate": 0
            }
        ]
    }
    
                            

    Esta llamada se hace especialmente necesaria en la gestión de status de transaccionabilidad de la tarjeta ya que la respuesta exitosa carga de igual forma el booleano de actividad isActive y el campo descriptivo de status, además de los demás campos de la respuesta exitosa de creación de la tarjeta.

    En caso de enviarse un cardId inexistente, el NeoBank API responderá con un error 400. En caso de encontrarse con un error 500, reportar el incidente al equipo de soporte de PayCaddy.

  • PrepaidCard POST

    La llamada de creación de tarjetas prepago mantiene la siguiente estructura:

    
    {
        "userId": "string",
        "walletId": "string",
        "physicalCard": true,
        "code": "string"
    }
    
                            

    Donde en cada llamado se incluye el userId al que se le debe asociar la tarjeta y el walletId con cuyo saldo la tarjeta estará transaccionando. El campo de physicalCard indica si se trata de una tarjeta que deba imprimirse en físico true o en su defecto, una tarjeta exclusivamente digital false.

    Los datos de la impresión de la tarjeta se extraen de los campos almacenados en la creación del usuario, por lo que es importante visualizar que las tarjetas se imprimen tomando en cuenta los campos de FirstName y LastName en el caso de personas naturales y RegisteredName en el caso de personas jurídicas. Es esencial asegurar la integridad de dichos campos en el flujo de creación de usuario, incluyendo las limitantes de caracteres, ya que el mismo afecta el subsecuente flujo de creación de tarjeta.

    El code enviado en la llamada debe ser provisto por el equipo de PayCaddy para cada tipo y variación de tarjeta que se incluya en el proyecto de habilitación, es decir, para un proyecto que habilite emisión de una tarjeta de débito virtual o física para personas naturales, se otorgarían 2 códigos distintos, uno para física de endUser y uno para virtual de endUser. Es responsabilidad del cliente invocar los llamados correctamente tomando en consideración el tipo de usuario y la condición de impresión asociada al código brindado.

    La respuesta exitosa del llamado de creación de tarjeta de débito devuelve un mensaje 200 que carga el identificador único de la tarjeta que debe ser utilizado en todas las llamadas de operaciones de tarjeta (ver cardOperations)

    
    {
            "id": "string",
            "userId": "string",
            "walletId": "string",
            "physicalCard": true,
            "code": "string"
            "isActive": true,
            "status": "string",
            "creationDate": "2022-08-01T19:37:50.392Z",
            "dueDate": 0
    }
    
                            

    Además del cardId, la respuesta 200 brinda también un booleano que indica si la tarjeta está operativa o no y un campo de status que describe el estado de la tarjeta.

    PendingAck - Para tarjetas físicas recién creadas que no hayan sido activadas. (ver AckReception POST)
    Temporarilyblocked - Para los bloqueos autogestionables. (ver UnblockCard POST)
    Cancel - Para las tarjetas canceladas (ver CancelCard POST)
    Active - Para las tarjetas activas

    Los datos sensitivos de la tarjeta (PAN y CVV) se pueden consultar haciendo uso de las llamadas checkPan POST y checkCvv POST, sin embargo es importante destacar que dichos datos NO se deben almacenar en bases de datos ya que implican requerimientos de ciberseguridad asociados con la norma PCI que han sido abstraídos con el uso del cardId en el NeoBank API.

    La fecha de caducidad de la tarjeta se presenta dentro de la respuesta exitosa de la llamada de creación de tarjeta en el campo dueDate siguiendo el formato YYYYMM.

    En caso de encontrarse algún error o inconsistencia con los datos brindados, el API responderá con un error 400 descriptivo de uno de los posibles motivos más comunes:

    • El userId al que se desea asociar la tarjeta no existe o se halla inactivo.
    • El walletId al que se desea asociar la tarjeta no existe o no pertenece al usuario ingresado.
    • El código provisto en la llamada no concuerda con el tipo de usuario al que se le desea asociar dicha tarjeta.
    • El código provisto en la llamada no concuerda con el tipo de tarjeta (virtual o física) que se está intentando crear.

    Es importante destacar que los reintentos en caso de errores deben gestionarse de forma responsable, es decir, creando límites de tiempo de por lo menos 5 segundos antes del reintento y limitando el número de reintentos a 3.

  • PrepaidCard GET

    La llamada GET para las tarjetas de prepago permite consultar los datos de una tarjeta en base a un cardId.

    
    {
        "data": [
            {
                "id": "string",
                "userId": "string",
                "walletId": "string",
                "physicalCard": true,
                "code": "string"
                "isActive": true,
                "status": "string",
                "creationDate": "2022-08-01T21:57:16.932Z",
                "dueDate": 0
            }
        ]
    }
    
                            

    Esta llamada se hace especialmente necesaria en la gestión de status de transaccionabilidad de la tarjeta ya que la respuesta exitosa carga de igual forma el booleano de actividad isActive y el campo descriptivo de status, además de los demás campos de la respuesta exitosa de creación de la tarjeta.

    En caso de enviarse un cardId inexistente, el NeoBank API responderá con un error 400. En caso de encontrarse con un error 500, reportar el incidente al equipo de soporte de PayCaddy.

Card Operations

Luego de la creación de una tarjeta, el NeoBank API cuenta con una serie de endpoints que permiten autogestionar el uso del medio de pago. Estos flujos se consideran parte de las operaciones de tarjeta y habilitan el control del status de actividad de la tarjeta, la consulta de los datos sensitivos de la misma bien como el control del PIN para retiros en ATM. Todos los llamados al API detallados en esta sección se hacen exclusivamente utilizando el identificador único de la tarjeta o cardId obtenido de la respuesta exitosa del llamado de creación de tarjeta.

  • ackReception POST (exclusivo para tarjetas físicas)

    Como medida de seguridad en el proceso logístico de entrega de los plásticos físicos, por defecto, todas las tarjetas físicas creadas en el NeoBank API nacen inactivas. Esto se ve reflejado en los campos “isActive” y “status” de las respuestas exitosas de creación de dichas tarjetas, al igual que al realizar una llamada GET para debitCards o prepaidCards (ver debitCard GET y prepaidCard GET).

    
    {
            "id": "string",
            "userId": "string",
            "walletId": "string",
            "physicalCard": true,
            "code": "string"
            "isActive": false,
            "status": "pendingAck",
            "creationDate": "2022-08-01T19:37:50.392Z",
            "dueDate": 0
    }
    
                            

    Con la frecuencia de una vez al día en una hora de corte se envían todas las tarjetas físicas creadas en el ciclo a la planta de impresión. La llamada de ackReception POST no devolverá una respuesta exitosa hasta que se haya cumplido con el procedimiento de impresión de la tarjeta solicitada, por lo que es una llamada que debe ser realizada exclusivamente con la tarjeta impresa en manos o 48 horas después de la respuesta exitosa de creación de la tarjeta.

    El objetivo de esta llamada es permitir que la tarjeta sea entregada al tarjetahabiente de forma inactiva esperando una validación de recepción de parte del mismo al tener la tarjeta en manos. La validación de tarjeta-en-manos debe ser gestionada haciendo una comparación entre datos ingresados por el tarjetahabiente (como por ejemplo un rango del PAN o el CVV) con el resultado de las llamadas que se consumen para obtener dichos datos sensitivos (ver checkPan POST y checkCvv POST), luego de lo cual, si los datos ingresados coinciden, se procede a realizar la llamada ackReception POST que activa la tarjeta por primera vez simplemente enviando en la llamada el cardId de la tarjeta a activarse.

    
    //Request
        {
            "cardId": "string"
        }
                            

    La respuesta exitosa al llamado simplemente replica el cardId ingresado. En caso de encontrarse con un error 500, contactar al equipo de soporte de PayCaddy con los detalles del caso.

  • checkPan POST

    Esta llamada permite acceder a los datos sensitivos del número de la tarjeta y también la fecha de expiración de la misma. Las respuestas de este llamado no se deben guardar en bases de datos por razones de seguridad.

    
    //Request
        {
            "cardId": "string"
        }
                            

    A menos que el cardId ingresado esté incorrecto, el NeoBank API responderá con un mensaje de éxito 200 con la siguiente estructura:

    
    {
        "cardId": "string",
        "PAN": "string",
        "expDate": 0
    }
                            

    En caso de encontrarse con un error 500, contactar al equipo de soporte de PayCaddy con los detalles del caso.

  • checkCvv POST

    Esta llamada permite acceder a los datos sensitivos del CVV de la tarjeta. Las respuestas de este llamado no se deben guardar en bases de datos por razones de seguridad.

    
    //Request
        {
            "cardId": "string"
        }
                            

    A menos que el cardId ingresado esté incorrecto, el NeoBank API responderá con un mensaje de éxito 200 con la siguiente estructura:

    
    {
        "cardId": "string",
        "cvv": "string"
    }
                            

    En caso de encontrarse con un error 500, contactar al equipo de soporte de PayCaddy con los detalles del caso.

  • blockCard POST

    Esta llamada permite cambiar de forma autogestionable el status de actividad de la tarjeta. Esta llamada afecta de forma directa el booleano isActive transformándolo en false a partir de un llamado que carga sencillamente el cardId.

    
    //Request
        {
            "cardId": "string"
        }
                            

    A menos que el cardId ingresado esté incorrecto, el NeoBank API responderá con un mensaje de éxito 200 con la siguiente estructura:

    
    {
        "cardId": "string",
        "isActive": false
    }
                            

    El NeoBank API pudiera responder con un error descriptivo 400 en caso de tratarse de un intento de bloqueo de una tarjeta que ya se encuentre bloqueada previamente. En caso de encontrarse con un error 500, contactar al equipo de soporte de PayCaddy con los detalles del caso.

  • unblockCard POST

    Esta llamada permite cambiar de forma autogestionable el status de actividad de la tarjeta. Esta llamada afecta de forma directa el booleano isActive transformándolo en true a partir de un llamado que carga sencillamente el cardId.

    
    //Request
        {
            "cardId": "string"
        }
                            

    A menos que el cardId ingresado esté incorrecto, el NeoBank API responderá con un mensaje de éxito 200 con la siguiente estructura:

    
    {
        "cardId": "string",
        "isActive": true
    }
                            

    El NeoBank API pudiera responder con un error descriptivo 400 en caso de tratarse de un intento de bloqueo de una tarjeta que ya se encuentre bloqueada previamente. En caso de encontrarse con un error 500, contactar al equipo de soporte de PayCaddy con los detalles del caso.

  • checkPin POST

    Esta llamada permite acceder a los datos sensitivos del PIN de la tarjeta, requerido en todos los retiros ATM y en TPVs de algunas zonas geográficas. Las respuestas de este llamado no se deben guardar en bases de datos por razones de seguridad.

    
    //Request
        {
            "cardId": "string"
        }
                            

    A menos que el cardId ingresado esté incorrecto, el NeoBank API responderá con un mensaje de éxito 200 con la siguiente estructura:

    
    {
        "cardId": "string",
        "pin": "string"
    }
                            

    En caso de encontrarse con un error 500, contactar al equipo de soporte de PayCaddy con los detalles del caso.

  • unblockPin POST

    Esta llamada permite reactivar el PIN de una tarjeta luego de que ocurra un bloqueo de seguridad luego de 3 intentos erróneos. El número total de intentos erróneos aceptable antes del bloqueo de seguridad es un parámetro que puede ser discutido en la fase de definición de alcance de proyecto específicamente para perfiles de tarjeta personalizados.

    
    //Request
        {
            "cardId": "string",
            "pin": "string"
        }
                            

    A menos que el cardId ingresado esté incorrecto, el NeoBank API responderá con un mensaje de éxito 200 con la siguiente estructura:

    
    {
        "cardId": "string",
        "pin": "string"
    }
                            

    En caso de encontrarse con un error 500, contactar al equipo de soporte de PayCaddy con los detalles del caso.

  • changePin POST

    Esta llamada permite gestionar los datos sensitivos del PIN de la tarjeta, requerido en todos los retiros ATM y en TPVs de algunas zonas geográficas. La llamada está diseñada para asignar un PIN de 4 dígitos especificado por el usuario. Las respuestas de este llamado no se deben guardar en bases de datos por razones de seguridad.

    
    //Request
        {
            "cardId": "string",
            "pin": "string"
        }
                            

    A menos que el cardId ingresado esté incorrecto, el NeoBank API responderá con un mensaje de éxito 200 con la siguiente estructura:

    
    {
        "cardId": "string",
        "pin": "string"
    }
                            

    El NeoBank API pudiera responder con un error descriptivo 400 en caso de enviarse un PIN que no respete el formato de envío de 4 dígitos numéricos. En caso de encontrarse con un error 500, contactar al equipo de soporte de PayCaddy con los detalles del caso.

  • cancelCard POST

    Esta llamada permite cancelar de forma permanente una tarjeta previamente creada. Esta llamada afecta de forma directa el booleano isActive transformándolo en false y el campo de status a partir de un llamado que carga sencillamente el cardId.

    
    //Request
        {
            "cardId": "string"
        }
                            

    A menos que el cardId ingresado esté incorrecto, el NeoBank API responderá con un mensaje de éxito 200 con la siguiente estructura:

    
    {
        "cardId": "string",
        "isActive": false
    }
                            

    El NeoBank API pudiera responder con un error descriptivo 400 en caso de enviarse un PIN que no respete el formato de envío de 4 dígitos numéricos. En caso de encontrarse con un error 500, contactar al equipo de soporte de PayCaddy con los detalles del caso.

Gestión de Transacciones

Las transacciones generadas en la red Mastercard por tarjetas creadas en el NeoBank API se detallan en notificaciones via webhook que se deben almacenar en una base de datos para que sean consumidas en un módulo de gestión de transacciones. Dichas notificaciones se envían a una URL dedicada compartida con el equipo de PayCaddy consumiendo el endpoint de NotificationsEnlist POST.

La estructura de esta llamada se detalla a continuación:


{
    "URL": "string",
    "Password": false
}
                        

El propósito de esta llamada es específicamente la asignación de una URL de recepción de webhooks y un password de seguridad que garantice que las notificaciones recibidas en la dirección asignada sean legítimas y genuinas.

Durante la integración, una vez realizada exitosamente la llamada de NotificationEnlist POST, una prueba debe ser gestionada con el equipo de integración de PayCaddy para verificar la recepción exitosa de los payloads de transacciones.

Cada vez que una tarjeta emitida en el NeoBank API realice una transacción en la red Mastercard, se enviará un payload como el ejemplo descrito a continuación a la URL enlistada:


{
    "password": password,
    "c1Tipo": "PeticionAutorizacion",
    "c2CardId": cardId,
    "c3CodigoProceso": "000000",
    "c4ImporteTransaccion": "000000001617",
    "c7FechaHoraTransaccion": "20220429052901",
    "c11NumeroIdentificativoTransaccion": "000004339",
    "c18CodigoActividadEstablecimiento": "5999",
    "c19CodigoPaisAdquirente": "442",
    "c38NumeroAutorizacion": "040031",
    "c41TerminalId": "00227759",
    "c42Comercio": "227759000156182",
    "c43IdentificadorComercio": "AMZN Mktp ES             Amazon.ES",
}
                        

La lectura correcta de los campos enviados en este payload permiten la gestión del módulo de transacciones y lo que se presenta como historial de movimientos a los usuarios finales.

Cabe destacar como aclaración que las notificaciones cargarán solamente las transacciones realizadas en la red de Mastercard, es decir, los movimientos y transacciones gestionadas directamente en el NeoBank API (ver PayIns, PayOuts y Transfers) no generarán notificaciones en la URL enlistada y deben ser manejados en una base de datos que alimente el módulo de gestión de transacciones.

Para la lista de todos los endpoints vamos a estar updating este Swagger que utilizamos como la libreria de endpoints: https://int.api.paycaddy.dev/openapi/index.html

  •     Estructura de entidades
  • Data Dictionary    

Data Dictionary

User

EndUser POST Call
Field Value Type Descripción Adicional
“firstName” string Variable para enviar el nombre del usuario que está siendo creado
“lastName” string Variable para enviar el apellido del usuario que está siendo creado
“email” string Variable para enviar el apellido del usuario que está siendo creado Es importante notar que nosotros no comprobamos la validez del email y esto queda como responsabilidad del cliente pasarnos solamente información verídica
“placeOfWork” string Variable para enviar el apellido del usuario que está siendo creado
“pep” bool Variable para enviar si el usuario es una persona que está expuesta políticamente. Ej: “true” si lo es o “False” si no lo es
“salary” integer Variable para enviar el salario declarado por el usuario que está siendo creado
“address” object Un objeto relleno de campos que son strings para enviar la información requerida dentro del objeto

"address": {
"addressLine1": "string",
"addressLine2": "string",
"city": "string",
"region": "string",
"postalCode": "string",
"country": "string"
},
EndUser POST Response (200)
Field Value Type Descripción Adicional
“id” string Devuelve un alfanumérico con el identificador único del usuario.
“firstName” string Devuelve variable con el valor del nombre del usuario que fue creado.
“lastName” string Devuelve variable con el valor del apellido del usuario que fue creado.
“email” string Devuelve variable con el valor del email del usuario que fue creado.
“placeOfWork” string Devuelve variable con el valor del lugar de trabajo reportado por el usuario.
“pep” bool Devuelve variable con el valor de pep reportado por el usuario Ej: “true” o “false”
“salary” integer Devuelve variable con el valor del salario reportado por el usuario
“address” object Devuelve un objeto relleno de campos que son strings con la información enviada dentro del objeto

"address": {
"addressLine1": "string",
"addressLine2": "string",
"city": "string",
"region": "string",
"postalCode": "string",
"country": "string"
},
“isActive” bool Devuelve un booleano con el estatus de la cuenta “true” si ya esta activa o “false” si el usuario no ha pasado el KYC.
“walletId” string Devuelve un string con el ID del cliente
“kycUrl” string Devuelve un string con un link de KYC que el usuario debe de completar para darse de alta.
“creationDate” string Devuelve un string con la fecha. Por ejemplo: “2021-12-02T15:42:54.9300704+00:00”
EndUser GET Call
Field Value Type Descripción Adicional
“id” string Envia en la variable el identificador único del usuario que se quiere consultar su info.
EndUser GET Response (200)
Field Value Type Descripción Adicional
“id” string Devuelve un alfanumérico con el identificador único del usuario
“firstName” string Devuelve variable con el valor del nombre del usuario que fue creado.
“lastName” string Devuelve variable con el valor del apellido del usuario que fue creado.
“email” string Devuelve variable con el valor del email del usuario que fue creado.
“placeOfWork” string Devuelve variable con el valor del lugar de trabajo reportado por el usuario.
“pep” bool Devuelve variable con el valor de pep reportado por el usuario Ej: “true” o “false”
“salary” integer Devuelve variable con el valor del salario reportado por el usuario
“address” object Devuelve un objeto relleno de campos que son strings con la información enviada dentro del objeto

"address": {
"addressLine1": "string",
"addressLine2": "string",
"city": "string",
"region": "string",
"postalCode": "string",
"country": "string"
},
“isActive” bool Devuelve un booleano con el estatus de la cuenta “true” si ya esta activa o “false” si el usuario no ha pasado el KYC.
“walletId” string Devuelve un string con el ID del cliente
“kycObj” string Devuelve un objeto que contiene todos los campos con la información de la validación de la identidad. EJ: Link al kycObj.json
“creationDate” string Devuelve un string con la fecha. Por ejemplo: “2021-12-02T15:42:54.9300704+00:00”
  •     Flujos
  • Merchant    

Data Dictionary

Merchant

MerchantUser POST Call
Field Value Type Descripción Adicional
“email” string Variable para enviar el email del merchant que está siendo creado
“registeredName” string Variable para enviar el nombre registrado del merchant que está siendo creado
“numOfRegistration” string Variable para enviar el número de registro del merchant que está siendo creado Es importante notar que nosotros no comprobamos la validez del email y esto queda como responsabilidad del cliente pasarnos solamente información verídica.
“ruc” string Variable para enviar el RUC del merchant que está siendo creado
“kindOfBusiness” string Variable para enviar la categoría del merchant que está siendo creado:
“telephone” string Variable para enviar el teléfono del merchant que está siendo creado
“address” object Un objeto relleno de campos que son strings para enviar la información requerida dentro del objeto

"address": {
"addressLine1": "string",
"addressLine2": "string",
"city": "string",
"region": "string",
"postalCode": "string",
"country": "string"
},
“walletId” string Devuelve un string con el ID del cliente.
“kycObj” object Devuelve un objeto que contiene todos los campos con la información de la validación de la identidad. EJ: Link al kycObj.json
MerchantUser POST Response (200)
Field Value Type Descripción Adicional
“id” string Variable con el identificador único merchant creado.
“email” string Variable para enviar el email del merchant creado.
registeredName string Variable para enviar el nombre registrado del merchant que está siendo creado.
“pep” bool Devuelve variable con el valor de pep reportado por el usuario Ej: “true” o “false”
numOfRegistration integer Variable para enviar el número de registro del merchant que está siendo creado. Es importante notar que nosotros no comprobamos la validez del email y esto queda como responsabilidad del cliente pasarnos solamente información verídica.
ruc string Variable para enviar el RUC del merchant que está siendo creado.
kindOfBusiness string Variable para enviar la categoría del merchant que está siendo creado.
telephone string Variable para enviar el teléfono del merchant que está siendo creado.
“address” object Un objeto relleno de campos que son strings para enviar la información requerida dentro del objeto

"address": {
"addressLine1": "string",
"addressLine2": "string",
"city": "string",
"region": "string",
"postalCode": "string",
"country": "string"
},
“isActive” boolean Variable booleana que indica si la cuenta está activa o no. “isActive” : “true”.
“walletId” string Identificador del wallet principal de ese merchant. (El merchant puede tener más wallets haciendo el llamado de create wallet.)
“creationDate” date (ISO 8601) Variable de tipo date que incluye la fecha de la creación del merchant “creationDate” : “2021-12-05T16:14:14.747Z
MerchantUser GET Call
Field Value Type Descripción Adicional
“id” string Envia en la variable el identificador único del usuario que se quiere consultar su info.
MerchantUser GET Response (200)
Field Value Type Descripción Adicional
“id” string Devuelve un alfanumérico con el identificador único del usuario
“email” string Variable para enviar el email del merchant creado.
registeredName string Variable para enviar el nombre registrado del merchant que está siendo creado.
numOfRegistration string Variable para enviar el número de registro del merchant que está siendo creado. Es importante notar que nosotros no comprobamos la validez del email y esto queda como responsabilidad del cliente pasarnos solamente información verídica.
ruc string Variable para enviar el RUC del merchant que está siendo creado.
kindOfBusiness string Variable para enviar la categoría del merchant que está siendo creado.
telephone string Variable para enviar el teléfono del merchant que está siendo creado.
“address” object Devuelve un objeto relleno de campos que son strings con la información enviada dentro del objeto

"address": {
"addressLine1": "string",
"addressLine2": "string",
"city": "string",
"region": "string",
"postalCode": "string",
"country": "string"
},
“isActive” bool Variable booleana que indica si la cuenta está activa o no. “isActive” : “true”
“walletId” string Identificador del wallet principal de ese merchant. (El merchant puede tener más wallets haciendo el llamado de create wallet.)
“creationDate” date (ISO 8601) Variable de tipo date que incluye la fecha de la creación del merchant “creationDate” : “2021-12-05T16:14:14.747Z “
  •     User
  • Wallet    

Data Dictionary

Wallet

Wallet POST Request
Field Value Type Descripción Adicional
userId string Variable con el identificador único del user o merchant que va a ser dueño de este wallet.
currency string Variable con el valor ISO 4217 de la moneda que va a manejar el wallet.
Para dolar seria: “currency” : “USD”.
description string Variable para introducir una descripción corta del wallet.
Ej: “Description” : “ahorros viaje”.
Wallet POST Response (200)
Field Value Type Descripción Adicional
walletId string Variable con el identificador único del wallet creado.
userId string Variable con el identificador único del usuario o merchant asociado al wallet.
currency string Variable con el valor ISO 4217 de la moneda que va a manejar el wallet
Para dolar seria: “currency” : “USD”.
description string Variable para introducir una descripción corta del wallet.
Ej: “Description” : “ahorros viaje”
balance long Variable que contiene el saldo del wallet en centavos
Ej: “Balance” : 100.
creationDate date (ISO 8601) Variable de tipo date que incluye la fecha de la creacion del wallet
“creationDate” : “2021-12-05T16:14:14.747Z “.
Wallet GET Request
Field Value Type Descripción Adicional
walletId string Variable con el identificador único del wallet que se quiere consultar la información.
Wallet GET Response (200)
Field Value Type Descripción Adicional
walletId string Variable con el identificador único del wallet que se quiere consultar la informacion sobre.
userId string Variable con el identificador del usuario o merchant dueño del wallet.
currency string Variable con el valor ISO 4217 de la moneda que va a manejar el wallet
Para dolar seria: “currency” : “USD”.
description string Variable para introducir una descripción corta del wallet.
Ej: “Description” : “ahorros viaje”.
balance long Variable que contiene el saldo del wallet en centavos.
Ej: “Balance” : 100.
creationDate date (ISO 8601) Variable de tipo date que incluye la fecha de la creacion del wallet
“creationDate” : “2021-12-05T16:14:14.747Z “.
Wallet Check Transactions POST Request
Field Value Type Descripción Adicional
walletId string Variable con el identificador único del wallet que se quiere consultar la informacion sobre.
timeStamp date (ISO 8601) Variable de tipo date que incluye la fecha de la última actualización del wallet
“timeStamp” : “2021-12-05T16:14:14.747Z “.
Wallet Check Transactions POST Response (200)
Field Value Type Descripción Adicional
id string Variable con el identificador único de la transacción.
walletIdFrom string Variable con el identificador único del wallet remitente del dinero.
walletIdTo string Variable con el identificador unico del wallet destinatario del dinero *en caso de ser un movimiento P2P.
amount long Variable con la cantidad de dinero que se movió con la transacción.
currency string Iso 4217 con la moneda de la compensación final
“Currency” : 10000”.
statement obj Ver diccionario de notificación en json.
cardId string Identificador único (tokenizado) de una tarjeta.
creationDate date (ISO 8601) Variable de tipo date que incluye la fecha de la última actualización del wallet
“creationDate” : “2021-12-05T16:14:14.747Z “
  •     Merchant
  • Debit Card    

Data Dictionary

Debit Card

DebitCard POST Request
Field Value Type Descripción Adicional
userId string Variable con el identificador único de la transacción.
walletId string Variable con el identificador único del wallet de donde el dinero se debita.
physicalCard bool Variable booleana sobre si la tarjeta va a ser física o no
Ej: “physicalCard” : true.
code string Variable string para enviar el código de la tarjeta. Determina el diseño impreso en el plástico y/o la parametrización específica de la tarjeta virtual.
DebitCard POST Response (200)
Field Value Type Descripción Adicional
cardId string Variable con el identificador único de la tarjeta.
userId string Variable con el identificador único del usuario dueño de la tarjeta.
walletId string Variable con el identificador único del wallet de donde el dinero se debita.
physicalCard bool Variable booleana sobre si la tarjeta va a ser física o no
Ej: “physicalCard” : true.
code string Variable string para enviar el código de la tarjeta. Determina el diseño impreso en el plástico y/o la parametrización específica de la tarjeta virtual.
isActive bool Variable con status de transaccionalidad de la tarjeta.
status string Variable con la descripción del status de la tarjeta.
creationDate date (ISO 8601) Variable de tipo date que incluye la fecha de creación de la tarjeta
“creationDate” : “2021-12-05T16:14:14.747Z “
DebitCard GET Request
Field Value Type Descripción Adicional
cardId string Variable con el identificador único de la tarjeta.
DebitCard GET Response (200)
Field Value Type Descripción Adicional
cardId string Variable con el identificador único de la tarjeta.
userId string Variable con el identificador único del user o merchant dueño de la tarjeta.
walletId string Variable con el identificador del wallet a la cual está asociada la tarjeta.
physicalCard bool Variable booleana que indica si la tarjeta es física o no.
Ej una tarjeta virtual: “physicalCard” : false.
code string Variable string para enviar el código de la tarjeta. Determina el diseño impreso en el plástico y/o la parametrización específica de la tarjeta virtual.
status string Variable que contiene breve descripción en caso de que la tarjeta no pueda operar.
“status” : “PIN Blocked”
isActive bool Variable que booleana que indica si la tarjeta puede operar o no.
creationDate date (ISO 8601) Variable de tipo date que incluye la fecha de creación de la tarjeta
“creationDate” : “2021-12-05T16:14:14.747Z “
  •     Wallet
  • Prepaid Card    

Data Dictionary

Prepaid Card

PrepaidCard POST Request
Field Value Type Descripción Adicional
userId string Variable con el identificador único de la transacción.
walletId string Variable con el identificador único del wallet de donde el dinero se debita.
physicalCard bool Variable booleana sobre si la tarjeta va a ser física o no
Ej: “physicalCard” : true.
code string Variable string para enviar el código de la tarjeta. Determina el diseño impreso en el plástico y/o la parametrización específica de la tarjeta virtual.
PrepaidCard POST Response (200)
Field Value Type Descripción Adicional
id string Variable con el identificador único de la tarjeta.
userId string Variable con el identificador único del usuario dueño de la tarjeta.
walletId string Variable con el identificador único del wallet de donde el dinero se debita.
physicalCard bool Variable booleana sobre si la tarjeta va a ser física o no
Ej: “physicalCard” : true.
code string Variable string para enviar el código de la tarjeta. Determina el diseño impreso en el plástico y/o la parametrización específica de la tarjeta virtual.
cardId string Variable con el identificador único de la tarjeta.
isActive bool Variable con status de transaccionalidad de la tarjeta.
status string Variable con la descripción del status de la tarjeta.
creationDate date (ISO 8601) Variable de tipo date que incluye la fecha de creación de la tarjeta
“creationDate” : “2021-12-05T16:14:14.747Z “
PrepaidCard GET Request
Field Value Type Descripción Adicional
id string Variable con el identificador único de la tarjeta.
PrepaidCard GET Response (200)
Field Value Type Descripción Adicional
id string Variable con el identificador único de la tarjeta.
userId string Variable con el identificador único del user o merchant dueño de la tarjeta.
walletId string Variable con el identificador del wallet a la cual está asociada la tarjeta.
physicalCard bool Variable booleana que indica si la tarjeta es física o no.
Ej una tarjeta virtual: “physicalCard” : false.
code string Variable string para enviar el código de la tarjeta. Determina el diseño impreso en el plástico y/o la parametrización específica de la tarjeta virtual.
cardId string Variable con el identificador único de la tarjeta.
status string Variable que contiene breve descripción en caso de que la tarjeta no pueda operar.
“status” : “PIN Blocked”
isActive bool Variable que booleana que indica si la tarjeta puede operar o no.
creationDate date (ISO 8601) Variable de tipo date que incluye la fecha de creación de la tarjeta
“creationDate” : “2021-12-05T16:14:14.747Z “
  •     Debit Card
  • Card Operations    

Data Dictionary

Card Operations

Ack Reception POST Request
Field Value Type Descripción Adicional
cardId string Variable con el identificador único de la tarjeta.
Ack Reception POST Response (200)
Field Value Type Descripción Adicional
cardId string Variable con el identificador único de la tarjeta.
isActive bool Variable booleana que indica el último estado de la tarjeta.
Ej: la tarjeta fue activada “isActive” : “true”
CheckCVV POST Request
Field Value Type Descripción Adicional
cardId string Variable con el identificador único de la tarjeta.
CheckCVV POST Response (200)
Field Value Type Descripción Adicional
cardId string Variable con el identificador único de la tarjeta.
cvv string Variable con el cvv de la tarjeta. Para evitar necesitar certificaciones PCI esto no deberia ser guardado en ninguna base de datos, solo comunicado de manera segura al cliente.
CheckPAN POST Request
Field Value Type Descripción Adicional
cardId string Variable con el identificador único de la tarjeta.
CheckPAN POST Response (200)
Field Value Type Descripción Adicional
cardId string Variable con el identificador único de la tarjeta.
pan string Variable con el pan de la tarjeta. Para evitar necesitar certificaciones PCI esto no debería ser guardado en ninguna base de datos, solo comunicado de manera segura al cliente.
dueDate string Variable con la fecha de expiración de la tarjeta siguiendo el formato "YYYYMM". Para evitar necesitar certificaciones PCI esto no debería ser guardado en ninguna base de datos, solo comunicado de manera segura al cliente.
CheckPIN POST Request
Field Value Type Descripción Adicional
cardId string Variable con el identificador único de la tarjeta.
CheckPIN POST Response (200)
Field Value Type Descripción Adicional
cardId string Variable con el identificador único de la tarjeta.
pin string Variable con el pin de la tarjeta. Para evitar necesitar certificaciones PCI esto no deberia ser guardado en ninguna base de datos, solo comunicado de manera segura al cliente.
ChangePIN POST Request
Field Value Type Descripción Adicional
cardId string Variable con el identificador único de la tarjeta.
pin string Variable con pin de 4 dígitos que el usuario seleccione (o sea aleatorio)
Ej : “Pin” : “1234”
Para evitar necesitar certificaciones PCI esto no deberia ser guardado en ninguna base de datos, solo comunicado de manera segura al cliente.
ChangePIN POST Response (200)
Field Value Type Descripción Adicional
cardId string Variable con el identificador único de la tarjeta.
pin string Variable con el pin de la tarjeta. Para evitar necesitar certificaciones PCI esto no deberia ser guardado en ninguna base de datos, solo comunicado de manera segura al cliente.
UnblockPIN POST Request
Field Value Type Descripción Adicional
cardId string Variable con el identificador único de la tarjeta.
UnblockPIN POST Response (200)
Field Value Type Descripción Adicional
cardId string Variable con el identificador único de la tarjeta.
pin string Variable con el pin de la tarjeta.
BlockCard POST Request
Field Value Type Descripción Adicional
cardId string Variable con el identificador único de la tarjeta.
BlockCard POST Response (200)
Field Value Type Descripción Adicional
cardId string Variable con el identificador único de la tarjeta.
isActive bool Variable booleano que dice si la tarjeta esta activa o no Ej: al activar la tarjeta
“isActive” : “true”.
UnblockCard POST Request
Field Value Type Descripción Adicional
cardId string Variable con el identificador único de la tarjeta.
UnblockCard POST Response (200)
Field Value Type Descripción Adicional
cardId string Variable con el identificador único de la tarjeta.
isActive bool Variable booleano que dice si la tarjeta esta activa o no Ej: al activar la tarjeta
“isActive” : “true”.
CheckBalance POST Request
Field Value Type Descripción Adicional
cardId string Variable con el identificador único de la tarjeta.
CheckBalance POST Response (200)
Field Value Type Descripción Adicional
cardId string Variable con el identificador único de la tarjeta.
currency bool Variable con el código de la moneda utilizada.
Balance long Variable que devuelve el balance que hay en el wallet asociado con la tarjeta.
  •     DPrepaid Card
  • PayIn    

Data Dictionary

PayIn

Payin POST Request
Field Value Type Descripción Adicional
walletIdTo string Variable con el identificador único del wallet que se está recargando.
amount long Variable que indica la cantidad de dinero que se va a recargar al balance que hay en el wallet asociado con la tarjeta. Este payIn es solamente utilizable cuando el cliente ha pre acordado con anterioridad que se va a utilizar.
En caso de ser utilizado, el cliente es 100% responsable por cualquier autorización que se haga con los montos declarados
currency string Variable con el código de la moneda utilizada.
statement string Variable para enviar una descripción de la razón del pay-In
Ej “Statement” : “cash in wallet”.
Payin POST Response (200)
Field Value Type Descripción Adicional
id string Variable que devuelve el identificador único de esta transacción.
walletIdTo bool Variable con el identificador único del wallet que se está recargando.
amount long Valor que ha sido recargado al wallet.
currency bool Variable con el código de la moneda utilizada.
statement long Variable para enviar una descripción de la razón del pay-In
Ej “Statement” : “cash in wallet”.
creationDate date (ISO 8601) Variable de tipo date que incluye la fecha del payIn
“creationDate” : “2021-12-05T16:14:14.747Z “
Payin GET Request
Field Value Type Descripción Adicional
id string Variable que contiene el identificador único de un payIn.
Payin GET Response (200)
Field Value Type Descripción Adicional
id string Variable que devuelve el identificador único de esta transacción.
walletIdTo string Variable con el identificador único del wallet que se está recargando.
amount long Valor que ha sido recargado al wallet.
currency string Variable con el código de la moneda utilizada.
statement string Variable para enviar una descripción de la razón del pay-In
Ej “Statement” : “cash in wallet”
creationDate date (ISO 8601) Variable de tipo date que incluye la fecha del payIn
“creationDate” : “2021-12-05T16:14:14.747Z”
  •     Card Operations
  • PayOut    

Data Dictionary

PayOut

PayOut POST Request
Field Value Type Descripción Adicional
walletIdFrom string Variable con el identificador único del wallet que se está vaciando.
amount long Variable que indica la cantidad de dinero que se va a retirar al balance que hay en el wallet asociado con la tarjeta. Este endpoint es solamente utilizable cuando el cliente ha pre acordado con anterioridad que se va a utilizar.
En caso de ser utilizado, el cliente es 100% responsable por cualquier autorización que se haga con los montos declarados
currency string Variable con el código de la moneda utilizada.
statement string Variable para enviar una descripción de la razón del pay-out
Ej “Statement” : “cash out wallet”.
PayOut POST Response (200)
Field Value Type Descripción Adicional
id string Variable que devuelve el identificador único de esta transacción.
walletIdTo bool Variable con el identificador único del wallet que se está recargando.
amount long Valor que ha sido recargado al wallet.
currency bool Variable con el código de la moneda utilizada.
statement long Variable para enviar una descripción de la razón del pay-out
Ej “Statement” : “cash out wallet”.
creationDate date (ISO 8601) Variable de tipo date que incluye la fecha de creación de la tarjeta
“creationDate” : “2021-12-05T16:14:14.747Z “
PayOut GET Request
Field Value Type Descripción Adicional
id string Variable que contiene el identificador único de un pay-out.
PayOut GET Response (200)
Field Value Type Descripción Adicional
id string Variable que devuelve el identificador único de esta transacción.
walletIdTo string Variable con el identificador único del wallet que se está recargando.
amount long Valor que ha sido retirado del wallet.
currency string Variable con el código de la moneda utilizada.
statement string Variable para enviar una descripción de la razón del pay-out
Ej “Statement” : “cash in wallet”
creationDate date (ISO 8601) Variable de tipo date que incluye la fecha del pay-out
“creationDate” : “2021-12-05T16:14:14.747Z”
  •     PayIn
  • Transfer    

Data Dictionary

Transfer

Transfer POST Request
Field Value Type Descripción Adicional
walletIdFrom string Variable con el identificador único del wallet de donde se envia el dinero.
walletIdTo string Variable con el identificador único del wallet que está recibiendo el dinero.
amount long Valor a ser transferido entre wallet del wallet.
currency string Variable con el código de la moneda utilizada.
statement string Variable para enviar una descripción de la razón del pay-out
Ej “Statement” : “Pago Pizza”.
Transfer POST Response (200)
Field Value Type Descripción Adicional
id string Variable que devuelve el identificador único de esta transacción.
walletIdFrom string Variable que indica el identificador único del wallet de donde se envió el dinero.
walletIdTo string Variable con el identificador único del wallet que está recibiendo el dinero.
amount long Valor que ha sido recargado al wallet.
currency bool Valor a ser transferido entre wallet del wallet.
statement long Variable para enviar una descripción de la razón del pay-out
Ej “Statement” : “Pago Pizza”.
creationDate date (ISO 8601) Variable de tipo date que incluye la fecha del transfer
“creationDate” : “2021-12-05T16:14:14.747Z “
Transfer GET Request
Field Value Type Descripción Adicional
id string Variable que contiene el identificador único de un transfer.
Transfer GET Response (200)
Field Value Type Descripción Adicional
id string Variable que devuelve el identificador único de la transferencia hecha.
walletIdFrom string Variable que indica el identificador único del wallet de donde se envió el dinero.
walletIdTo string Variable con el identificador único del wallet que está recibiendo el dinero.
amount long Valor a ser transferido entre wallet del wallet.
currency string Variable con el código de la moneda utilizada.
statement string Variable con el identificador único de la tarjeta.
status string Variable para enviar una descripción de la razón del payOut
Ej “Statement” : “Pago Pizza”
creationDate date (ISO 8601) Variable de tipo date que incluye la fecha de creación de la tarjeta
“creationDate” : “2021-12-05T16:14:14.747Z “
  •     PayOut
  • Notification    

Data Dictionary

Notification

NotificationEnlistPOSTrequest
Field Value Type Descripción Adicional
URL string Variable que carga la dirección URL que va a capturar los webhooks.
password long Variable que carga un secreto compartido por las dos partes y que garantiza que los mensajes recibidos con dicho password son legítimos y provenientes de PayCaddy.
NotificationEnlistPOSTresponse
Field Value Type Descripción Adicional
id string Variable única que carga la identificación de la recepción del enlistamiento.
clientId bool Variable que identifica el cliente asociado al enlistamiento.
message string Variable que carga el mensaje de aceptación del enlistamiento.
URL string Variable que carga la dirección URL que va a capturar los webhooks.
creationDate date (ISO 8601) Variable de tipo date que incluye la fecha de la transacción.
“creationDate” : “2021-12-05T16:14:14.747Z “
TransactionEventsPOSTrequest
Field Value Type Descripción Adicional
timeStamp string Variable que contiene la hora de la última actualización del sistema. Debe ingresarse con el formato del ejemplo a continuación: "2022-03-11T15:31:35.619Z".
walletId string Variable que identifica el wallet sobre el cual se desea hacer la consulta.
TransactionEventsPOSTresponse
Field Value Type Descripción Adicional
type string Variable que contiene la descripción del tipo de transacción.
id string Variable que devuelve el identificador único de esta transacción.
walletIdFrom string Variable que identifica el wallet desde el cual se debitaron los fondos de la transferencia.
walletIdTo string Variable que identifica el wallet al cual se acreditaron los fondos de la transferencia.
cardId string Variable que identifica la tarjeta asociada a la transacción.
transaction object Variable que carga una serie de datos sobre la transacción bajo el siguiente formato:

"transaction": {
"c1Tipo": "string",
"c2cardId": "string",
"c3CodigoProceso": "string",
"c4ImporteTransaccion": "string",
"c7FechaHoraTransaccion": "string",
"c11NumeroIdentificativoTransaccion": "string",
"c18CodigoActividadEstablecimiento": "string",
"c19CodigoPaisAdquirente": "string",
"c38NumeroAutorizacion": "string",
"c41TerminalId": "string",
"c42Comercio": "string",
"c43IdentificadorComercio": "string"
},
amount long Variable que contiene la cantidad de dinero de la operación.
currency string Variable con el código de la moneda utilizada.
statement string Variable para enviar una descripción de la razón del pay-out
Ej “Statement” : “cash in wallet”
creationDate date (ISO 8601) Variable de tipo date que incluye la fecha de la transacción.
Notification Code Data Dictionary
Field Value Type Descripción Adicional
c1tipo string Petición de Autorización No Contable (1100)
Es una solicitud de transacción financiera. El prop sito es solicitar la aprobación de una transacción que de ser autorizada debe ser aplicada como saldo autorizado inmediatamente a la cuenta del titular.
Comunicación de autorización No contable (1120/1130)
Es una comunicaci n de una transacción financiera en firme. El prop sito es informar al Centro Autorizador que se ha realizado una autorización en su nombre. Estas operaciones son off-line.
Comunicación de Anulación (1420/1430)
Es una reversión total de la transacción realizada previamente a trav s del proceso de autorización. Generalmente debido a Time-Outs, problemas de entrega de efectivo, tarjeta u otros factores. Incluye las operaciones no económicas dependiendo de cada implantación, derivado del hecho de que haya o no comisión aplicable a la operaci n. En el caso de que haya comisión se debe anular.
c2cardId string Conjunto de dígitos utilizados para identificar la cuenta de la tarjeta del titular.
c4ImporteTransaccion string Importe solicitado por el titular en la moneda de la entidad. Con una longitud máxima de 12 dígitos. El valor está multiplicado según los decimales de la moneda, en sí mismo no tiene decimales.
c7FechaHora Transacción string Fecha de la Transacción, en formato AAMMDDhhmmss.
c11NumeroIdentificativoTransaccion string Identifica el número de operación único enviado al Autorizador Financiero. Con longitud de 9 dígitos.
c18CodigoActividadEstablecimiento string Código de Actividad del comercio de 4 dígitos.
amount long Variable que contiene la cantidad de dinero de la operación.
c19CodigoPaisAdquirente string Código asignado al país donde se produjo la adquisición de la transacción. Código numérico de 3 dígitos según el siguiente estándar del UNSD.
c38NumeroAutorizacion string Número de autorización asignado a la aprobación de la transacción por la institución autorizadora. Contiene una longitud de 6 dígitos.
c41TerminalId string Identificador del Terminal donde se originó la operación. C digo  único que identifica el terminal originario de la operación de una longitud de 8 dígitos.
c42Comercio string Identificador del comercio donde se originó la operación. Usualmente se corresponde con el Código de Comercio (FUC). En el caso de Cajeros es su equivalente para el esquema de intercambio con longitud de 15 dígitos.
c43IdentificadorComercio string Contiene el nombre y localización del comercio con un mensaje alfanumérico de longitud de hasta 50 dígitos.
  •     Transfer