Wealth Reader (8.1.9)

Download OpenAPI specification:

Las APIs regulatorias basadas en PSD2 proporcionan acceso a cierta información financiera como saldos de cuentas bancarias y transacciones. Sin embargo, hay otras fuentes de información patrimonial que no son accesibles por estas APIs. La API de Wealth Reader amplía la información ofrecida por las APIs regulatorias proporcionando acceso en tiempo real a las fuentes patrimoniales adicionales en cualquier entidad del mundo. Existen otros dos documentos relacionados que te ayudarán a integrar la API de Wealth Reader. Uno es la guía de integración del widget Javascript: https://docs-es.wealthreader.com/ y el otro una colección Postman basada en esta documentación. Muy importante: Esta definición de la API está adaptada para los clientes que integran por Widget, por lo que se han omitido algunos parámetros que no son necesarios para este tipo de integración, como pueden ser los de autenticación con el banco, ya que se utilizará token.

Core

API principal requerida para integraciones estándar

Obtiene los activos financieros y el detalle de su composición

Obtiene los activos financieros y el detalle de su composición de carteras de inversión (acciones, fondos, bonos, planes de pensiones, inversiones alternativas, criptoactivos), tarjetas de crédito, seguros y préstamos. Incluye información de titularidad de cada uno de los activos así como identificadores únicos que facilitan el tratamiento del dato. Es posible obtener datos Mock. Consulte con el equipo técnico cómo hacerlo.

Request Body schema: application/x-www-form-urlencoded
api_key
string

Identifica al cliente en el servicio

code
string

Nombre de la entidad. El listado completo está disponible con GET

Ejemplo: caixabank

token
string

Identifica la credencial custodiada. El flujo mediante el cual se ha obtenido el token se describe en el documento 'Guía de integración del Widget'. Los siguientes usuarios Mock están disponibles: MOCKDATA, respuesta OK; MOCKOTP, respuesta con desafío OTP; MOCKLOGINKO, respuesta con error de login

Ejemplo: MOCKDATA

product_types
string
Enum: "accounts" "portfolios" "cards" "receipts" "loans" "factoring" "confirming" "properties" "invoices" "files" "deposits" "leases" "insurances"

Lista de tipos de producto de los que se desea obtener información. Acepta múltiples valores separados por comas.

Ejemplo: accounts,portfolios

only_balances
boolean
Default: false

Indica si se desean obtener solo los saldos de los productos en lugar de toda la información disponible. Valor por defecto: false.

Ejemplo: false

fetch_transaction_details
boolean
Default: false

Indica si se deben obtener detalles ampliados de las transacciones cuando el conector de la entidad lo soporte. IMPORTANTE: Activarlo implica realizar una o más navegaciones adicionales por cada transacción para enriquecer la información devuelta. Esto aumentará inevitablemente y de forma significativa el tiempo de ejecución. El número de navegaciones adicionales crece con el volumen de transacciones. Se recomienda activarlo únicamente cuando se tenga certeza de que se requiere un nivel de detalle adicional al devuelto por defecto. Los detalles obtenidos se insertan en la clave additional_info a nivel de cada transacción. El uso de este parámetro requiere un entorno dedicado.

Ejemplo: false

date_from
string <date>

Fecha a partir de la cual se solicitan las transacciones, en formato AAAA-MM-DD. Debe ser una fecha anterior a hoy.

Ejemplo: 2024-01-01

date_to
string <date>

Esto solo aplica para restringir por fechas futuras para productos loan y confirming, en formato AAAA-MM-DD. La fecha debe ser posterior a hoy

Ejemplo: 2025-12-31

required_products_schema
string

Esquema de productos requeridos. Indica las cuentas o tarjetas de las que se desea obtener datos, con configuraciones adicionales.

Ejemplo:

{
  "ACCOUNTS": {
    "0ae4d722b1c82feeafb4b36b2893230444071335": {
      "only_balances": false,
      "add_pdf_from_uuids": [
        "90763109952d4f2ebece8dceca8254078c5384a0"
      ],
      "date_from": "2024-04-03"
    }
  },
  "CARDS": {
    "957e6f63546f3fecacce80192b6f7436496dc057": {}
  }
}
add_pdf_from_uuids
string

Acepta uuids de transacciones separados por comas. Parámetro que solo se tiene en cuenta si product_types es ALL o incluye accounts. Añade el documento PDF asociado a cada una de las transacciones bancarias solicitadas.

Ejemplo:

20966426721d0885ef9d4b95535e1d3198936f16,8772d6c978d37d7af83094abf380b8b703e94105,e59296b79e7f80cec26679d2c65883025fd59295
otp_method
string

Indica qué canal de entrega del segundo factor debe usarse cuando la API devolvió el código 2017 o 20171 (varios métodos OTP). Repita la petición con el mismo identificador de sesión de esa respuesta y envíe en este campo el valor exacto del campo otp_method de uno de los objetos de statistics.otpMethods (no use la posición en el array ni un alias). Opcional en la primera petición con credenciales; debe enviarse tras la elección del usuario. El ejemplo que muestra la referencia (p. ej. OTP_SMS ****1234) es solo orientativo: copie siempre la cadena que devuelve statistics.otpMethods para su entidad (puede ser otro formato, p. ej. SMS *****1234, según el banco).

Ejemplo: OTP_SMS ****1234

Responses

Request samples

Content type
application/x-www-form-urlencoded
api_key=a1b2c3d4e5f6g7h8i9j0&code=caixabank&token=1234Asdf&product_types=accounts%2Cportfolios&only_balances=false&date_from=2024-01-01&date_to=2025-12-31&required_products_schema=%7B%22ACCOUNTS%22%3A%7B%220ae4d722b1c82feeafb4b36b2893230444071335%22%3A%7B%22only_balances%22%3Afalse%2C%22add_pdf_from_uuids%22%3A%5B%2290763109952d4f2ebece8dceca8254078c5384a0%22%5D%2C%22date_from%22%3A%222024-04-03%22%7D%7D%2C%22CARDS%22%3A%7B%22957e6f63546f3fecacce80192b6f7436496dc057%22%3A%7B%7D%7D%7D&add_pdf_from_uuids=20966426721d0885ef9d4b95535e1d3198936f16%2C8772d6c978d37d7af83094abf380b8b703e94105

Response samples

Content type
application/json
[
  • {
    }
]

Listado de tipos de transacción

query Parameters
lang
string
Default: "es"
Enum: "es" "en"

Response language

Responses

Response samples

Content type
application/json
[
  • [
    ]
]

Consulta los tokens asociados a una api_key

Usa este método para consultar los tokens vinculados a una api_key específica. Los resultados se paginan: limit fija el número de tokens por página (máximo 500) y page indica la página que se devuelve. api_key, method y limit son obligatorios; si falta alguno o no es válido, la API responde con HTTP 400 y el código de error 2.

Request Body schema: application/x-www-form-urlencoded
required
api_key
required
string^[a-z0-9]{8}$

api_key para identificar al cliente en el servicio

method
required
string
Value: "get"

Operación que se realiza. El único valor admitido es get.

Ejemplo: get

limit
required
integer [ 1 .. 500 ]

Número de tokens por página. Mínimo 1, máximo 500.

Ejemplo: 100

page
integer >= 1
Default: 1

Especifica el número de página que deseas recuperar. Cada página contiene hasta limit tokens. Si no se proporciona, el valor por defecto es 1.

Ejemplo: 1

code
string

Código de la entidad por el que se filtran los tokens. Si se omite, se devuelven los tokens de todas las entidades.

Ejemplo: bbva

sort_by
string
Default: "created_at"
Enum: "created_at" "accesed_at"

Campo por el que se ordenan los resultados: created_at (fecha de creación) o accesed_at (fecha del último acceso). Por defecto, created_at.

Ejemplo: created_at

sort_order
string
Default: "DESC"
Enum: "ASC" "DESC"

Sentido de la ordenación: ASC (ascendente) o DESC (descendente). Por defecto, DESC.

Ejemplo: DESC

Responses

Request samples

Content type
application/x-www-form-urlencoded
api_key=a1b2c3d4&method=get&limit=100&page=1

Response samples

Content type
application/json
{
  • "success": true,
  • "payload": {
    },
  • "pagination": {
    },
  • "statistics": {
    }
}

Revocar un token

Este método permite revocar un token existente para desautorizar futuras solicitudes de acceso a la API.

Request Body schema: application/x-www-form-urlencoded
required
api_key
string

Identifica al cliente en el servicio

token
string

Token a revocar.

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Token successfully revoked."
}

Reasignar un token a una api_key diferente

Este método permite reasignar un token de una api_key a otra.

Request Body schema: application/x-www-form-urlencoded
required
api_key_source
string

api_key desde la cual reasignar el token.

api_key_target
string

api_key a la cual reasignar el token.

token
string

Token a reasignar.

Ejemplo: FRJ0mHlaqZwLzu

Responses

Request samples

Content type
application/x-www-form-urlencoded
api_key_source=a1b2c3d4e5f6g7h8i9j0&api_key_target=b2c3d4e5f6g7h8i9j0k1&token=FRJ0mHlaqZwLzu

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Token successfully reassigned."
}

Añadir un nuevo dominio

Añade la asociación entre dominio que hospedará el widget con el webhook de destino. Para editar o probar sus dominios, use https://www.wealthreader.com/clients/

Request Body schema: application/x-www-form-urlencoded
required
method
required
string

Method to execute.

Ejemplo: add

api_key
required
string

User's API key.

domain
required
string

Domain to add.

Ejemplo: http://desarrollo.cliente.es

url_callback
required
string

URL for callback.

Ejemplo: https://desarrollo.cliente.es/hooks/wealthreader

tokenize
required
string
Enum: "1" "0"

Controla si el widget inicia un flujo de tokenización:

  • 1 - El usuario se autentica con la entidad financiera (login, consentimiento, 2FA si aplica) y se devuelve un token reutilizable para futuras consultas
  • 0 - No se realiza tokenización. Se debe incluir en la petición el valor del token obtenido previamente

Ejemplo: 1

Responses

Request samples

Content type
application/x-www-form-urlencoded
method=add&api_key=a1b2c3d4e5f6g7h8i9j0&domain=https%3A%2F%2Fwww.cliente.com&url_callback=https%3A%2F%2Fwww.cliente.com%2Fwebhooks%2Fwealthreader&tokenize=1

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string"
}

Listado de códigos de error

Listado de códigos de error. Presta especial atención a que no todos los códigos de error deben recibir el mismo tratamiento por parte de tu aplicación. Ante un error de password incorrecto no debes reintentar la llamada con los mismos parámetros, pero ante un error que te indique que la entidad está en mantenimiento sí puedes reintentarlo. Pide una sesión técnica con nuestro equipo para resolver cualquier duda sobre la gestión de errores.

query Parameters
lang
string
Default: "es"
Enum: "es" "en"

Response language

Responses

Response samples

Content type
application/json
[
  • [
    ]
]

Listado de códigos de warning

Listado de códigos de warning.

query Parameters
lang
string
Default: "es"
Enum: "es" "en"

Response language

Responses

Response samples

Content type
application/json
[
  • [
    ]
]

Advanced

Endpoints opcionales no requeridos para integraciones estándar. Usar solo si Wealth Reader lo indica explícitamente.

Obtiene el listado de entidades soportadas

Obtiene el listado de entidades soportadas y la información necesaria para dibujar el formulario de login de la entidad.

query Parameters
show_only_tested
integer
Default: 0
Enum: 0 1

Indicates whether to show only tested entities. Default value is 0. In production environments, always use 1.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Verifica la titularidad de una cuenta bancaria mediante IBAN

Permite verificar si una persona física o jurídica es titular de una cuenta bancaria específica mediante el IBAN y los datos identificativos del supuesto titular. Requiere una api_key con el producto IBAN_OWNERSHIP autorizado. La petición inicial se envía con api_key, iban, document_type, document_number y holder_name. Si el resultado devuelve el estado PENDING, se puede volver a consultar la verificación enviando únicamente api_key y session. NO_RESPONSE es un resultado final de error: para reintentar debe iniciarse una nueva verificación sin session.

Request Body schema: application/x-www-form-urlencoded
required
One of
api_key
required
string

Identifica al cliente en el servicio. Debe tener autorizado el producto IBAN_OWNERSHIP.

iban
required
string

Código IBAN de la cuenta bancaria a verificar (sin espacios)

Ejemplo: ES4914651234561234567890

document_type
required
string
Enum: "NIF" "NIE" "Pasaporte" "CIF"

Tipo de documento de identificación

Ejemplo: NIF

document_number
required
string

Número del documento de identificación

Ejemplo: 12345678Z

holder_name
required
string

Nombre completo de la persona física o razón social

Ejemplo: LUIS GARCIA BAQUERO

Responses

Request samples

Content type
application/x-www-form-urlencoded
Example
api_key=a1b2c3d4e5f6g7h8i9j0&iban=ES4914651234561234567890&document_type=NIF&document_number=12345678Z&holder_name=LUIS%20GARCIA%20BAQUERO

Response samples

Content type
application/json
Example
{
  • "success": true,
  • "payload": {
    },
  • "statistics": {
    }
}

Registrar un nuevo usuario

Este endpoint permite registrar un usuario ya sea en la plataforma de traspaso de carteras, Easytransfer, como en la herramienta de reporting, Acumulas, en a partir de un identificador único.

Request Body schema: application/x-www-form-urlencoded
required
api_key
required
string

Authentication key (8 alphanumeric characters)

user_id
required
string

User identification document.

Ejemplo: 12345678A

service
required
string
Enum: "integra" "easy-transfer"

Service associated with the user. Determines the data flow.

Ejemplo: easy-transfer

email
required
string <email>

User email, used according to service type.

Ejemplo: sai_banker@singularbank.com

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "User registered successfully"
}

Consultar el estado de registro de un usuario

Consulta si un usuario está registrado en el sistema Easytransfer o Acumulas y responde el enlace de acceso único para el usuario.

Request Body schema: application/x-www-form-urlencoded
required
api_key
required
string

Authentication key

user_id
required
string

User identification document.

Ejemplo: 12345678A

Responses

Response samples

Content type
application/json
{}

Método para dar de baja un usuario previamente registrado

Este endpoint permite dar de baja un usuario del servicio de Easytransfer o plataforma Acumulas.

Request Body schema: application/x-www-form-urlencoded
required
api_key
required
string

Authentication key (8 alphanumeric characters)

user_id
required
string

User identification document.

Ejemplo: 12345678A

service
required
string
Enum: "integra" "easy-transfer" "all"

Service from which to unregister the user. 'all' for all services.

Ejemplo: easy-transfer

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "User unregistered successfully"
}

Carga de conexiones en batch

Los endpoints agrupados en la etiqueta "batch" permiten procesar múltiples conexiones bancarias de forma asíncrona, a diferencia del método /entities/ que es síncrono. Ideal para:

  • Procesar grandes volúmenes de conexiones, delegando el proceso en Wealthreader
  • Evitar timeouts en conexiones lentas
  • Recibir una notificación webhook por cada credencial completada

Importante: Para utilizar la gestión de procesos batch del lado de Wealthreader es necesario contar con un entorno dedicado. Este endpoint no está disponible en api.wealthreader.com.

Este método inicia el procesamiento asíncrono de una o múltiples conexiones bancarias. Retorna inmediatamente un batch_id para seguimiento. Se envía una notificación webhook a notification_url por cada credencial completada individualmente, con los campos: batch_id, credential_id, status, timestamp.

Request Body schema: application/json
required
api_key
required
string

Identifies the client in the service

notification_url
required
string <uri>

Webhook URL. A notification is sent to this URL for each individual credential as soon as it completes processing, not only once all connections in the batch are done.

Ejemplo: https://example.com/webhook/batch-complete

required
Array of objects (batch-connection) non-empty

List of connections to process

Responses

Callbacks

Request samples

Content type
application/json
{
  • "api_key": "a1b2c3d4e5f6g7h8i9j0",
  • "connections": [
    ]
}

Response samples

Content type
application/json
{
  • "success": true,
  • "batch_id": "batch_20250120_a1b2c3d4",
  • "total_connections": 5,
  • "estimated_completion_time": "2025-01-20T10:45:00Z"
}

Callback payload samples

Callback
POST: Webhook fired when a credential finishes processing
Content type
application/json
{
  • "batch_id": 10863151,
  • "credential_id": "cred_demo_002",
  • "status": "completed",
  • "timestamp": "2026-05-13T08:02:47+00:00"
}

Obtiene estadísticas generales sobre las conexiones de un batch

Recupera estadísticas generales sobre el resultado del procesamiento de todas las conexiones de un batch.

Request Body schema: application/json
required
api_key
required
string

Identifies the client in the service

batch_id
required
string

Batch ID

Responses

Request samples

Content type
application/json
{
  • "api_key": "string",
  • "batch_id": "string"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "batch_id": "batch_20250120_a1b2c3d4",
  • "status": "completed",
  • "statistics": {
    }
}

Obtiene el resultado individual de una conexión específica dentro de un batch

Recupera el resultado de una conexión específica del batch.

Request Body schema: application/json
required
api_key
required
string

Identifies the client in the service

batch_id
required
string

Batch ID

credential_id
required
string

Filter by specific credential_id

Responses

Request samples

Content type
application/json
{
  • "api_key": "string",
  • "batch_id": "string",
  • "credential_id": "string"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "payload": {
    },
  • "statistics": {
    }
}

Cards (real time)

Sincronización de gastos de tarjeta en tiempo real desde la app móvil Open Sync: pre-registro de empleados por cliente, webhooks firmados (card_transaction.created / card_enrollment.confirmed), y consulta / backfill por API REST.

Registrar o rotar el webhook de tarjetas en tiempo real

Da de alta o actualiza la URL de webhook del cliente para los eventos card_transaction.created y card_enrollment.confirmed (ver el esquema cards-webhook-delivery para el formato de entrega y la firma). En el primer alta, o cuando rotate_secret es true, se genera un webhook_secret nuevo (64 caracteres hex) que se devuelve una única vez; en cualquier otro caso webhook_secret viene null en la respuesta y no se puede volver a leer. webhook_url debe ser siempre https:// y resolver a un host público: se rechazan localhost y las direcciones privadas, de loopback, link-local (incluida la de metadatos de cloud), CGNAT, multicast y reservadas, escritas en cualquier notación (hexadecimal, decimal, octal, punteada corta o IPv6 con IPv4 embebida), y también los nombres que no resuelven. La misma comprobación se repite justo antes de cada envío, no sólo al registrar: si el host se repunta después a una dirección interna (DNS rebinding), la entrega se cierra como failed con response_excerpt "blocked_host". Enviar null en webhook_url desactiva los webhooks para ese cliente; omitir el campo deja la URL guardada como estaba, que es la forma de rotar el secreto sin tocar la URL.

Request Body schema: application/json
required
api_key
required
string

API key del cliente.

webhook_url
string or null

URL https:// que recibirá los eventos, en un host público que resuelva en DNS. null desactiva los webhooks; omitir el campo deja la URL guardada sin cambios.

Ejemplo: https://cliente.example.com/webhooks/wealthreader-cards

rotate_secret
boolean
Default: false

Si es true, genera y devuelve un webhook_secret nuevo.

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{}

Pre-registrar el email de un empleado

Da de alta una solicitud de alta ("enrollment") en estado pending con una caducidad corta (ttl_minutes, 20 por defecto, entre 1 y 60) para que el empleado la confirme abriendo la app móvil e introduciendo ese email (POST /user-sync-validation/, sin cambios de contrato para la app). Es idempotente: repetir la llamada para el mismo (api_key, email) mientras siga pending y sin caducar devuelve la misma solicitud. Si el email ya está vinculado al mismo cliente que llama, devuelve status "active" directamente. Si ya está vinculado a otro cliente distinto, devuelve 409. Límite de frecuencia: máximo 60 llamadas a este endpoint por api_key cada 60 segundos, contando todos los intentos y no sólo los que crean una fila, y comprobado antes que nada para que las respuestas que no crean nada (200 ya activo, 409 vinculado a otro cliente, 400) no sirvan como oráculo de enumeración. Superarlo devuelve 429 con code rate_limited.

Request Body schema: application/json
required
api_key
required
string

API key del cliente.

email
required
string <email>

Email del empleado a pre-registrar.

Ejemplo: empleado@cliente.com

ttl_minutes
integer [ 1 .. 60 ]
Default: 20

Minutos de validez de la solicitud antes de expirar.

Responses

Request samples

Content type
application/json
{
  • "api_key": "a1b2c3d4",
  • "email": "empleado@cliente.com",
  • "ttl_minutes": 20
}

Response samples

Content type
application/json
{
  • "success": true,
  • "payload": {
    }
}

Consultar el estado de un enrollment

Lectura del estado de una solicitud de alta. No tiene efectos secundarios sobre los usuarios de tarjetas, a diferencia de POST /user-sync-validation/, que sí confirma. La única escritura permitida es marcar como expired, de forma perezosa, un enrollment pending cuya fecha de caducidad ya pasó.

query Parameters
api_key
required
string
Example: api_key=a1b2c3d4

API key del cliente. Ojo: viaja en la query string, así que queda registrada en los logs de acceso y en los proxies intermedios.

Ejemplo: a1b2c3d4

enrollment_id
required
string
Example: enrollment_id=0f3a9c7b1d2e4f5a6b7c8d9e0f1a2b3c

Identificador devuelto por POST /cards/enrollments/.

Ejemplo: 0f3a9c7b1d2e4f5a6b7c8d9e0f1a2b3c

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "payload": {
    }
}

Consultar / backfill de movimientos de tarjeta en tiempo real

Devuelve los movimientos de tarjeta recibidos en tiempo real para los empleados vinculados a esta api_key, ordenados por id ascendente. Pensado tanto para backfill periódico (sondear con date_from/date_to y paginar con since_id) como para consulta puntual. Es el mismo objeto de transacción que viaja en el webhook card_transaction.created.

query Parameters
api_key
required
string
Example: api_key=a1b2c3d4

API key del cliente. Ojo: viaja en la query string, así que queda registrada en los logs de acceso y en los proxies intermedios.

Ejemplo: a1b2c3d4

date_from
string <date>
Example: date_from=2026-07-01

YYYY-MM-DD, sobre fecha_operacion. Por defecto: hoy menos 3 días.

Ejemplo: 2026-07-01

date_to
string <date>
Example: date_to=2026-07-11

YYYY-MM-DD, sobre fecha_operacion. Por defecto: hoy.

Ejemplo: 2026-07-11

email
string <email>
Example: email=empleado@cliente.com

Filtra por el email del empleado.

Ejemplo: empleado@cliente.com

since_id
integer
Example: since_id=216

Cursor exclusivo sobre el id de la transacción, para paginar.

Ejemplo: 216

limit
integer <= 1000
Default: 500
Example: limit=500

Máximo de movimientos a devolver (por defecto 500, máximo 1000).

Ejemplo: 500

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "payload": {
    }
}