API Transferencia Bancaria PSD2

Introducción

La API Transferencia Bancaria PSD2 está basada en arquitectura de desarrollo web REST y, al ser independiente del tipo de sintaxis o lenguaje utilizado, puede ser integrada en cualquier plataforma online.

Esta API proporciona al desarrollador un conjunto de definiciones técnicas y procesos para integrar el servicio de pago Transferencia Bancaria PSD2. Las peticiones API de inicio de pagos proporcionan al Cliente-Integrador URLs o enlaces cifrados que le permitirá utilizarlos según el caso de uso:

Botón de pago para plataformas online basadas en web o app que requieren integrar métodos de pago alternativos a las tarjetas para el pago de carritos de compra, pago de pedidos/facturas en plataformas online de clientes, etc.

Enlaces de requerimiento de pagos para adjuntar a documentos físicos o digitales y enviar posteriormente a clientes o deudores por cualquier canal (Facturas, emails, SMS, etc.).

La pulsación sobre el enlace (ya sea en formato botón de pago o como enlace de pago) redireccionan al Cliente-Pagador a la aplicación web Transferencia Bancaria PSD2, en la que le es mostrado un selector de entidades financieras. Una vez seleccionada la entidad desde la que desea pagar, el Cliente-Pagador es redirigido al portal bancario específico creado exclusivamente por su entidad financiera para autorizar el pago en 3 simples pasos:

  1. Identificación (login) con las mismas claves de su banca online
  2. Selección de cuenta corriente
  3. Autorización del pago a través del procedimiento habitual establecido por su entidad financiera

Cuando la operación ha sido finalizada con éxito, el servicio notificará al Cliente-Integrador, vía API en tiempo real, el resultado junto a los datos asociados al pago. El Cliente-Pagador será redirigido a una página de éxito de la aplicación Transferencia Bancaria PSD2 o del propio Cliente-Integrador.

El servicio Transferencia Bancaria PSD2 está basado en el servicio regulado de Iniciación de pagos (Real Decreto Ley 19/2018, de 23 de noviembre 2018 - PSD2) y es prestado directamente por la Entidad de Pago INESPAY FINANCIAL TECHNOLOGIES E.P., autorizada por Banco de España con el número de entidad 6902.

NOTA: Debido a las restricciones de seguridad impuestas por las entidades financieras, este servicio no puede integrarse como iframe en otras aplicaciones web o App.

Esquema API

Seguridad

La API Transferencia Bancaria PSD2 requiere un proceso de autenticación mediante claves API-KEY y API-TOKEN. Estas claves deben ser enviadas en la cabecera (Header) de cada llamada API. Para obtenerlas, el Cliente-Integrador debe registrarse previamente en el Dashboard INESPAY mediante una dirección de email y una contraseña: Acceder al Registro

Se utiliza el protocolo seguro HTTPS para el cifrado e intercambio de datos y el formato JSON para todas las peticiones y respuestas API.

Entornos

Con el objetivo de facilitar la integración, se ha habilitado un entorno SANDBOX que simula las acciones del entorno de PRODUCCIÓN, lo cual permitirá al Cliente-Integrador confirmar el correcto funcionamiento del servicio antes de ser expuesto al Cliente-Pagador.

Para realizar peticiones a uno u otro entorno (SANDBOX o PRODUCCIÓN), simplemente se deben utilizar las claves API-KEY y API-TOKEN y llamar a la URL base correspondiente a cada entorno. Las claves para realizar peticiones API al entorno SANDBOX se proporcionan automáticamente en el Dashboard INESPAY (Acceder al Registro sección Configuración/Claves API). Sin embargo, para obtener las claves API del entorno de PRODUCCIÓN es necesario formalizar el contrato de prestación del servicio. Para ello, puede ponerse en contacto con su gestor personal o enviar un email a la dirección sales@inespay.com.

Entorno Tipo URL
SANDBOX (Pruebas) POST https://apiflow.inespay.com/san/url/signer
PRODUCCIÓN POST https://apiflow.inespay.com/pro/url/signer

SANDBOX : Las peticiones a este entorno permiten iniciar pagos ficticios para comprobar la correcta integración del servicio Transferencia Bancaria PSD2. Debe realizar una petición API de inicio de pago a la URL de SANDBOX utilizando sus claves API. Esta acción le abrirá la aplicación web Transferencia Bancaria PSD2, en la que se mostrará un selector con una pequeña muestra de entidades financieras.

Para comprobar el flujo de pago que experimentará un Cliente-Pagador, puede seleccionar cualquiera de los bancos comerciales que aparecen en el selector. Sin embargo, para realizar pruebas de integración controladas recomendamos utilizar el banco SIMULADOR, que le permitirá simular distintas acciones informando un valor diferente en el campo Usuario:

  1. Pago OK: Usuario: user1 // Contraseña: 1234
  2. Pago KO: Usuario: user2 // Contraseña: 1234
  3. Pago pendiente de más firmas (firma mancomunada): Usuario: user3 // Contraseña: 1234

Por favor, complete diferentes pagos y experimente las respuestas que obtiene. Cuando finalice un pago con éxito asegúrese de visualizar la página de confirmación con el texto Orden de pago completada.

Para una adecuada integración, es recomendable comprobar las siguientes acciones:

a) Redirección del Cliente-Pagador a la URL de éxito de la plataforma del Cliente-Integrador. Para comprobar esta acción se requiere informar el parámetro successLinkRedirect en la llamada API de inicio de pago y finalizar un pago con éxito.

b) Redirección a la URL de KO de la plataforma del Cliente-Integrador. Para comprobar esta acción se requiere informar el parámetro urlError en la llamada API de inicio de pago y pulsar el botón SALIR que aparecerá en un pago KO.

c) Notificación electrónica de un pago a la plataforma del Cliente-Integrador. Para comprobar esta acción se requiere informar el parámetro notifUrl y completar un pago con éxito. Por favor, consulte la sección Notificación de pagos (Callback).

PRODUCCIÓN : En el entorno PRODUCCIÓN todos los pagos realizados serán reales. Previo a la exposición del servicio de pago al Cliente-Pagador, se recomienda al Cliente-Integrador realizar un pago real por sí mismo, con el fin de comprobar que la integración ha sido llevada a cabo correctamente. Para ello, el Cliente-Integrador debe iniciar un pago real, acceder a la aplicación web Transferencia Bancaria PSD2 y finalizarlo con éxito. Asegúrese de recibir correctamente la notificación de pago (Callback) así como de comprobar que es redirigido al parámetro successLinkRedirect, en el caso de haberse informado en la petición API.

Soporte Técnico

Para cualquier duda relacionada con asuntos técnicos o con la integración del servicio, INESPAY pone a disposición del Cliente-Integrador la dirección de email support@inespay.com.

Iniciación de Pagos

El servicio de iniciación de pagos Transferencia Bancaria PSD2 dispone de dos modalidades de pago:

- Pago simple (unitario) (Modalidad estándar) Para pagos puntuales o específicos de compras o facturas. Siempre requiere la interacción del Cliente-Pagador para autorizar cada pago.

- Pago periódico o recurrente Para pagos por suscripción o compras fraccionadas. El Cliente-Pagador interactúa con el servicio Transferencia Bancaria PSD2 una sola vez para autorizar el alta de una orden de pago con periodicidad, importe y concepto preestablecidos, no modificables a posteriori.

Pagos Simples

El servicio de iniciación de pagos simples proporciona al Cliente-Integrador un enlace de pago que incorporará los datos necesarios para abrir la aplicación web Transferencia Bancaria PSD2, donde se mostrará al Cliente-Pagador un selector de bancos, junto a los detalles de la transacción y las Condiciones Generales del servicio. El listado de bancos accesibles al Cliente-Pagador puede consultarse en cualquier momento desde el Dashboard INESPAY (sección Configuración/Bancos).

Petición de inicio de pago simple

Entorno Tipo URL
SANDBOX (Pruebas) POST https://apiflow.inespay.com/san/v2/payins/simple/init
PRODUCCIÓN POST https://apiflow.inespay.com/pro/v2/payins/simple/init

Header

Parámetro Descripción
X-Api-Key API-KEY proporcionada por INESPAY
Authorization API-TOKEN proporcionado por INESPAY
Content-Type application/json

Body

Parámetro Requerido Tipo Descripción
description String Concepto de la transferencia bancaria que aparecerá en el extracto bancario tanto del Cliente-Pagador como del Cliente-Integrador. Tamaño máximo: 140 caracteres. Se recomienda utilizar un concepto específico que permita identificar inequívocamente la transacción para procesos de conciliación contable basados en extractos bancarios (Norma CSB43, etc.). Por favor, evite introducir en este campo cualquier información personal o sensible
amount Number Importe del pago mutiplicado por 100, sin decimales. Por ejemplo: 35598 = 355,98 Euros
reference String Identificador único de la orden de pago o del pedido informado por el Cliente-Integrador, gracias al cual se puede identificar una orden de pago en sus propios sistemas. Este valor permitirá al Cliente-Integrador matchear el pedido o la orden de pago que ha salido de su plataforma con la información que le devuelva INESPAY a través del parámetro notifUrl (ver Notificación de pagos). Tamaño máximo: 100 caracteres
successLinkRedirect No String URL de retorno a la que se redirigirá al Cliente-Pagador cuando el pago se ha realizado con éxito. Este parámetro es esencial cuando el Cliente-Pagador proviene de una tienda o cualquier otro tipo de plataforma online. En caso de no informarse, INESPAY presentará al Cliente-Pagador una página de éxito, desde la que podrá descargar un justificante del pago
successLinkRedirectMethod No String Método HTTP utilizado para redirigir al Cliente-Pagador a la successLinkRedirect. Valores posibles: GET o POST. En caso de no informarse, el valor será POST
abortLinkRedirect No String URL de retorno a la que se redirigirá al Cliente-Pagador si decide abandonar el proceso de pago sin completarlo. En caso de no informarse, INESPAY presentará al Cliente-Pagador una página estática de Cancelación
abortLinkRedirectMethod No String Método HTTP utilizado para redirigir al Cliente-Pagador a la abortLinkRedirect. Valores posibles: GET o POST. En caso de no informarse, el valor será POST
notifUrl No String URL a la que se notifica la información de una orden de pago finalizada con éxito (ver Notificación de pagos). Debe tenerse en cuenta que, tanto para el entorno de SANDBOX como para el de PRODUCCIÓN se debe informar una notifUrl de un entorno diferente al Local. En caso contrario, el proceso de notificación no se podrá llevar a cabo, ya que la URL informada debe ser accesible por INESPAY.
notifUrlContentType No String Formato de la notificación realizada por INESPAY a la URL informada en el parámetro notifUrl. Los valores posibles son : x-www-form-urlencoded o json. En caso de no informarse, el valor por defecto es x-www-form-urlencoded.
expiration No Number Tiempo en minutos de la validez del enlace de pago. En caso de no informarse, la validez será de 30 minutos. El máximo tiempo posible será de 259200 minutos (180 días)
creditorAccount No String IBAN de destino de la orden de pago. Sólo es necesario informar este parámetro en caso de que el Cliente-Integrador necesite destinar el importe de cada orden de pago a un IBAN concreto. En caso de que el Cliente-Integrador disponga de un solo IBAN o tenga activado el servicio de Balanceo de bancos (consultar a INESPAY), no es necesario informar este parámetro. Cualquier IBAN informado en este parámetro debe estar previamente validado en el proyecto, a través del Dashboard INESPAY (sección Configuración/Bancos). En caso de enviarse un IBAN no validado en el proyecto, la API devolverá un error. Para realizar peticiones de inicio de pago en modo SANDBOX, por favor, consulte los IBAN de prueba informados al final de esta sección.
customData No String Campo personalizable que puede ser utilizado por el Cliente-Integrador para persistir cualquier tipo de dato que requiera recibir posteriormente a través del parámetro notifUrl (ver Notificación de pagos). Tamaño máximo: 4000 caracteres
customBeneficiary No String Campo personalizable que permite mostrar al Cliente-Pagador un nombre diferente del proyecto en la aplicación web Transferencia Bancaria PSD2 (nombre comercial de la web, nombre de la plataforma online, etc...). En caso de no informarse este parámetro, el nombre que se mostrará en la aplicación web Transferencia Bancaria PSD2 al Cliente-Pagador será el nombre comercial del Cliente-Integrador

Respuesta a la petición de inicio de pago simple

Parámetro Tipo Descripción
simplePayinId String Identificador único de la orden de pago.
url String Enlace de pago que permitirá al Cliente-Pagador acceder a la aplicación web Transferencia Bancaria PSD2.
status String Código de éxito (200) o código de error.
statusDesc String Descripción del código status.

  • BBVA: ES2501822200160201933547 (Predeterminado)
  • Arquia: ES5031831357110123456789

Notificación/Callback de un pago simple enviada a la url informada en notifUrl

Parámetro Tipo Descripción
dataReturn String (JSON) Se encuentra codificado en Base64 y contiene los parámetros del pago:
    simplePayinId String Identificador único del pago simple en los sistemas INESPAY
    codStatus String Código de estado, valores posibles "OK" o "SETTLED" (El valor SETTLED solo está disponible para clientes con el servicio de Collecting)
    description String Concepto del pago
    amount Number Importe del pago mutiplicado por 100, sin decimales
    reference String Identificador único de la orden de pago o del pedido asignado por el Cliente-Integrador
    date Number Timestamp en milisegundos. Zona horaria UTC
    creditorAccount String IBAN de destino al que se han transferido los fondos de la orden de pago.
    debtorName String Titular del IBAN desde el que se ha ejecutado el pago (nombre del ordenante del pago). En caso de que la entidad bancaría no proporcione puntualmente dicha información este parámetro presentará el valor null. Dependiendo de la entidad financiera, el valor de este parámetro puede tener el formato: Nombre Apellido1 Apellido2 o Apellido1 Apellido2 Nombre
    debtorAccount String IBAN del Cliente-Pagador desde el que se ha realizado el pago (número IBAN del ordenante del pago). En caso de que la entidad bancaría no proporcione puntualmente dicha información este parámetro presentará el valor null
    customData String Datos devueltos por INESPAY al Cliente-Integrador que han sido previamente informados en la llamada API de inicio de pago
signatureDataReturn String Firma de dataReturn calculada con el algoritmo HmacSHA256, utilizando como clave la APIKEY proporcionada por INESPAY y codificada en base64

Consulta pago simple

Servicio que permite consultar el estado de un pago simple.

Entorno Tipo URL
SANDBOX (Pruebas) GET https://apiflow.inespay.com/san/v2/payins/simple/{simplePayinId}
PRODUCCIÓN GET https://apiflow.inespay.com/pro/v2/payins/simple/{simplePayinId}

Header

Parámetro Descripción
X-Api-Key API-KEY proporcionada por INESPAY
Authorization API-TOKEN proporcionado por INESPAY
Content-Type application/json

Parámetros url

Parámetro Requerido Tipo Descripción
simplePayinId String Identificador único de la orden de pago simple.

Respuesta

Parámetro Tipo Descripción
simplePayinId String Identificador único de la orden de pago simple.
amount Number importe de la orden de de pago multiplicado por 100, sin decimales.
description String Concepto de la orden de pago.
reference String Identificador interno de la orden de pago asignado inicialmente por el Cliente-Integrador.
enabled Boolean Indica si el enlace de pago se encuentra activo (puede utilizarse por el Cliente-Pagador) o inactivo (ya no puede utilizarse). Puede activar o desactivar enlaces de pago en cualquier momento.
creditorAccount String Número IBAN destino de la transferencia.
creditorName String Titular del IBAN de destino (beneficiario)
debtorName String Titular del IBAN de la cuenta origen del pago.
debtorAccount String Número de IBAN de la cuenta origen del pago.
customBeneficiary String Nombre del beneficiario del pago que se mostrará al Cliente-Pagador en la aplicación web Transferencia Bancaria PSD2.
customData String Campo personalizable informado por el Cliente-Integrador en la llamada API de inicio de pago.
urlLong String Enlace de pago
urlShort String Enlace de pago recortado
urlShortClicks String Número de pulsaciones (clics) realizados sobre sobre el enlace de pago (urlShort).
successLinkRedirect String URL de retorno a la que se redirigirá al Cliente-Pagador cuando el pago se ha realizado con éxito.
successLinkRedirectMethod String Método HTTP utilizado para redirigir al Cliente-Pagador a la successLinkRedirect.
abortLinkRedirect String URL de retorno a la que se redirigirá al Cliente-Pagador si decide abandonar el proceso de pago sin completarlo.
abortLinkRedirectMethod String Método HTTP utilizado para redirigir al Cliente-Pagador a la abortLinkRedirect.
codStatus String Código del estado de la orden de pago.
refunds Array(Refund) Devoluciones ejecutadas sobre la orden de pago. Solo disponible para clientes con el servicio de Collecting.
refundedAmount Number Suma total de la devoluciones multiplicado por 100, sin decimales. Solo disponible para clientes con el servicio de Collecting.
createdAt Number Fecha de creación de la orden de pago, en formato milisegundos.
updatedAt Number Fecha de actualización de la orden de pago, en formato milisegundos.
expiredAt Number Fecha de caducidad de la orden de pago, en formato milisegundos.
status String Código de éxito (200) o código de error
statusDesc String Descripción del código status

Estructura Refund

Propiedad Tipo Descripción
refundId String Identificador único de la devolución.
simplePayinId String Identificador único de la orden de pago.
amount Number importe de la devolución multiplicado por 100, sin decimales.
description String Concepto de la devolución.
collectingIBAN String IBAN origen emisor de la devolución.
payeeIBAN String IBAN de destino del importe ordenado en el payOut.
payeeName String Titular del IBAN de destino del importe ordenado en el devolución.
okNotifUrl String URL a la que se notifica la información de la devolución finalizada con éxito.
errorNotifUrl String URL a la que se notifica la información de una devolución que no ha podido ser procesada, con el fin de que el Cliente-Integrador pueda lanzar nuevamente el proceso de devolución.
codStatus String Código del estado de la devolución.

Estados pagos simples (codStatus)

Código Descripción
OK La ejecución de la orden de pago ha sido confirmada por la entidad financiera.
CREATED La orden de pago ha sido generada vía API, pero el cliente no ha accedido a la pasarela para iniciar el proceso de pago.
OPENED El cliente ha accedido a la pasarela, pero no ha seleccionado ninguna entidad para iniciar el proceso de pago.
BANK_SELECTED El cliente ha seleccionado una entidad financiera y ha sido redirigido a la interfaz de su banco, pero no ha llegado a iniciar el proceso.
INITIATED El cliente ha iniciado la orden de pago y se encuentra en trámite.
PENDING El cliente ha iniciado la orden de pago pero se encuentra pendiente de autorización.
UNFINISHED (Generación de enlaces) La orden de pago no ha sido finalizada por el cliente.
ABORTED (Generación de enlaces) El cliente ha abandonado la pasarela sin completar la orden de pago.
REJECTED La orden de pago ha sido rechazada por la entidad financiera del cliente.
CANCELLED La orden de pago ha sido cancelada por el cliente en la interfaz de su entidad financiera.
PARTIALLY_ACCEPTED La orden de pago ha sido autorizada por el cliente, pero existen autorizaciones pendientes de otros apoderados.
FAILED El cliente inició la orden de pago, pero la entidad financiera no ha informado ningún estado válido del mismo.
SETTLED El pago se ha realizado con éxito y los fondos han sido recibidos en la cuenta destino. Solo disponible para clientes con el servicio de Collecting.
PART_REFUNDED Parte de la orden de pago original ha sido devuelta. Solo disponible para clientes con el servicio de Collecting.
REFUNDED La totalidad de la orden de pago original ha sido devuelta. Solo disponible para clientes con el servicio de Collecting.

Pagos Periódicos

El servicio de iniciación de pagos periódicos está basado en dos subservicios: Alta y Cancelación. Un pago periódico no puede modificarse por lo que, en caso de requerir la modificacion de algún dato, será necesario cancelar la orden periódica original y generar una nueva.

Alta de un Pago Periódico

Este servicio proporciona al Cliente-Integrador un enlace de pago que incorporará los datos necesarios para permitir al Cliente-Pagador iniciar una orden de pago periódico de un mismo importe y una frecuencia establecida (mensual, trimestral, etc.). El Cliente-Pagador accederá directamente al portal PSD2 de su entidad financiera para autorizar la orden.

ATENCIÓN: A diferencia del pago simple, el servicio de Alta de un Pago Periódico requiere informar el IBAN del Cliente-Pagador en cada llamada de inicio de pago (parámetro debtorAccount). En próximas fechas el flujo de pago del pago periódico será idéntico al del pago simple, permitiendo al Cliente-Pagador seleccionar el IBAN desde el que desea dar de alta la orden de pago periódico. Una vez se confirme este desarrollo por parte de las entidades financieras, no será necesario utilizar el parámetro debtorAccount.

Previo a la petición de inicio de pago, el Cliente-Integrador debe realizar una primera petición a la API Transferencia Bancaria PSD2 para obtener tanto el listado de bancos que ofrecen este servicio como las frecuencias admitidas por cada uno. Una vez obtenida esta información, el Cliente-Integrador puede presentar al Cliente-Pagador el listado de bancos o enviar directamente la llamada de inicio de pago informando los parámetros necesarios para dar de alta la orden.

Petición del listado de bancos

Entorno Tipo URL
SANDBOX (Pruebas) GET https://apiflow.inespay.com/san/banks
PRODUCCIÓN GET https://apiflow.inespay.com/pro/banks

Header

Parámetro Descripción
X-Api-Key API-KEY proporcionada por INESPAY
Authorization API-TOKEN proporcionado por INESPAY
Content-Type application/json

Respuesta a la petición del listado de bancos

Parámetro Tipo Descripción
total Integer Número de elementos devueltos en data
data Array (Bank) Array de bancos
status String Código de éxito (200) o error
description String Descripción del código status

Array (Bank)

Parámetro Tipo Descripción
bankId String Identificador único de la entidad financiera asignado por INESPAY
name String Nombre de la entidad financiera
bankCodes Array (String) Array que contiene el/los código/s de la entidad financiera
country String País al que pertenece la entidad financiera
enabled Integer Indica si el banco se encuentra activado (valor = 1) o desactivado (valor = 0) en la aplicación web Transferencia Bancaria PSD2. En caso de que la entidad financiera se encuentre desactivada (0) significa que, por razones técnicas o puntuales, no se encuentra operativa en el momento de realizar la petición API
enabledPeriodicPayment Integer Indica si el banco dispone del servicio de pagos periódicos (valor = 1) o no (valor = 0)
frequencyPeriodicPayment Array(String) Frecuencias de pago admitidas (parámetro frequency) en caso de que el banco admita pagos periódicos
bankGroupId Integer Identificador del grupo en caso de que el banco se pueda agrupar en un nivel superior. En caso de presentar al Cliente-Pagador el listado de bancos se recomienda mostrar el nombre del Grupo y, una vez seleccionado, presentar un nuevo selector con las entidades financieras que lo conforman
bankGroupName String Nombre del grupo bancario, en caso de que el banco se pueda agrupar (P. Ej: Ruralvía)

NOTA: La utilización del parámetro bankGroupId permite reducir considerablemente el listado de bancos para presentar al Cliente-Pagador en un primer selector. En lugar de mostrar el nombre de todas las entidades financieras que se reciben en la petición del listado de bancos, se recomienda agrupar aquellas que vengan informadas con el parámetro bankGroupId y mostrarlas agrupadas con el nombre del mismo (bankGroupName).

Es posible realizar consultas filtradas sobre el listado de bancos. A continuación se describen los filtros disponibles:

Bancos activos por país

Consulta de los bancos activos por país:

Entorno Tipo URL
SANDBOX (Pruebas) GET https://apiflow.inespay.com/san/banks?enabled=1&country=ES
PRODUCCIÓN GET https://apiflow.inespay.com/pro/banks?enabled=1&country=ES

Bancos con la funcionalidad activa de pago periódico por país

Consulta de los bancos que tienen habilitado el servicio pagos periódicos por país:

Entorno Tipo URL
SANDBOX (Pruebas) GET https://apiflow.inespay.com/san/banks?enabledPeriodicPayment=1&country=ES
PRODUCCIÓN GET https://apiflow.inespay.com/pro/banks?enabledPeriodicPayment=1&country=ES

Petición de inicio de pago periódico

Entorno Tipo URL
SANDBOX (Pruebas) POST https://apiflow.inespay.com/san/v2/payins/periodic/init
PRODUCCIÓN POST https://apiflow.inespay.com/pro/v2/payins/periodic/init

Header

Parámetro Descripción
X-Api-Key API-KEY proporcionada por INESPAY
Authorization API-TOKEN proporcionado por INESPAY
Content-Type application/json

Body

Parámetro Requerido Tipo Descripción
description String Concepto de la transferencia bancaria que aparecerá en el extracto bancario tanto del Cliente-Pagador como del Cliente-Integrador. Tamaño máximo: 140 caracteres. Se recomienda utilizar un concepto específico que permita identificar inequívocamente la transacción para procesos de conciliación contable basados en extractos bancarios (Norma CSB43, etc.). Por favor, evite introducir en este campo cualquier información personal o sensible
amount Number Importe del pago mutiplicado por 100, sin decimales. Por ejemplo: 35598 = 355,98 Euros
reference String Identificador único de la orden de pago o del pedido informado por el Cliente-Integrador, gracias al cual se puede identificar una orden de pago en sus propios sistemas. Este valor permitirá al Cliente-Integrador matchear el pedido o la orden de pago que ha salido de su plataforma con la información que le devuelva INESPAY a través del parámetro notifUrl (ver Notificación de pagos). Tamaño máximo: 100 caracteres.
frequency String Periodicidad de ejecución del pago periódico. La frecuencia informada debe de estar admitida por el banco seleccionado por el Cliente-Pagador.
debtorAccount String IBAN del Cliente-Pagador que va a autorizar la orden periódica de pago (IBAN del ordenante). Para inicios de pago en SANDBOX, utilice los IBAN de prueba informados al final de esta sección.
startDate String Fecha a partir de la cual se inician los pagos periódicos en formato YYYY-MM-DD. La fecha informada en este parámetro debe ser siempre posterior a la fecha presente de la petición API. En caso de venir informado una frecuencia Monthly o superior, el día del mes informado en este parámetro se considerará como "día de ejecución". Ejemplo: El valor 2021-10-18 significará que el primer pago se llevará a cabo el 18 de octubre de 2021 y los siguientes pagos se llevarán a cabo los días 18 de los sucesivos periodos
endDate No String Fecha final de la orden del pago periódico en formato YYYY-MM-DD. En caso de no informarse se considerará un pago periódico indefinido en el tiempo
successLinkRedirect No String URL de retorno a la que se redirigirá al Cliente-Pagador cuando el pago se ha realizado con éxito. Este parámetro es esencial cuando el Cliente-Pagador proviene de una tienda o cualquier otro tipo de plataforma online. En caso de no informarse, INESPAY presentará al Cliente-Pagador una página de éxito, desde la que podrá descargar un justificante del pago
successLinkRedirectMethod No String Método HTTP utilizado para redirigir al Cliente-Pagador a la successLinkRedirect. Valores posibles: GET o POST. En caso de no informarse, el valor será POST
abortLinkRedirect No String URL de retorno a la que se redirigirá al Cliente-Pagador si decide abandonar el proceso de pago sin completarlo. En caso de no informarse, INESPAY presentará al Cliente-Pagador una página estática de Cancelación
abortLinkRedirectMethod No String Método HTTP utilizado para redirigir al Cliente-Pagador a la abortLinkRedirect. Valores posibles: GET o POST. En caso de no informarse, el valor será POST
notifUrl No String URL a la que se notifica la información de una orden de pago finalizada con éxito (ver Notificación de pagos). Debe tenerse en cuenta que, tanto para el entorno de SANDBOX como para el de PRODUCCIÓN se debe informar una notifUrl de un entorno diferente al Local. En caso contrario, el proceso de notificación no se podrá llevar a cabo, ya que la URL informada debe ser accesible por INESPAY
notifUrlContentType No String Formato de la notificación realizada por INESPAY a la URL informada en el parámetro notifUrl. Los valores posibles son : x-www-form-urlencoded o json. En caso de no informarse, el valor por defecto es x-www-form-urlencoded.
expiration No Number Tiempo de validez del enlace de pago. En caso de no informarse, la validez será de 30 minutos. El máximo tiempo posible será de 259200 minutos (180 días)
creditorAccount No String IBAN de destino de la orden de pago. Sólo es necesario informar este parámetro en caso de que el Cliente-Integrador necesite destinar el importe de cada orden de pago a un IBAN concreto. En caso de que el Cliente-Integrador disponga de un solo IBAN o tenga activado el servicio de Balanceo de bancos (consultar a INESPAY), no es necesario informar este parámetro. Cualquier IBAN informado en este parámetro debe estar previamente validado en el proyecto, a través del Dashboard INESPAY (sección Configuración/Bancos). En caso de enviarse un IBAN no validado en el proyecto, la API devolverá un error. Para realizar peticiones de inicio de pago en modo SANDBOX, por favor, consulte los IBAN de prueba informados al final de esta sección
customData No String Campo personalizable que puede ser utilizado por el Cliente-Integrador para persistir cualquier tipo de dato que requiera recibir posteriormente a través del parámetro notifUrl (ver Notificación de pagos). Tamaño máximo: 4000 caracteres.
customBeneficiary No String Campo personalizable que permite mostrar al Cliente-Pagador un nombre diferente del proyecto en la aplicación web Transferencia Bancaria PSD2 (nombre comercial de la web, nombre de la plataforma online, etc...). En caso de no informarse este parámetro, el nombre que se mostrará en la aplicación web Transferencia Bancaria PSD2 al Cliente-Pagador será el nombre comercial del Cliente-Integrador

Respuesta a la petición de inicio de pago periódico

Parámetro Tipo Descripción
periodicPayinId String Identificador único de la orden de pago periódica
url String Enlace del pago periódico que accederá directamente al portal bancario, según el IBAN informado en el parámetro debtorAccount
status String Código de éxito (200) o error
statusDesc String Descripción del código status

  • BBVA: ES2501822200160201933547 (Predeterminado)
  • Arquia: ES5031831357110123456789

Notificación/Callback de un pago periódico enviada a la url informada en notifUrl

Parámetro Tipo Descripción
dataReturn String (JSON) Se encuentra codificado en Base64 y contiene los parámetros del pago:
    periodicPayinId String Identificador único del pago periódico en los sistemas INESPAY
    codStatus String Código de estado, valores posibles "OK" o "SETTLED" (El valor SETTLED solo está disponible para clientes con el servicio de Collecting)
    description String Concepto del pago
    amount Number Importe del pago mutiplicado por 100, sin decimales
    reference String Identificador único de la orden de pago o del pedido asignado por el Cliente-Integrador
    date Number Timestamp en milisegundos. Zona horaria UTC
    creditorAccount String IBAN de destino al que se han transferido los fondos de la orden de pago.
    debtorName String Titular del IBAN desde el que se ha ejecutado el pago (nombre del ordenante del pago). En caso de que la entidad bancaría no proporcione puntualmente dicha información este parámetro presentará el valor null. Dependiendo de la entidad financiera, el valor de este parámetro puede tener el formato: Nombre Apellido1 Apellido2 o Apellido1 Apellido2 Nombre
    debtorAccount String IBAN del Cliente-Pagador desde el que se ha realizado el pago (número IBAN del ordenante del pago). En caso de que la entidad bancaría no proporcione puntualmente dicha información este parámetro presentará el valor null
    customData String Datos devueltos por INESPAY al Cliente-Integrador que han sido previamente informados en la llamada API de inicio de pago
    startDate Number Fecha a partir de la cual se inician los pagos periódicos, en formato milisegundos UTC.
    endDate Number Fecha final de la orden del pago periódico, en formato milisegundos UTC.
    frequency String Periodicidad de ejecución del pago periódico
signatureDataReturn String Firma de dataReturn calculada con el algoritmo HmacSHA256, utilizando como clave la APIKEY proporcionada por INESPAY y codificada en base64

Consulta pago periódico

Servicio que permite consultar el estado de un pago periódico.

Entorno Tipo URL
SANDBOX (Pruebas) GET https://apiflow.inespay.com/san/v2/payins/periodic/{periodicPayinId}
PRODUCCIÓN GET https://apiflow.inespay.com/pro/v2/payins/periodic/{periodicPayinId}

Header

Parámetro Descripción
X-Api-Key API-KEY proporcionada por INESPAY
Authorization API-TOKEN proporcionado por INESPAY
Content-Type application/json

Parámetros url

Parámetro Requerido Tipo Descripción
periodicPayinId String Identificador único de la orden de pago periódica.

Respuesta

Parámetro Tipo Descripción
periodicPayinId String Identificador único de la orden de pago periódica.
amount Number importe de la orden de de pago multiplicado por 100, sin decimales.
description String Concepto de la orden de pago.
reference String Identificador interno de la orden de pago asignado inicialmente por el Cliente-Integrador.
enabled Boolean Indica si el enlace de pago se encuentra activo (puede utilizarse por el Cliente-Pagador) o inactivo (ya no puede utilizarse). Puede activar o desactivar enlaces de pago en cualquier momento.
creditorAccount String Número IBAN destino de la transferencia.
creditorName String Titular del IBAN de destino (beneficiario)
debtorName String Titular del IBAN de la cuenta origen del pago.
debtorAccount String Número de IBAN de la cuenta origen del pago.
customData String Campo personalizable informado por el Cliente-Integrador en la llamada API de inicio de pago.
urlLong String Enlace de pago
urlShort String Enlace de pago recortado
urlShortClicks String Número de pulsaciones (clics) realizados sobre sobre el enlace de pago (urlShort).
successLinkRedirect String URL de retorno a la que se redirigirá al Cliente-Pagador cuando el pago se ha realizado con éxito.
successLinkRedirectMethod String Método HTTP utilizado para redirigir al Cliente-Pagador a la successLinkRedirect.
abortLinkRedirect String URL de retorno a la que se redirigirá al Cliente-Pagador si decide abandonar el proceso de pago sin completarlo.
abortLinkRedirectMethod String Método HTTP utilizado para redirigir al Cliente-Pagador a la abortLinkRedirect.
codStatus String Código del estado de la orden de pago periódica.
frequency String Frecuencia de ejecución del pago periódico, en caso de haberse solicitado el inicio de un pago periódico.
startDate String Fecha de inicio del pago, en caso de haberse solicitado el inicio de un pago periódico
endDate String Fecha final del pago, en caso de haberse solicitado el inicio de un pago periódico
createdAt Number Fecha de creación de la orden de pago, en formato milisegundos.
updatedAt Number Fecha de actualización de la orden de pago, en formato milisegundos.
expiredAt Number Fecha de caducidad de la orden de pago, en formato milisegundos.
status String Código de éxito (200) o código de error
statusDesc String Descripción del código status

Estados pagos periódicos (codStatus)

Código Descripción
PENDING Orden de pago no completada por el Cliente-Pagador.
PARTIALLY_ACCEPTED Orden de pago pendiente de autorización por otro Cliente-Pagador (firma mancomunada).
OK El pago periódico se ha ordenado con éxito.
CANCELLED El pago periódico se ha cancelado con éxito.

Cancelación de un pago periódico

Este servicio proporciona al Cliente-Integrador un enlace de pago que incorporará los datos necesarios para cancelar una orden periódica de pago previamente autorizada por el Cliente-Pagador. Al realizar esta llamada API, el Cliente-Pagador accederá directamente a su portal bancario para autorizar la cancelación de la orden periódica de pago. Debe tenerse en cuenta que un pago periódico no puede modificarse por lo que, en caso de requerir la modificacion de algún dato, es necesario cancelar la orden periódica original y generar una nueva.

Petición de cancelación de pago periódico

Entorno Tipo URL
SANDBOX (Pruebas) POST https://apiflow.inespay.com/san/v2/payins/periodic/cancel
PRODUCCIÓN POST https://apiflow.inespay.com/pro/v2/payins/periodic/cancel

Header

Parámetro Descripción
X-Api-Key API-KEY proporcionada por INESPAY
Authorization API-TOKEN proporcionado por INESPAY
Content-Type application/json

Body

Parámetro Requerido Tipo Descripción
periodicPayinId String Identificador único de la orden de pago periódico que se desea cancelar.
reference String Identificador interno del pago del Cliente-Integrador con el que puede identificar la orden de cancelación de pago. Tamaño máximo: 100 caracteres.
successLinkRedirect No String URL de retorno a la que se redirigirá al Cliente-Pagador cuando la cancelación del pago se ha realizado con éxito. Este parámetro es esencial cuando el Cliente-Pagador proviene de una tienda o cualquier otro tipo de plataforma online. En caso de no informarse, INESPAY presentará al Cliente-Pagador una página de éxito, desde la que podrá descargar un justificante de la cancelación del pago.
successLinkRedirectMethod No String Método HTTP utilizado para redirigir al Cliente-Pagador a la successLinkRedirect. Valores posibles: GET o POST. En caso de no informarse, el valor será POST.
abortLinkRedirect No String URL de retorno a la que se redirigirá al Cliente-Pagador si decide abandonar el proceso de cancelación del pago periódico sin completarlo. En caso de no informarse, INESPAY presentará al Cliente-Pagador una página estática de Cancelación.
abortLinkRedirectMethod No String Método HTTP utilizado para redirigir al Cliente-Pagador a la abortLinkRedirect. Valores posibles: GET o POST. En caso de no informarse, el valor será POST
notifUrl No String URL a la que se notifica el éxito de la cancelación del pago periódico (ver Notificación de pagos). Debe tenerse en cuenta que, tanto para el entorno de SANDBOX como para el de PRODUCCIÓN se debe informar una notifUrl de un entorno diferente al Local. En caso contrario, el proceso de notificación no se podrá llevar a cabo
notifUrlContentType No String Formato de la notificación realizada por INESPAY a la URL informada en el parámetro notifUrl. Los valores posibles son: x-www-form-urlencoded o json. En caso de no informarse, el valor por defecto es x-www-form-urlencoded.
expiration No Number Tiempo en minutos de la validez del enlace de pago. En caso de no informarse, la validez del enlace será de 30 minutos. El máximo tiempo posible será de 259200 minutos (180 días).
customData No String Campo personalizable que puede ser utilizado por el Cliente-Integrador para persistir cualquier tipo de dato que requiera recibir posteriormente a través del parámetro notifUrl (ver Notificación de pagos) (P. Ej: {"name":"Bruce Wayne", "numDoc":"11111112L"}). Tamaño máximo: 4000 caracteres.

Respuesta a la petición de cancelación de pago periódico

Parámetro Tipo Descripción
periodicCancelId String Identificador único de la orden de cancelación del pago periódico
url String Enlace de cancelación del pago periódico que accederá directamente al portal bancario
status String Código de éxito (200) o error
statusDesc String Descripción del código status

Notificación de una cancelación de pago periódico OK enviada a la url informada en notifUrl

Parámetro Tipo Descripción
dataReturn String (JSON) Se encuentra codificado en Base64 y contiene los parámetros del pago:
    periodicCancelId String Identificador único de la cancelación del pago periódico en los sistemas INESPAY
    periodicPayinId String Identificador único del pago periódico en los sistemas INESPAY
    codStatus String Código de estado, valores posibles "OK"
    description String Concepto del pago
    amount Number Importe del pago mutiplicado por 100, sin decimales
    reference String Identificador único de la orden de pago o del pedido asignado por el Cliente-Integrador
    date Number Timestamp en milisegundos. Zona horaria UTC
    customData String Datos devueltos por INESPAY al Cliente-Integrador que han sido previamente informados en la llamada API de inicio de pago
signatureDataReturn String Firma de dataReturn calculada con el algoritmo HmacSHA256, utilizando como clave la APIKEY proporcionada por INESPAY y codificada en base64

Notificación de pagos (Callback)

INESPAY realiza la notificación de un pago (Callback) en el preciso instante en el que un Cliente-Pagador ha ejecutado con éxito una orden de pago. Esta notificación o Callback se realiza mediante una petición de tipo x-www-form-urlencoded o JSON a la URL informada en el parámetro notifUrl, en función del valor establecido en el parámetro notifUrlContentType. Esta petición es invisible e independiente de las acciones que pueda llevar a cabo el Cliente-Pagador en la aplicación web Transferencia Bancaria PSD2.

Tanto para el entorno de SANDBOX como para el de PRODUCCIÓN se debe informar un parámetro notifUrl de un entorno diferente al Local. En caso contrario, el proceso de notificación no se podrá llevar a cabo, ya que la URL informada debe ser accesible.

Las transacciones no finalizadas con éxito o los abandonos por parte del Cliente-Pagador no se notifican nunca a través de este parámetro notifUrl. En caso de que el Cliente-Pagador abandone voluntariamente el proceso de pago a través del botón Salir que aparece en la aplicación web Transferencia Bancaria PSD2, INESPAY lo redirigirá al parámetro urlError. En caso de no existir este parámetro, INESPAY redirigirá al Cliente-Pagador a una página estática de Cancelación.

ADVERTENCIA: El parámetro opcional successLinkRedirect no debe ser utilizado como Callback. INESPAY recomienda utilizar el parámetro successLinkRedirect únicamente para recibir al Cliente-Pagador en una página de éxito propia del Cliente-Integrador, confirmándole la gestión del pedido o del pago.

Para evitar duplicidades en la notificación de los pagos, el proceso de Callback se realiza solamente una vez. A pesar de nuestros múltiples controles, recomendamos al Cliente-Integrador bloquear la gestión del pago o del pedido al recibir la primera notificación procedente de INESPAY. De esta manera, en el hipotético caso de que recibiese más de una notificación de una misma referencia de pago, se evitará la duplicidad de un pedido o de un pago.

NOTA: En caso de que el proceso de notificación no se llegue a ejecutar con éxito, el Cliente-Integrador recibirá un email advirtiéndole de un Error en Notificación, con el fin de que pueda acceder al Dashboard de INESPAY, localizar la transacción incidentada y lanzar manualmente la notificación. Es importante que el Cliente-Integrador informe como mínimo una dirección de email para recibir estos avisos, a través ldel dashboard INESPAY, sección Configuración/Notificaciones.

IP La dirección IP fija del sistema notificaciones de INESPAY es 52.209.221.251.

Verificación respuesta (Firma)

Por motivos de seguridad, es obligatorio calcular la firma de los datos devueltos en dataReturn y compararla con la firma devuelta por INESPAY en signatureDataReturn. Al calcular la firma de los datos devueltos por INESPAY verificamos la integridad y la autenticidad de los datos. En caso de que la firma calculada coincida con signatureDataReturn, garantizamos que los datos no han sido manipulados ni alterados o proceden de otras fuentes. Para el cálculo de la firma se debe utilizar la API-KEY proporcionada por INESPAY.

A continuación detallamos el proceso para realizar el cálculo de la firma:

  1. Aplicamos el algoritmo HmacSHA256 directamente sobre dataReturn codificado en Base64, utilizando como clave la API-KEY proporcionada por INESPAY. De esta forma obtenemos el hash de dataReturn
  2. Convertimos a minúsculas el hash obtenido en una cadena de texto hexadecimal
  3. Codificamos el resultado del punto anterior en Base64 y obtenemos la firma calculada
  4. Comparamos la firma calculada con el parámetro signatureDataReturn devuelto en el Callback:
    • Si firma calculada == signatureDataReturn, nos aseguramos que la respuesta procede de INESPAY (OK)
    • Si firma calculada != signatureDataReturn, los datos han sido alterados por un tercero y no son válidos (KO)

Gestión de pagos

Para la prestación de los servicios contemplados en esta sección se requiere contratar previamente con INESPAY el servicio de Gestión de Pagos, el cual permitirá al Cliente-Integrador disponer de una Cuenta de pago para automatizar devoluciones de ingresos, pagos a proveedores, etc. Esta Cuenta de pago, cuya titularidad corresponderá al Cliente-Integrador, será un IBAN español emitido por entidad financiera autorizada y supervisada por la Autoridad Nacional Competente. Gracias a la Cuenta de pago, INESPAY podrá ofrecer al Cliente-Integrador los servicios API que se relacionan a continuación.

Devolución de órdenes de iniciación de pagos

El servicio de devoluciones permite enviar una petición API para solicitar a INESPAY la devolución de un ingreso recibido por el servicio de Iniciación de Pagos. Esta acción generará una salida de fondos desde la Cuenta de pago del Cliente-Integrador al IBAN del Cliente-Pagador de la orden de pago original. Para ello, el Cliente-Integrador deberá utilizar el parámetro simplePayinId que INESPAY transmitió inicialmente como identificador de la orden de pago mediante el parámetro notifUrl.

Entorno Tipo URL
SANDBOX (Pruebas) POST https://apiflow.inespay.com/san/v2/refunds/init
PRODUCCIÓN POST https://apiflow.inespay.com/pro/v2/refunds/init

Header

Parámetro Descripción
X-Api-Key API-KEY proporcionada por INESPAY
Authorization API-TOKEN proporcionado por INESPAY
Content-Type application/json

Body

Parámetro Requerido Tipo Descripción
simplePayinId String Identificador único de la orden de pago. Se corresponde con el parámetro transactionId de la transacción original devuelto por el servicio de Notificación de pagos (Callback)
amount No Number Importe de la orden de devolución multiplicado por 100, sin decimales. Por ejemplo: 35598 = 355,98 Euros. En caso de no indicarse, se realizará la devolución por el importe íntegro de la orden de pago. Este importe no puede ser superior al de la orden de pago original
description No String Concepto de la transferencia (P. Ej: Devolución factura…). Tamaño máximo: 140 caracteres. En caso de no indicarse se utilizará el concepto original de la orden de pago con el prefijo Refund
reference No String Identificador único de la devolución informado por el Cliente-Integrador, gracias al cual se puede identificar una orden de pago en sus propios sistemas.
collectingIBAN No String IBAN origen emisor de la devolución, en caso de que se dispongan de múltiples cuentas.
okNotifUrl No String URL a la que se notifica la información de la devolución finalizada con éxito. Debe tenerse en cuenta que, tanto para el entorno de SANDBOX como para el de PRODUCCIÓN se debe informar un parámetro okNotifUrl de un entorno diferente al Local. En caso contrario, el proceso de notificación no se podrá llevar a cabo, ya que la URL informada debe ser accesible por INESPAY.
okNotifUrlContentType No String Formato de la notificación realizada por INESPAY a la URL informada en el parámetro okNotifUrl. Los valores posibles son : x-www-form-urlencoded o json. En caso de no informarse, el valor por defecto es x-www-form-urlencoded.
errorNotifUrl No String URL a la que se notifica la información de devolución que no ha podido ser procesada, con el fin de que el Cliente-Integrador pueda lanzar nuevamente el proceso de devolución.
errorNotifUrlContentType No String Formato de la notificación realizada por INESPAY a la URL informada en el parámetro errorNotifUrl. Los valores posibles son : x-www-form-urlencoded o json. En caso de no informarse, el valor por defecto es x-www-form-urlencoded.

Respuesta a la petición de devolución de orden de pago

Parámetro Tipo Descripción
refundId String Identificador único de la devolución de la orden de pago
status String Código de éxito (200) o código de error
statusDesc String Descripción del código status

Notificación de una devolución a las urls informadas en okNotifUrl y errorNotifUrl

Parámetro Tipo Descripción
dataReturn String (JSON) Se encuentra codificado en Base64 y contiene los parámetros del pago:
    refundId String Identificador único de la devolución en los sistemas INESPAY
    simplePayinId String Identificador único de la orden de pago simple sobre la que se ejecuta la devolución
    codStatus String Código de estado, consultad los posibles valores de estado
    description String Concepto de la devolución.
    amount Number Importe de la devolución mutiplicado por 100, sin decimales
    reference String Identificador único de la orden de pago o del pedido asignado por el Cliente-Integrador
signatureDataReturn String Firma de dataReturn calculada con el algoritmo HmacSHA256, utilizando como clave la APIKEY proporcionada por INESPAY y codificada en base64

Payouts

El servicio de payOuts permite enviar una petición API para solicitar a INESPAY la emisión de una transferencia bancaria, generando una salida de fondos desde la Cuenta de pago del Cliente-Integrador.

Entorno Tipo URL
SANDBOX (Pruebas) POST https://apiflow.inespay.com/san/v2/payouts/init
PRODUCCIÓN POST https://apiflow.inespay.com/pro/v2/payouts/init

Header

Parámetro Descripción
X-Api-Key API-KEY proporcionada por INESPAY
Authorization API-TOKEN proporcionado por INESPAY
Content-Type application/json

Body

Parámetro Requerido Tipo Descripción
payeeIBAN String IBAN de destino del importe ordenado en el payOut.
payeeName String Titular del IBAN de destino del importe ordenado en el payOut.
amount Number Importe del payOut multiplicado por 100, sin decimales. Por ejemplo, 35598 = 355,98 Euros.
description String Concepto del payOut. Tamaño máximo: 140 caracteres.
reference No String Identificador único del payouts informado por el Cliente-Integrador, gracias al cual se puede identificar una orden de pago en sus propios sistemas.
collectingIBAN No String IBAN origen emisor del payOut, en caso de que se dispongan de múltiples cuentas.
okNotifUrl No String URL a la que se notifica la información de un payOut finalizado con éxito. Debe tenerse en cuenta que, tanto para el entorno de SANDBOX como para el de PRODUCCIÓN se debe informar un parámetro okNotifUrl de un entorno diferente al Local. En caso contrario, el proceso de notificación no se podrá llevar a cabo, ya que la URL informada debe ser accesible por INESPAY.
okNotifUrlContentType No String Formato de la notificación realizada por INESPAY a la URL informada en el parámetro okNotifUrl. Los valores posibles son : x-www-form-urlencoded o json. En caso de no informarse, el valor por defecto es x-www-form-urlencoded.
errorNotifUrl No String URL a la que se notifica la información de un payOut que no ha podido ser procesado, con el fin de que el Cliente-Integrador pueda lanzar nuevamente el proceso de payOut.
errorNotifUrlContentType No String Formato de la notificación realizada por INESPAY a la URL informada en el parámetro errorNotifUrl. Los valores posibles son : x-www-form-urlencoded o json. En caso de no informarse, el valor por defecto es x-www-form-urlencoded.

Respuesta a la petición de payout

Parámetro Tipo Descripción
payoutId String Identificador único
status String Código de éxito (200) o código de error
statusDesc String Descripción del código status

Notificación de un Payout a las urls informadas en okNotifUrl y errorNotifUrl

Parámetro Tipo Descripción
dataReturn String (JSON) Se encuentra codificado en Base64 y contiene los parámetros del pago:
    payoutId String Identificador único del Payout en los sistemas INESPAY
    codStatus String Código de estado, consultad los posibles valores de estado
    description String Concepto del Payout.
    amount Number Importe del Payout mutiplicado por 100, sin decimales
    reference String Identificador único del Payout asignado por el Cliente-Integrador
signatureDataReturn String Firma de dataReturn calculada con el algoritmo HmacSHA256, utilizando como clave la APIKEY proporcionada por INESPAY y codificada en base64

Consulta devoluciones

Servicio que permite consultar el estado de una devolución.

Entorno Tipo URL
SANDBOX (Pruebas) GET https://apiflow.inespay.com/san/v2/refunds/{refundId}
PRODUCCIÓN GET https://apiflow.inespay.com/pro/v2/refunds/{refundId}

Header

Parámetro Descripción
X-Api-Key API-KEY proporcionada por INESPAY
Authorization API-TOKEN proporcionado por INESPAY
Content-Type application/json

Parámetros url

Parámetro Requerido Tipo Descripción
refundId String Identificador único de la devolución.

Respuesta

Parámetro Tipo Descripción
refundId String Identificador único de la devolución
simplePayinId String Identificador único de la orden de pago
amount Number importe de la orden de devolución multiplicado por 100, sin decimales.
description String Concepto de la devolución
collectingIBAN String Cuenta de collecting emisora de la devolución
payeeIBAN String IBAN destino de la devolución
payeeName String Nombre del beneficiario de la cuenta destino de la devolución
okNotifUrl String URL a la que se notifica la información de la devolución finalizada con éxito.
errorNotifUrl String URL a la que se notifica la información de devolución que no ha podido ser procesada.
codStatus String Código del estado de la devolución. Los posibles estados se pueden consultar aquí
status String Código de éxito (200) o código de error
statusDesc String Descripción del código status

Consulta Payouts

Servicio que permite consultar el estado de un Payout.

Entorno Tipo URL
SANDBOX (Pruebas) GET https://apiflow.inespay.com/san/v2/payouts/{payoutId}
PRODUCCIÓN GET https://apiflow.inespay.com/pro/v2/payouts/{payoutId}

Header

Parámetro Descripción
X-Api-Key API-KEY proporcionada por INESPAY
Authorization API-TOKEN proporcionado por INESPAY
Content-Type application/json

Parámetros url

Parámetro Requerido Tipo Descripción
payoutId String Identificador único del Payout.

Respuesta

Parámetro Tipo Descripción
payoutId String Identificador único del Payout
amount Number importe de la orden de devolución multiplicado por 100, sin decimales.
description String Concepto de la devolución
collectingIBAN String Cuenta de collecting emisora de la devolución
payeeIBAN String IBAN destino de la devolución
payeeName String Nombre del beneficiario de la cuenta destino de la devolución
okNotifUrl String URL a la que se notifica la información de la devolución finalizada con éxito.
errorNotifUrl String URL a la que se notifica la información de devolución que no ha podido ser procesada.
codStatus String Código del estado de la devolución. Los posibles estados se pueden consultar aquí
status String Código de éxito (200) o código de error
statusDesc String Descripción del código status

Consulta de cuentas

El servicio de Consulta de Cuentas de Pago permite enviar una petición API para solicitar a INESPAY la información de la citada cuenta en tiempo real: número de IBAN, saldo disponible y divisa.

Entorno Tipo URL
SANDBOX (Pruebas) GET https://apiflow.inespay.com/san/v2/collecting/accounts
PRODUCCIÓN GET https://apiflow.inespay.com/pro/v2/collecting/accounts

Header

Parámetro Descripción
X-Api-Key API-KEY proporcionada por INESPAY
Authorization API-TOKEN proporcionado por INESPAY
Content-Type application/json

Respuesta a la petición de devolución de orden de pago

Parámetro Tipo Descripción
accounts array Array de cuentas
name String Nombre de la cuenta
accountNumber String Número de cuenta (IBAN)
amount Number Saldo disponible mutiplicado por 100, sin decimales. Por ejemplo: 35598 = 355,98 Euros
currency String Moneda
status String Código de éxito (200) o código de error
statusDesc String Descripción del código status

Estados Refunds/Payouts

Código Descripción
PENDING Pendiente de ser procesado por la entidad bancaria, es el estado inicial.
CONFIRMED El pago se ha enviado correctamente a la entidad bancaria
REJECTED El pago ha sido rechazado
DENIED El pago ha sido denegado
REVERSED El pago ha sido revertido
ERROR Pago con error

Códigos de error payouts/refunds

Código Descripción
R300 Las credenciales del proveedor de collecting son inválidas
R301 La orden de pago informada no existe
R302 El IBAN de la cuenta origen de la orden pago original no existe o es inválido
R303 El importe de la devolución es mayor que el importe de la orden de pago original
R304 La orden de pago informada no ha sido pagada
R305 El importe total de las devoluciones excede el importe de la orden de pago original
R306 Saldo insuficiente en la cuenta de collecting

Servicios Adicionales

Consulta de órdenes de pago

Este servicio opcional se utiliza como consulta de los enlaces de pago generados. Puede utilizarse por aquellos clientes/integradores que deseen recibir el estado y la información de una orden de pago en cualquier momento.

Petición de consulta de una orden de pago por Identificador

Entorno Tipo URL
SANDBOX (Pruebas) POST https://apiflow.inespay.com/san/info/payment-order
PRODUCCIÓN POST https://apiflow.inespay.com/pro/info/payment-order

Header

Parámetro Descripción
X-Api-Key API-KEY proporcionada por INESPAY
Authorization API-TOKEN proporcionada por INESPAY
Content-Type application/json

Body

Parámetro Requerido Tipo Descripción
idDebt String Identificador único de la orden de pago devuelto por INESPAY en la petición API de inicio de pago (idDebt) o en el callback (transactionId)

Respuesta a la petición de consulta de una orden de pago por Identificador

Parámetro Tipo Descripción
paymentOrders Array (PaymentOrder) Array de elementos PaymentOrder, devolverá 1 elemento si existe la orden de pago o un array vacío [] si no existe.
status String Código de éxito (200) o error
description String Descripción del código status

Estructura PaymentOrder

Parámetro Tipo Descripción
idDebt String Identificador único de la orden de pago
enabled Boolean Indica si el enlace de pago se encuentra activo (puede utilizarse por el Cliente-Pagador) o inactivo (ya no puede utilizarse). Puede activar o desactivar enlaces de pago en cualquier momento utiliza el servicio Activar/Desactivar órdenes de pago.
amount Number Importe de la orden de pago mutiplicado por 100, sin decimales
subject String Concepto de la orden de pago
reference String Identificador interno de la orden de pago asignado inicialmente por el Cliente-Integrador
holderDestiny String Titular del IBAN de destino (beneficiario)
accountDestiny String Número IBAN destino de la transferencia
customBeneficiary String Nombre del beneficiario del pago que se mostrará al Cliente-Pagador en la aplicación web Transferencia Bancaria PSD2
customData String Campo personalizable informado por el Cliente-Integrador en la llamada API de inicio de pago
urlLong String Enlace de pago
urlShort String Enlace de pago recortado
urlShortClicks Number Número de pulsaciones (clics) realizados sobre sobre el enlace de pago (urlShort)
codStatus String Código del estado de la orden de pago. Valores posibles: OK=Éxito, PENDING=Orden de pago no completada por el Cliente-Pagador, PARTIALLY_ACCEPTED = Orden de pago pendiente de autorización por otro Cliente-Pagador (firma mancomunada)
periodicOriginAccount String IBAN del Cliente-Pagador, en caso de haberse solicitado el inicio de un pago periódico
periodicFrequency String Frecuencia de ejecución del pago periódico, en caso de haberse solicitado el inicio de un pago periódico
periodicStartDate String Fecha de inicio del pago, en caso de haberse solicitado el inicio de un pago periódico
periodicEndDate String Fecha final del pago, en caso de haberse solicitado el inicio de un pago periódico
periodicExecutionRule String Regla de ejecución del pago, en caso de haberse solicitado el inicio de un pago periódico. Valor por defecto: following
periodicDayOfExecution String Día de ejecución del pago, en caso de haberse solicitado el inicio de un pago periódico. Este valor se recoge del mismo día informado en periodicStartDate
createAt Number Fecha de creación del enlace de pago, en formato milisegundos
updateAt Number Fecha de actualización del enlace de pago, en formato milisegundos
expireAt Number Fecha de caducidad del enlace de pago, en formato milisegundos

Petición de consulta de órdenes de pago por fecha

Entorno Tipo URL
SANDBOX (Pruebas) POST https://apiflow.inespay.com/san/info/payment-orders
PRODUCCIÓN POST https://apiflow.inespay.com/pro/info/payment-orders

Header

Parámetro Descripción
X-Api-Key API-KEY proporcionada por INESPAY
Authorization API-TOKEN proporcionada por INESPAY
Content-Type application/json

Body

Parámetro Requerido Tipo Descripción
dateFrom String Fecha en formato milisegundos UTC
dateTo No Number Fecha en formato milisegundos UTC. Si no se especifica, se realiza la búsqueda hasta la fecha actual
pageRequest String Número de página solicitada. La primera página es siempre la número 1
pageSize No String Número máximo de elementos devueltos por página. Si no se especifica, el tamaño de página por defecto es de 50 elementos. El máximo valor admitido es 300
orderAsc No Boolean Tipo de ordenación por fecha de creación: true=ASC o false=DESC

Respuesta a la petición de consulta de órdenes de pago por fecha

Parámetro Tipo Descripción
itemsReturned Number Número de elementos (paymentOrders) devueltos en la página actual
currentPage Number Número de página actual
totalItems Number Número total de elementos (paymentOrders). Es la suma de los elementos de todas las páginas
totalPages Number Número total de páginas existentes
paymentOrders Array (PaymentOrder) Array de elementos PaymentOrder
status String Código de éxito (200) o error
description String Descripción del código status

Activar/Desactivar enlaces de pago

Este servicio opcional permite al Cliente-Integrador activar o desactivar enlaces de pago, permitiendo al Cliente-Pagador hacer uso de los mismos o no.

Petición de activación/desactivación de enlaces de pago

Entorno Tipo URL
SANDBOX (Pruebas) POST https://apiflow.inespay.com/san/update/enable-disable-payment-order
PRODUCCIÓN POST https://apiflow.inespay.com/pro/update/enable-disable-payment-order

Header

Parámetro Descripción
X-Api-Key API-KEY proporcionada por INESPAY
Authorization API-TOKEN proporcionada por INESPAY
Content-Type application/json

Body

Parámetro Requerido Tipo Descripción
idDebt String Identificador único de la orden de pago devuelto por INESPAY en la petición API de inicio de pago (idDebt) o en el callback (transactionId)
enable Boolean true = enlace de pago activado, false = enlace de pago desactivado

Respuesta a la petición de activación/desactivación de órdenes de pago

Parámetro Tipo Descripción
status String Código de éxito (200) o error
description String Descripción del código status

Generación de fichero de devoluciones

Este servicio permite generar un fichero de transferencias (formato CSB34) que podrá tramitar a través de su Entidad Financiera para devolver órdenes de pago procesadas por INESPAY, permitiendo informar un importe y concepto diferentes. Una vez generado el fichero, puede proceder a su envío a través de su banca online. En función de la entidad financiera con la que trabaje, es posible que le requiera la contratación del servicio de tramitación de ficheros de pagos o transferencias SEPA (CSB34), informándole de un código de Emisor/Presentador (generalmente coincidente con el NIF/CIF) y un sufijo (generalmente 000).

Entorno Tipo URL
SANDBOX (Pruebas) POST https://apiflow.inespay.com/san/refund/sepa-xml
PRODUCCIÓN POST https://apiflow.inespay.com/pro/refund/sepa-xml

Header

Parámetro Descripción
X-Api-Key API-KEY proporcionada por INESPAY
Authorization API-TOKEN proporcionada por INESPAY
Content-Type application/json

Body

Parámetro Requerido Tipo Descripción
debtorIdFromBank String Código de Emisor/Presentador (generalmente coincide con el NIF/CIF) y un sufijo (generalmente 000) facilitado por la entidad bancaria. (P. Ej: B99999999001)
debtorBic String BIC correspondiente a la entidad financiera del Cliente-Integrador
debtorIban String IBAN del Cliente-Integrador en la que se realizará el cargo de las transferencias
debtorName String Nombre del Cliente-Integrador (Ordenante)
paymentOrders Array (PaymentOrder) Array de órdenes de pago a transferir
batchBooking No Boolean Identificador de cargo único en la cuenta bancaria: Cargo único = true; múltiples cargos individuales = false. En caso de no informarse, u valor por defecto es false

Array (PaymentOrder)

Parámetro Tipo Descripción
idDebt String Identificador único de la orden de pago devuelto por INESPAY en la petición API de inicio de pago (idDebt) o en el callback (transactionId)
amount String Importe de la devolución mutiplicado por 100, sin decimales. Puede ser inferior al importe original de la orden de pago pero no puede ser superior
subject String Concepto de la transferencia (P. Ej: Devolución factura). Tamaño máximo: 140 caracteres

Respuesta a la petición

Parámetro Tipo Descripción
xml String XML en formato SEPA (CSB34). Las comillas dobles (") se encuentran escapadas mediante la barra invertida (\)
status String Código de éxito (200) o error
description String Descripción del código status

Códigos de respuesta

Listado de códigos de estado y error devuelto por la API Transferencia Bancaria PSD2.

Código Descripción Información
200 OK_DEFAULT Éxito petición API (OK)
E300 ERROR_DEFAULT Error genérico (KO)
E301 INVALID_PARAMS Error parámetros incorrectos

Librerías API (SDK)

Con el objetivo de facilitar la integración de la API Transferencia Bancaria PSD2, se proporciona una librería que facilita y simplifica la integración de la misma, de forma que sólo es necesario copiar y pegar unas sencillas líneas de código.

PHP

Descargar SDK PHP API PAYFLOW v1.0.8

Pago simple

Permite generar pagos en tiempo real con una cuenta bancaria de destino fija asociada al Cliente-Integrador, informada y validada en el Dashboard de Inespay. El enlace de pago emitido tiene una validez de 30 minutos desde que es generado.

Pago simple
            ------------
            <?php
            require_once('InespayApiPublic.php');

            $environmentApiInespay = InespayApiPublic::ENV_SAN; //Sandbox (pagos fictícios)
            //$environmentApiInespay = InespayApiPublic::ENV_PRO; //Producción (pagos reales)
            $apiKeyInespay = 'APIKEY API Transferencia Bancaria PSD2';
            $tokenInespay = 'TOKEN API Transferencia Bancaria PSD2';

            $apiInespay = new InespayApiPublic();
            $apiInespay->setEnvironmentInespay($environmentApiInespay);
            $apiInespay->setApiKeyInespay($apiKeyInespay);
            $apiInespay->setTokenInespay($tokenInespay);

            //Campos a rellenar dinámicamente
            $apiInespay->setSubject('Prueba pago simple INESPAY');   //Concepto del pago
            $apiInespay->setAmount(1.99);                //Importe con 2 decimales separados por un punto
            $apiInespay->setReference('ID_2022_AP');     //Identificador interno del pago personalizable por el Cliente-Integrador  

            //Opcionales
            $apiInespay->setUrlOk('https://www.example.com/ok.php'); //Url retorno éxito
            $apiInespay->setUrlError('https://www.example.com/error.php'); //Url retorno error
            $apiInespay->setUrlNotif('https://www.example.com/notif.php'); //Url notificación (Callback)
            $apiInespay->setCustomData("Custom data personalizado");

            $response = $apiInespay->generateSimplePaymentUrl(); //Llamada síncrona API Transferencia Bancaria PSD2

            if ( $response->getStatusCode() == InespayApiPublic::STATUS_CODE_SUCCESS){
                //Éxito generación URL de pago firmada
                echo $response->getUrlSigned();
            }else{
                //Error generación URL
            }
            ?>
            

Notificación del Estado de la Transacción (Callback)

Verificación de la firma de los datos enviados por INESPAY para asegurar que la respuesta procede de INESPAY y no han sido alterados. Esta verificación se debe realizar siempre por el Cliente-Integrador de la API en su lado de servidor.

Notificación del Estado de la Transacción (Callback)
            -----------------------------------------------------
            <?php
            require_once('InespayApiPublic.php');

            $apiKeyInespay = 'APIKEY API Transferencia Bancaria PSD2';
            $apiInespay = new InespayApiPublic();
            $apiInespay->setApiKeyInespay($apiKeyInespay);

            //Params received in POST    
            if (!empty( $_POST )) {

                $apiInespay->setDataReturn($_POST['dataReturn']);
                $apiInespay->setSignatureDataReturn($_POST['signatureDataReturn']);

                    //Firma OK, la respuesta ha sido enviada por INESPAY
                    if ($apiInespay->isDataReturnValid()){
                        echo "<p>FIRMA OK, realizar tareas en el Cliente Final</p>";
                        echo "<p>status=".$apiInespay->getStatusFromDataReturn()."</p>";
                        echo "<p>description=".$apiInespay->getDescriptionFromDataReturn()."</p>";
                        echo "<p>amount=".$apiInespay->getAmountFromDataReturn()."</p>";
                        echo "<p>reference=".$apiInespay->getReferenceFromDataReturn()."</p>";
                        echo "<p>transactionId=".$apiInespay->getTransactionIdFromDataReturn()."</p>";
                        echo "<p>customData=".$apiInespay->getCustomDataFromDataReturn()."</p>";

                    } else {
                        echo "<p>FIRMA KO, firma inválida revise los parámetros</p>";
                    }
                }
            ?>
            

Pago periódico

Permite generar órdenes de pago periódicas. El enlace de pago emitido tiene una validez de 30 minutos desde que es generado.

Pago periódico
            ---------------
            <?php
            require_once('InespayApiPublic.php');

            $environmentApiInespay = InespayApiPublic::ENV_SAN; //Sandbox (pagos fictícios)
            //$environmentApiInespay = InespayApiPublic::ENV_PRO; //Producción (pagos reales)
            $apiKeyInespay = 'APIKEY API Transferencia Bancaria PSD2';
            $tokenInespay = 'TOKEN API Transferencia Bancaria PSD2';

            $apiInespay = new InespayApiPublic();
            $apiInespay->setEnvironmentInespay($environmentApiInespay);
            $apiInespay->setApiKeyInespay($apiKeyInespay);
            $apiInespay->setTokenInespay($tokenInespay);

            //Campos a rellenar dinámicamente
            $apiInespay->setSubject('Prueba pago periódico INESPAY');   //Concepto del pago
            $apiInespay->setAmount(1.10);                //Importe con 2 decimales separados por un punto
            $apiInespay->setReference('PE_2021_FO');     //Identificador interno del pago personalizable por el Cliente-Integrador
            $apiInespay->setFrequency('Monthly');    
            $apiInespay->setDebtorAccount('ES2501822200160201933547'); //Sanbox debtorAccount
            $apiInespay->setStartDate('2021-12-01');

            //Opcionales
            $apiInespay->setUrlOk('https://www.example.com/ok.php'); //Url retorno éxito
            $apiInespay->setUrlError('https://www.example.com/error.php'); //Url retorno error
            $apiInespay->setUrlNotif('https://www.example.com/notif.php'); //Url notificación (Callback)
            $apiInespay->setCustomData("Custom data personalizado");
            $apiInespay->setEndDate('2022-12-01');

            $response = $apiInespay->generatePeriodicPaymentUrl(); //Llamada síncrona API Transferencia Bancaria PSD2

            if ( $response->getStatusCode() == InespayApiPublic::STATUS_CODE_SUCCESS){
                //Éxito generación url de pago firmada
                echo $response->getUrlSigned();
            }else{
                //Error generación url
            }
            ?>
            

Cancelación pago periódico

Permite cancelar órdenes de pago periódicas que se han generado previamente con el servicio de Alta de Pagos Periódicos.

Cancelación pago periódico
            ---------------------------
            <?php
            require_once('InespayApiPublic.php');

            $environmentApiInespay = InespayApiPublic::ENV_SAN; //Sandbox (pagos fictícios)
            //$environmentApiInespay = InespayApiPublic::ENV_PRO; //Producción (pagos reales)
            $apiKeyInespay = 'APIKEY API Transferencia Bancaria PSD2';
            $tokenInespay = 'TOKEN API Transferencia Bancaria PSD2';

            $apiInespay = new InespayApiPublic();
            $apiInespay->setEnvironmentInespay($environmentApiInespay);
            $apiInespay->setApiKeyInespay($apiKeyInespay);
            $apiInespay->setTokenInespay($tokenInespay);

            //Campos a rellenar dinámicamente
            $apiInespay->setDebtId('XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXXXXXX');
            $apiInespay->setReference('CP_2021_CANCEL'); 
            $response = $this->apiInespay->generateCancelPeriodicPaymentUrl(); //Llamada síncrona API Transferencia Bancaria PSD2

            //Opcionales
            $apiInespay->setUrlOk('https://www.example.com/ok.php'); //Url retorno éxito
            $apiInespay->setUrlError('https://www.example.com/error.php'); //Url retorno error
            $apiInespay->setUrlNotif('https://www.example.com/notif.php'); //Url notificación
            $apiInespay->setCustomData("Custom data personalizado");

            $response = $apiInespay->generateCancelPeriodicPaymentUrl(); //Llamada síncrona API Transferencia Bancaria PSD2

            if ( $response->getStatusCode() == InespayApiPublic::STATUS_CODE_SUCCESS){
                //Éxito generación url de pago firmada
                echo $response->getUrlSigned();
            }else{
                //Error generación url
            }
            ?>