Cuentas virtuales
Descubre cómo realizar transacciones de forma segura con cuentas virtuales
1. ¿Cómo funciona?
Las cuentas virtuales son números de cuenta generados automáticamente que facilitan el procesamiento de pagos de manera segura y organizada entre empresas y clientes. Actúan como intermediarios en las transacciones financieras, asignándose a clientes o transacciones específicas según las necesidades del negocio.
Estas cuentas pueden configurarse para uso único o para relaciones de pago recurrentes, lo que proporciona flexibilidad según el tipo de operación.
El proceso de uso de cuentas virtuales a través de ProntoPaga consta de las siguientes etapas:
- Creación de una cuenta virtual. El comercio inicia el proceso de creación de cuentas virtuales a través de la API de ProntoPaga.
- Generación de una cuenta virtual. ProntoPaga genera automáticamente una cuenta virtual única y envía los datos de la cuenta al comercio a través de nuestra API.
- Asignación de cuenta virtual. El comercio asigna la cuenta virtual al subcomercio, lo que permite una atribución y conciliación precisas de los pagos por su parte.
- Instrucciones de pago. El subcomercio envía las instrucciones de pago al pagador, proporcionándole los datos necesarios para completar la transacción en la cuenta virtual asignada.
- Pago a una cuenta virtual. El pagador inicia un pago a la cuenta virtual recibida. Esta transacción se procesa como una transferencia bancaria normal desde la app/web de su banco.
- Confirmación de pago al comercio: ProntoPaga envía una confirmación de pago al comercio con los datos clave de la transacción para la gestión financiera y la conciliación.
- Confirmación de pago al subcomercio/beneficiario. El comercio envía la confirmación de pago al subcomercio/beneficiario, con lo que se cierra el ciclo de la transacción.
1.2. Países y monedas
Los códigos de país están en formato ISO 3166-1 alpha-2. Las monedas están en formato ISO 4217.
| País | Código del país (ISO 3166-1 alpha-2) | Código de moneda (ISO 4217) |
|---|---|---|
| Chile | CL | CLP |
| Perú | PE | PEN / USD |
2. Genera un access token
Para conectarte de forma segura con las APIs de ProntoPaga y gestionar tus cuentas virtuales en el producto cuentas virtuales, debes generar un access token utilizando tus credenciales (username y password).
Ten en cuenta que estas credenciales se te proporcionarán durante el onboarding por el equipo de ProntoPaga. Conoce el endpoint para generar tu access token aquí.
A continuación, puedes ver un ejemplo del body de la solicitud.
{
"password": "4h123jl00",
"username": "virtualaccountspp"
}
RespuestaAl autenticarte correctamente con tus credenciales, recibirás un
accessTokenque te permite usar las APIs de cuentas virtuales, unrefreshTokenpara renovar tuaccessToken, unexpiresInque indica la duración del token en segundos y untokenTypeque indica el tipo de token.
2.1. Renueva un access token
Este endpoint te permite renovar un access token utilizando el refreshToken recibido en la respuesta de tu solicitud de inicio de sesión.
A continuación puedes ver un ejemplo del body de la solicitud:
{
"refreshToken": "1234uj00"
}3. Crea una cuenta virtual
Para solicitar la creación de una cuenta virtual a través de nuestra API deberás usar este endpoint.
Datos del beneficiarioTen en cuenta que debes recopilar los siguientes datos del subcomercio/beneficiario: nombre, apellido, dirección completa, país, número de identificación, entre otros.
A continuación, puedes ver un ejemplo del body request.
{
"beneficiary": {
"type": "individual",
"address": {
"city": "lima",
"comment": "reference",
"country": "peru",
"number": "12",
"state": "lima",
"street": "example st",
"zipCode": "12345"
},
"document": {
"type": "dni",
"id": "12345678"
},
"legalRepresentative": {
"document": {
"type": "ruc"
}
},
"industry": "gambling",
"lastname": "Doe",
"name": "Jane",
"website": "www.website.com"
},
"type": "recurrent",
"accountNumber": "1234567890",
"referenceId": "123456789"
}3.1. Respuestas
Como respuesta a una solicitud de creación de cuenta virtual exitosa, recibirás el número de la cuenta virtual creada en el parámetro vaNumber, junto con el estado y el tipo de cuenta, así como el virtualAccountId, que te permite identificar el número de cuenta asociado al subcomercio o al beneficiario.
Si la transacción es exitosa, recibirás la siguiente respuesta:
{
"accountNumber": "1234567890",
"channel": "api",
"currency": "PEN",
"referenceId": "9238271J134",
"status": "enabled",
"type": "recurrent",
"vaNumber": "12345678902",
"virtualAccountId": "98124568532"
}Si la transacción es rechazada, recibirás esta respuesta similar a esta:
{
"message": "string"
}3.2. Detalles de una cuenta virtual
Para consultar los detalles de una cuenta virtual creada utilizando nuestro endpoint, visita esta página.
3.2.1. Respuesta
A continuación se muestra la respuesta que recibirás con los detalles de la cuenta virtual.
{
"accountNumber": "1234567890",
"bankCode": "001",
"bankName": "BCP",
"beneficiary": {
"type": "individual"
},
"country": "peru",
"currency": "PEN",
"referenceId": "3fa85f74-5717-4562-b3fc-2c963f66afr0",
"status": "enabled",
"type": "recurrent",
"vaNumber": "1234567890",
"virtualAccountId": "98124568532"
}3.3. Modifica el estado de una cuenta virtual
Este endpoint te permite habilitar o deshabilitar una cuenta virtual, controlando si puede recibir fondos o realizar operaciones.
A continuación, puedes ver un ejemplo del body de la solicitud.
{
"reason": "no longer used",
"status": "disabled"
}3.3.1. Respuesta
Si tu solicitud se realiza correctamente, recibirás una respuesta similar a la que se muestra a continuación.
{
"status": "disabled",
"updatedAt": "2026-04-17T15:47:20.714Z",
"virtualAccountId": "12345688765432"
}4. Crea cuentas virtuales en batch
Para solicitar la creación de cuentas virtuales en batch a través de nuestra API deberás usar este endpoint.
Datos del beneficiarioTen en cuenta que debes recopilar los siguientes datos del subcomercio/beneficiario: nombre, apellido, dirección completa, país, número de identificación, entre otros.
A continuación, puedes ver un ejemplo del body request.
{
"virtualAccounts": [
{
"accountNumber": "1234567890",
"beneficiary": {
"type": "individual",
"address": {
"city": "lima",
"comment": "blue house",
"country": "peru",
"number": "12",
"state": "lima",
"street": "example st",
"zipCode": "12345"
},
"document": {
"id": "879018341",
"type": "dni"
},
"industry": "gambling",
"lastname": "Doe",
"name": "Jane",
"website": "www.website.com"
},
"referenceId": "123456888"
}
]
}4.1. Respuestas
Como respuesta a una solicitud de creación de cuentas virtuales en batch exitosa, recibirás el virtualAccountBatchId, que te permitirá tener un número de referencia del batch realizado.
Si la transacción es exitosa, recibirás la siguiente respuesta:
{
"createdAt": "2026-04-17T15:47:20.714Z",
"status": "received",
"totalRecords": 0,
"virtualAccountBatchId": "98210492a01"
}Si la transacción es rechazada, recibirás esta respuesta similar a esta:
{
"message": "string"
}4.2. Estado de creación de cuentas virtuales en batch
Para conocer el estado de la creación de cuentas virtuales en batch a través de nuestra API deberás usar este endpoint.
4.2.1. Respuesta
A continuación se muestra la respuesta que recibirás con el estado de la creación de cuentas virtuales en batch.
{
"createdAt": "2026-04-17T15:47:20.714Z",
"failedRecords": 0,
"processedRecords": 0,
"referenceId": "123456888",
"results": [
{
"currency": "PEN",
"error": {
"code": 0,
"description": "error"
},
"referenceId": "123456888",
"status": "success",
"vaNumber": "1234567890"
}
],
"status": "received",
"successRecords": 0,
"totalRecords": 0,
"updatedAt": "2026-04-17T15:47:20.714Z",
"virtualAccountBatchId": "98210492a01"
}5. Reembolsa un pago recibido en una cuenta virtual
Para crear una solicitud de reembolso de un pago recibido en una cuenta virtual, realiza la solicitud a este endpoint.
A continuación, puedes ver un ejemplo del body de la solicitud.
{
"amount": 100,
"comment": "refund",
"referenceId": "1203pas012",
"transactionId": "3fa85f74-5717-4562-b3fc-2c963f66afr0"
}5.1. Respuesta
Si tu solicitud se realiza correctamente, recibirás una respuesta similar a la que se muestra a continuación.
{
"refundId": "12345678901",
"status": "received",
"transactionId": "3fa85f74-5717-4562-b3fc-2c963f66afr0"
}5.2. Detalles de un reembolso
Consulta el detalle de un reembolso, usando el identificador de la solicitud de reembolso refundId. Utiliza este endpoint para conocer el detalle.
5.2.1. Respuesta
A continuación se muestran los detalles de un reembolso:
{
"amount": 100,
"comment": "refund",
"createdAt": "2026-04-17T05:47:25.028Z",
"referenceId": "12345678901",
"refundId": "12300009812",
"status": "received",
"transactionId": "3fa85f74-5717-4562-b3fc-2c963f66afr0",
"type": "partial",
"updatedAt": "2026-04-17T05:47:25.028Z"
}
WebhooksConoce los webhooks para reembolsos en esta guía.
6. Genera un wire out
A través de nuestro endpoint para wire out, podrás solicitar una transferencia internacional en USD desde tu cuenta interna hacia un beneficiario previamente registrado en ProntoPaga.
Al enviar la solicitud con los datos requeridos, recibirás inmediatamente un identificador único del wire out y un estado inicial de procesamiento, lo que te permite iniciar la remesa de fondos de manera segura y realizar el seguimiento de su resultado final.
Esta operación garantiza trazabilidad de la solicitud y confirma que la instrucción ha sido aceptada para su procesamiento, sin implicar que la transferencia ya se haya ejecutado.
A continuación, puedes ver un ejemplo del body de la solicitud.
{
"amount": 1000,
"currency": "USD",
"payerAccountId": "acc_usd_PP_099",
"referenceId": "PP123456789",
"referenceNote": "PP123456789",
"settlementAccountId": "0912483721",
"wireOutId": "fe0f96ff-95d4-4c18-97e3-99f72b8c7b20"
}6.1. Respuesta
Si tu solicitud se realiza correctamente, recibirás una respuesta similar a la que se muestra a continuación.
{
"amount": 1000,
"currency": "USD",
"payerAccountId": "acc_usd_PP_099",
"processingStatus": "processing",
"referenceId": "PP123456789",
"settlementAccountId": "0912483721",
"wireOutId": "fe0f96ff-95d4-4c18-97e3-99f72b8c7b20"
}
WebhooksConoce los webhooks para wire outs en esta guía.
6.2. Detalles de un wire out
Este endpoint te permite consultar el detalle de un wire out específico que ya fue solicitado previamente mediante nuestro endpoint de generación de un wire out.
6.2.1. Respuesta
A continuación se muestra la respuesta que recibirás con los detalles del wire out solicitado.
{
"amount": 1000,
"completedAt": "2026-04-17T05:47:25.028Z",
"currency": "USD",
"payerAccountId": "acc_usd_PP_099",
"processingStatus": "processing",
"referenceId": "PP123456789",
"settlementAccountId": "0912483721",
"statusMessage": "processing",
"updatedAt": "2026-04-17T05:47:25.028Z",
"wireOutId": "fe0f96ff-95d4-4c18-97e3-99f72b8c7b20"
}Updated 1 day ago