{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"e81fb7a4-6fba-46cd-8fba-826b143c3f55","name":"Ridivi API V5","description":"Colección del API V5 de Ridivi para realizar integración de los servicios del SINPE del Banco Central de Costa Rica.\n\nSitio web: [https://www.ridivi.com/](https://www.ridivi.com/)\n\n\n# 🌐 URL BASE\n\nPara esta API, se definen URL’s según su ambiente de implementación, en la cual al final se incluye la versión del API con un número consecutivo. La versión actual es la 5.\n\n- Ambiente de Desarrollo: [https://apiv5.dev-ridivi.com/v5](https://apiv5.dev-ridivi.com/v5)\n- Ambiente de Producción: [https://api.admin.ridivipay.com/v5](https://api.admin.ridivipay.com/v5)\n    \n\nSe debe utilizar la URL Base en todas las solicitudes que se envíen al API, seguido del nombre del método a utilizar.\n\n# ↗ Estándar de respuestas HTTP\n\nEl API se encuentra estructurado con base en los estándares de respuesta de códigos HTTP, por lo que los endpoints estarán retornando los siguientes códigos HTTP con base en el estado de cada solicitud:\n\n- 200 – Procesado de forma exitosa, con estado de operación o la excepción es controlada.\n- 500 – Error del servidor\n- 409 – Error Validaciones de reglas de negocio\n- 401 – Acceso no autorizado\n- 400 – El cuerpo del request es inválido\n    \n\nPara las respuestas del API de tipo 500, 409, 401 y 400, el API estará retornando un objeto JSON indicando un error con la siguiente estructura:\n\n| **Tipo de campo** | **Descripción** | **Tipo de dato** |\n| --- | --- | --- |\n| **type** | Tipo de error | String |\n| **title** | Nombre del error | String |\n| **code** | Código del error | String |\n| **detail** | Detalle del error | String |\n\n# ⭕ Códigos en respuestas HTTP\n\nA continuación se indican los distiontos tipos de respuesta de error HTTP:\n\n| **Tipo error HTTP** | **code** | **title** | **Observaciones** | **Recomendado para el usuario** |\n| --- | --- | --- | --- | --- |\n| **400** | 136 | The body for this request is incorrect | Este error debe ser controlado desde su área técnica, ya que refiere a una malformación del request | Ha ocurrido un error inesperado comuníquese con el Administrador del Sistema |\n| **401** | 123 | Full authentication is required to access this resource | Este error debe ser controlado desde su área técnica, ya que refiere a que no solicitaron un token para invocar los métodos | Ha ocurrido un error inesperado comuníquese con el Administrador del Sistema |\n| **409** | 100 | Customer id Unautorized |  |  |\n| **409** | 102 | Error connecting with Ridivi Api |  |  |\n| **409** | 115 | Invalid Account |  |  |\n| **409** | 118 | Problem to conect to ccf |  |  |\n| **409** | 122 | Insufficient funds |  |  |\n| **409** | 151 | Card Request dont exist |  |  |\n| **409** | 157 | Card not found |  |  |\n| **409** | 161 | State not valid |  |  |\n| **409** | 162 | person not found |  |  |\n| **409** | 174 | Problem with the user client |  |  |\n| **409** | 176 | Invalid OTP |  |  |\n| **409** | 177 | Expire OTP |  |  |\n| **409** | 178 | The number of OTP try exceeded, please generate a new OTP |  |  |\n| **409** | 179 | The number of cards per type was exceeded |  |  |\n| **409** | 180 | no valid account found |  |  |\n| **409** | 183 | Card not assigned |  |  |\n| **409** | 184 | no valid card type |  |  |\n| **409** | 185 | The card must be blocked to unlock |  |  |\n| **409** | 186 | The client is block |  |  |\n| **409** | 187 | This card is not virtual |  |  |\n| **409** | 190 | primary account cannot be null |  |  |\n| **409** | 191 | The account does not belong to the user |  |  |\n| **409** | 194 | Error with card provider |  |  |\n| **409** | 195 | Already registered customer |  |  |\n| **409** | 196 | Invalid account name |  |  |\n| **500** | 101 | General Exception | Indica que se generó un inconveniente en el servidor de Ridivi | Ha ocurrido un error inesperado comuníquese con el Administrador del Sistema |\n\n# 📢 Notificaciones de cambio de estado de un Link de Pago\n\nSe ofrece el servicio de Notificaciones de cambio de estado de un Link de Pago, el cual consiste en notificar cuando un link de pago cambie a estado de Vencido o Finalizado por medio de una solicitud a un endpoint por request HTTP POST.\n\nPara utilizar el servicio, se debe cumplir con los siguientes requisitos:\n\n## Requisitos\n1. Punto de acceso (Endpoint) de API REST con método HTTP POST: Endpoint requerido para el envío de solicitudes (request) con los datos de un link de pago.\n    1. **Autenticación**: Se admiten los tipos de autenticación:\n        1. Bearer Token: Se define un **token** en el atributo **Authorization** del tipo **Bearer**, que se define en el **header** del **request**. El mismo no dese ser mayor a 200 caracteres.\n        2. Basic Auth: Se define un **username** y **password** en el atributo **Authorization** del tipo **Basic**, que se define en el **header** del **request**. \n        3. X-API-Key: Se define un **value** para el atributo **X-API-Key**, que se define en el **header** del **request**. \n\n    > Se debe indicar previamente por un medio seguro el tipo de autenticación a utilizar, sus valores y la forma de desencriptarlos, según las políticas de seguridad definidas por la compañía.  \n\n    2. **Estructura de la solicitud**: Se debe poder recibir una solicitud tipo JSON donde se indican los datos del link de pago con su estado.  \n\n    Se indica la estructura de la solicitud de la siguiente forma, con base en los tipos de datos requeridos.\n\n    | **Parámetro**                   | **Tipo de dato** | **Descripción**                                                                     | **Tamaño** | **¿Se requiere?** |\n    | ------------------------------- | ---------------- | ----------------------------------------------------------------------------------- | ---------- |     ----------------- |\n    | **id**                          | String           | Identificador                                                                       | 20         |     Sí                |\n    | **error**                       | Boolean          | Descripción de error                                                                |            |     Sí                |\n    | **urlTermsAndConditions**       | String           | Enlace de términos y condiciones de la entidad que crea el link de pago             | 50         |     Sí                |\n    | **createAt**                    | Bigint           | Fecha de creación del link de pago (Formato Epoch)                                                 | 30         |     Sí                |\n    | **linkPay**                     | String           | Link de pago                                                                        | 100        |     Sí                |\n    | **shortLinkPay**                | String           | Link corto de pago                                                                  | 30         |     Sí                |\n    | **payKey**                      | String           | Llave de Link de pago                                                               | 70         |     Sí                |\n    | **payDtrLoadKey**               | String           | Llave de transacción de DTR con datos cargados previamente                          | 70         |     Sí                |\n    | **payTftLoadKey**               | String           | Llave de transacción de PIN con datos cargados previamente                          | 70         |     Sí                |\n    | **customerIdNumber**            | String           | Número de dentificación del comercio o persona que crea el link de pago             | 20         |     Sí                |\n    | **customerTypeIdNumber**        | String           | Tipo de dentificación del comercio o persona que crea el link de pago               | 1          |     Sí                |\n    | **userClientName**              | String           | Apellidos de la persona o entidad a quien se le crea el link de pago                | 30         |     Sí                |\n    | **userClientLastName**          | String           | Nombre de la persona o entidad a quien se le crea el link de pago                   | 30         |     Sí                |\n    | **userClientIdNumber**          | String           | Número de identificación de la persona o entidad a quien se le crea el link de pago | 20         |     Sí                |\n    | **userClientTypeNumber**        | String           | Tipo de identificación de la persona o entidad a quien se le crea el link de pago   | 1          |     Sí                |\n    | **userClientPhone**             | String           | Número de teléfono de la persona o entidad a quien se le crea el link de pago       | 8          |     Sí                |\n    | **userClientEmail**             | String           | Correo electrónico de la persona o entidad a quien se le crea el link de pago       | 30         |     Sí                |\n    | **dedicatedAccount**            | String           | Cuenta interna o temporal utilizada para el procesamiento del link de pago          | 30         |     Sí                |\n    | **amountPay**                   | Int              | Monto de pago                                                                       | 10         |     Sí                |\n    | **detailPay**                   | String           | Detalle de pago                                                                     | 150        |     Sí                |\n    | **expirationTimePay**           | Int              | Tiempo en minutos para la expiración de pago                                        | 4          |     Sí                |\n    | **statePay**                    | String           | Estado del link de pago                                                             | 15         |     Sí                |\n    | **currencyPay**                 | String           | Moneda de pago                                                                      | 3          |     Sí                |\n    | **accountPay**                  | String           | Cuenta IBAN que procesa el link de pago                                             | 30         |     Sí                |\n    | **mailNotified**                | Boolean          | Envio de comprobante de link de pago por correo                                     |            |     Sí                |\n    | **linkProps**                   | String           | Detalles de personalización del link de pago                                        | 100        |     Sí                |\n    | **expired**                     | Boolean          | Estado de expiración del link de pago                                               |            |     Sí                |\n    | **nameCompleted**               | String           | Nombre completo de la persona o entidad a quien se le crea el link de pago          | 60         |     Sí                |\n    | **invoiceNumber**               | String           | Número de factura                                                                   | 15         |     Sí                |\n    | **sendMailNotification**        | Boolean          | Envío de link de pago por correo                                                    |            |     Sí                |\n    | **sendSmsNotification**         | Boolean          | Envío de SMS por correo                                                             |            |     Sí                |\n    | **massive**                     | Boolean          | Link de pago creado de forma masiva                                                 |            |     Sí                |\n    | **massive_failed**              | String           | Estado de lote masivo de link de pago                                               | 15         |     Sí                |\n    | **detailUse**                   | Int              | Detalle de uso                                                                      | 1          |     Sí                |\n    | **sinpeReference**              | String           | Número de referencia SINPE                                                          | 30         |     Sí                |\n    | **debitNum**                    | Int              | Número de movimiento de débito                                                      | 15         |     Sí                |\n    | **creditNum**                   | Int              | Número de movimiento de crédito                                                     | 15         |     Sí                |\n    | **saveAda**                     | Boolean          | Autorización de cobro recurrente del Link de pago                                   |            |     Sí                |\n    | **numFee**                      | Int              | Número de movimiento correspondiente al costo del servicio                          | 10         |     Sí                |\n    | **amountFee**                   | String           | Monto de costo del servicio                                                         | 10         |     Sí                |\n    | **sendInvoiceNotificationMail** | Boolean          | Envío de comprobante de Link de pago                                                | 10         |     Sí                |\n\n        **Ejemplo**\n\n    ```\n    {\n      \"id\": 2000001,\n      \"error\": false,\n      \"urlTermsAndConditions\": null,\n      \"createAt\": 1741905516363,\n      \"linkPay\": \"https://admin.ridivipay.com/pay/b2a225f771f6672ecbaef9af47692f152b5d92026280aaf5034f184cbc05000\",\n      \"shortLinkPay\": \"https://rlink.site/url/Nf00\",\n      \"payKey\": \"b2a225f771f6672ecbaef9af47692f152b5d92026280aaf5034f184cbc050871\",\n      \"payDtrLoadKey\": null,\n      \"payTftLoadKey\": null,\n      \"customerIdNumber\": \"3101366574\",\n      \"customerTypeIdNumber\": \"3\",\n      \"userClientName\": \"JUAN\",\n      \"userClientLastName\": \"PEREZ PEREZ\",\n      \"userClientIdNumber\": \"102340567\",\n      \"userClientTypeNumber\": \"0\",\n      \"userClientPhone\": \"88888888\",\n      \"userClientEmail\": \"prueba@ridivi.com\",\n      \"dedicatedAccount\": \"CR33090100000000000001\",\n      \"amountPay\": 100.0,\n      \"detailPay\": \"PRUEBA CERTIFICACION RIDIVI\",\n      \"expirationTimePay\": 1440,\n      \"statePay\": \"Finalizado\",\n      \"currencyPay\": \"CRC\",\n      \"accountPay\": \"CR32010400000000000001\",\n      \"mailNotified\": true,\n      \"linkProps\": null,\n      \"expired\": false,\n      \"nameCompleted\": \"JUAN PEREZ PEREZ\",\n      \"invoiceNumber\": \"2500\",\n      \"sendMailNotification\": false,\n      \"sendSmsNotification\": false,\n      \"massive\": false,\n      \"massive_failed\": null,\n      \"detailUse\": 0,\n      \"sinpeReference\": \"2024061190124010020089787\",\n      \"debitNum\": 0,\n      \"creditNum\": 0,\n      \"saveAda\": false,\n      \"numFee\": null,\n      \"linkCreatorUserId\": \"246\",\n      \"amountFee\": 0.0,\n      \"sendInvoiceNotificationMail\": true\n    }\n    ```\n\n    3. **Respuesta (response) del método**: Se debe mostrar como respuesta un JSON.  \n        **Ejemplo:**\n\n    ```\n    {\n      \"status\": \"A\",\n      \"code\":0,\n      \"error\": false,\n      \"message\": \"Recibido con éxito. Id 451245\",\n      \"result\": \"Recibido\"\n    }\n    ```\n\n    4. **Tipos de respuesta HTTP**: Se requiere implementar las respuestas siguiendo el estándar de respuestas HTTP.\n        1. HTTP 200: Respuesta exitosa\n        2. HTTP 409: Se ha producido un error interno en el servidor.\n        3. HTTP 503: Servidor no disponible\n\n# 🔐 Seguridad\n\n## Información requerida\n\n- **Registro en Ridivi**: La entidad cliente debe haberse registrado en Ridivi para la creación de sus cuentas IBAN y parametrización de información de los costos de los servicios a implementar.\n- **Credenciales API**: Se le brindará por correo a la persona a cargo del equipo de desarrollo las credenciales para autenticarse en el API.","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":true,"owner":"34384191","team":6169861,"collectionId":"e81fb7a4-6fba-46cd-8fba-826b143c3f55","publishedId":"2sA3BoZrPr","public":true,"publicUrl":"https://docs.ridivi.com","privateUrl":"https://go.postman.co/documentation/34384191-e81fb7a4-6fba-46cd-8fba-826b143c3f55","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"0068C9"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":""},{"name":"title","value":""}],"appearance":{"default":"light","themes":[{"name":"dark","logo":"https://content.pstmn.io/2f9cec29-978b-4542-aaf3-f597c3938c5e/TG9nbyBIb3Jpem9udGFsIGZvbmRvIG9zY3VybyAtIDEwMDB4NTc5LnBuZw==","colors":{"top-bar":"212121","right-sidebar":"303030","highlight":"89CF4C"}},{"name":"light","logo":"https://content.pstmn.io/8c7c9756-355f-45bf-aa43-3678365acfdd/TG9nbyBIb3Jpem9udGFsIGZvbmRvIGNsYXJvIC0gMTAweDU3OS5wbmc=","colors":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"0068C9"}}]}},"version":"8.10.1","publishDate":"2024-04-19T21:36:05.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"","description":""},"logos":{"logoLight":"https://content.pstmn.io/8c7c9756-355f-45bf-aa43-3678365acfdd/TG9nbyBIb3Jpem9udGFsIGZvbmRvIGNsYXJvIC0gMTAweDU3OS5wbmc=","logoDark":"https://content.pstmn.io/2f9cec29-978b-4542-aaf3-f597c3938c5e/TG9nbyBIb3Jpem9udGFsIGZvbmRvIG9zY3VybyAtIDEwMDB4NTc5LnBuZw=="}},"statusCode":200},"environments":[{"name":"Desarrollo","id":"99fd8183-108b-4f38-a738-c75526d50648","owner":"34384191","values":[{"key":"URL BASE","value":"https://apiv5.dev-ridivi.com/v5","enabled":true,"type":"default"},{"key":"token","value":"","enabled":true,"type":"secret"},{"key":"loadkey","value":"","enabled":true,"type":"default"}],"published":true}],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/1ec46967333c142c1c05378cf26ab9938906e17fa11a6b4f675ea595944613ff","favicon":"https://res.cloudinary.com/postman/image/upload/v1732489562/team/f8f9f907d06a33af77486a72cb889014.ico"},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"},{"label":"Desarrollo","value":"34384191-99fd8183-108b-4f38-a738-c75526d50648"}],"canonicalUrl":"https://docs.ridivi.com/view/metadata/2sA3BoZrPr"}