Especificación Técnica API Dispersión de Fondos Síncrona

Este documento describe los servicios web desarrollados por ATC, diseñados a medida para su integración con las distintas empresas aceptantes.

Todos los servicios expuestos están implementados siguiendo el estilo REST API y utilizan JSON como formato de intercambio de información.

1. Catálogo de Servicios Web

APIEndpointMétodo
Leer imagen QR/payout/sync/v3/qr/scanPOST
Pagar imagen QR/payout/sync/v3/qr/confirmPOST
Consulta estado QR/payout/sync/v3/qr/status/{numeroReferencia}GET

2. Autenticación y Autorización

Los servicios web utilizan la autenticación OAuth 2.0 (Client Credentials) para obtener un Access Token.
El Token Basic (Authorization), el client_id y el access_token de producción son proporcionados exclusivamente por ATC para cada integrador habilitado. Los valores mostrados en este documento corresponden únicamente al ambiente de pruebas.

Autenticación — Obtención del Access Token

Para utilizar los servicios de este documento, el integrador debe obtener un access_token válido mediante el flujo OAuth 2.0 Client Credentials.
AtributoValor
Método HTTPPOST
URL (TEST)/oauth-client-credentials/access-token?grant_type=client_credentials
Content-Typeapplication/x-www-form-urlencoded
Query Paramgrant_type=client_credentials

Request — Autenticación (obtener Access Token)

http
600;">POST /oauth-client-credentials/access-token?grant_type=client_credentials Headers: Authorization: Basic ODBiM2M1NWQtNWNiNi00OWRlLTkxYTAtMDcwZDM1M2IwMDQ3OmQ2OWVlZjQxLTFkMmYtNDBlZC1iNGQ0LTc5MzFiYjljYmI3NA== Content-Type: application/x-www-form-urlencoded

Header de autenticación

HeaderDescripciónObligatorio
AuthorizationCodificado en Base64 (client_id:client_secret).Sí
Content-Typeapplication/x-www-form-urlencodedSí

Response — Access Token

json
{ "access_token": "1442981c-....-....-b...-ea12258c9...", "token_type": "Bearer", "expires_in": 3600, "scope": "api.qr" }

Respuesta exitosa — Access Token

CampoTipoDescripción
access_tokenStringToken de portador para usar en los headers de los servicios QR.
token_typeStringTipo de token. Siempre Bearer.
expires_inIntegerTiempo de validez en segundos.
scopeStringAlcance del token otorgado.

3. Servicio Web Leer Imagen QR

Este servicio permite leer una imagen QR y obtener la información contenida en ella, para posteriormente mostrarla en la aplicación y/o sistema correspondiente. De esta manera, el usuario puede identificar y validar la información del destinatario antes de realizar el pago.

Una vez obtenido el Access Token, se puede invocar el servicio de generación del código QR de pago.

AtributoValor
Método HTTPPOST
URL/payout/sync/v3/qr/scan
Header: access_token{access_token obtenido en autenticación}
Header: client_id{provisto por APP al momento de tener un cliente en el devportal}
Header: Content-Typeapplication/json

Request — Leer Imagen QR

http
600;">POST /payout/sync/v3/qr/scan Headers: access_token: 1442981c-....-....-b...-ea12258c9... client_id: 1e063b89-....-....-....-ed73d60cbc67 Content-Type: application/json

Body del request

json
{ "imagen": "iw2VTUp51O0g+rAg+5+PLQ33oB90AFXfQw3Jr1aY0CnB9py8FmrEkRz4Lnz5C……" } }
ParámetroTipoLongitudRequeridoDescripción
imagenStringVariable (depende del tamaño de la cadena del QR)SíCadena de texto obtenida directamente por la aplicación de la empresa aceptante al escanear el código QR.

Estructura de respuesta

json
{ "data": { "importe": 0, "moneda": "BOB", "glosa": "QR MLD BS", "numeroReferencia": "547260814000002110", "cuentaDestino": "1311713043", "ciNitDestino": "2274887", "titularDestino": "PERSONA NATURAL", "codigoBancoDestino": "1918", "nombreBancoDestino": "", "fechaVencimiento": "2026-09-05" }, "code": "00" }
ParámetroTipoLongitudReq.Descripción
titularDestinoStringVariable (Min=1, Max=255)SíNombre del destinatario de la transacción.
ciNitDestinoStringVariable (Min=1, Max=5)SíDocumento de identidad del destinatario.
cuentaDestinoStringVariable (Min=1, Max=255)SíNúmero de cuenta del destinatario.
monedaString3SíCódigo de la moneda utilizada en la transacción, para este caso "BOB".
importeNumeric(18,2)—SíMonto de la transacción, este puede ser 0.
glosaStringVariable (Min=0, Max=255)NoCampo opcional para comentarios.
numeroReferenciaString20SíIdentificador único de la transacción generado por ATC.
codigoBancoDestinoStringVariable (Min=0, Max=10)SíCódigo de banco destino.
nombreBancoDestinoStringVariable (Min=1, Max=255)SíNombre de banco destino.
fechaVencimientoStringFormato AAAAMMDDSíFecha de expiración del QR.
information icon
Nota: esta información se obtiene siempre y cuando sea una imagen QR válida.

4. Servicio Web Pagar Imagen QR

Este servicio permite realizar el pago asociado a un código QR previamente leído desde la aplicación correspondiente.

Una vez obtenido el Access Token, se puede invocar el servicio.

AtributoValor
Método HTTPPOST
URL/payout/sync/v3/qr/confirm
Header: access_token{access_token obtenido en autenticación}
Header: client_id{provisto por APP al momento de tener un cliente en el devportal}
Header: Content-Typeapplication/json

Request — Pagar Imagen QR

http
600;">POST /payout/sync/v3/qr/confirm Headers: access_token: 1442981c-....-....-b...-ea12258c9... client_id: 1e063b89-....-....-....-ed73d60cbc67 Content-Type: application/json

Body de la Solicitud

json
{ "numeroReferencia": "547260813000002109", "cuentaOrigen": "7010123451", "transaccionId": "REQ-TEST07", "importe": "100.50", "glosa": "" }
ParámetroTipoLong.Req.Descripción
numeroReferenciaString20SíIdentificador único de la transacción generado por ATC.
transaccionIdString32SíIdentificador único de la transacción generado por la empresa aceptante.
cuentaOrigenString20SíLa cuenta de ATC.
importeNumeric(18,2)—SíMonto de la transacción. El monto a enviar debe ser mayor a cero cuando, al leer la imagen QR, el valor obtenido sea 0. En caso contrario, se debe enviar 0.00.
glosaStringVariable (Min=0, Max=255)NoComentario de la transacción. La glosa debe enviarse siempre que, al leer la imagen QR, el campo glosa no exista o esté vacío. En caso contrario, no se debe incluir este campo en la solicitud.

Estructura de la respuesta

El payload de respuesta en texto plano (es decir, sin cifrar) tiene la siguiente estructura:

json
{ "data": { "numeroReferencia": "547260814000002111", "transaccionId": "REQ-TEST07", "fechaHoraTransaccion": "2026-08-14T11:00:36.320", "numOrdenAch": "14262608140249823031", "importe": 100.50, "moneda": "BOB", "estado": "APROBADA", "glosa": "QR MLD BS", "cuentaDestino": "1311713043", "titularDestino": "PERSONA NATURAL", "ciNitDestino": "2274887", "nombreBancoDestino": "", "codigoBancoDestino": "1918", "cuentaOrigen": "7010123451", "titularOrigen": "alias test 218" }, "code": "00" }
ParámetroTipoLong.Req.Descripción
numeroReferenciaString20SíIdentificador único de la transacción generado por ATC.
transaccionIdString32SíIdentificador único de la transacción generado por la empresa aceptante.
fechaHoraTransaccionDateTime—SíFecha y hora de la transacción.
numOrdenAchStringVariableSíNúmero de orden ACH.
cuentaOrigenStringVariable (Min=0, Max=255)SíCuenta de origen de la transacción (cuenta de ATC).
titularOrigenStringVariable (Min=0, Max=255)SíTitular de la cuenta de origen (alias de la cuenta de ATC).
cuentaDestinoStringVariable (Min=0, Max=255)SíCuenta destino de la transacción.
titularDestinoStringVariable (Min=0, Max=255)SíTitular de la cuenta destino.
ciNitDestinoStringVariable (Min=1, Max=50)SíDocumento de identidad del destinatario.
importeNumeric(18,2)—SíMonto de la transacción.
monedaString3SíCódigo de la moneda utilizada en la transacción, para este caso "BOB".
glosaStringVariable (Min=0, Max=255)NoCampo opcional para comentarios.
estadoStringVariable (Min=5, Max=15)SíEstado de la transacción: APROBADA.
codigoBancoDestinoStringVariable (Min=0, Max=10)SíCódigo de banco destino.
nombreBancoDestinoStringVariable (Min=1, Max=255)SíNombre de banco destino.
information icon
Nota: esta información se obtiene siempre y cuando la transacción sea aprobada.

5. Servicio Web Consultar Estado QR

Este servicio permite consultar el estado actual de una transacción QR utilizando el número de referencia generado por ATC.

Una vez obtenido el Access Token, se puede invocar el servicio.

AtributoValor
Método HTTPPOST
URL/payout/sync/v3/qr/status/{numeroReferencia}
Header: access_token{access_token obtenido en autenticación}
Header: client_id{provisto por APP al momento de tener un cliente en el devportal}
Header: Content-Typeapplication/json

Request — Consultar QR

http
600;">POST /payout/sync/v3/qr/status/{numeroReferencia} Headers: access_token: 1442981c-....-....-b...-ea12258c9... client_id: 1e063b89-....-....-....-ed73d60cbc67 Content-Type: application/json

Estructura de solicitud

Parámetro de ruta

ParámetroTipoLong.Req.Descripción
numeroReferenciaString20SíIdentificador único de la transacción generado por ATC.

Estructura de respuesta

La respuesta exitosa utiliza la siguiente estructura general:

json
{ "data": { "numeroReferencia": "547250827000000004", "transaccionId": "1234567890", "fechaHoraTransaccion": "2026-07-20T14:17:35", "estado": "APROBADA", "mensaje": "La transacción fue aprobada.", "importe": 10.00, "moneda": "BOB", "glosa": "Comentario a enviar", "cuentaOrigen": "1020255020", "titularOrigen": "A.T.C. S.A.", "cuentaDestino": "1006375018", "titularDestino": "MIRTHA ESCOBAR", "ciNitDestino": "1234567", "nombreBancoDestino": "BANCO DESTINO", "codigoBancoDestino": "001", "numOrdenAch": "123456789012345" }, "code": "00" }
ParámetroTipoLong.Req.Descripción
numeroReferenciaString20SíIdentificador único de la transacción generado por ATC.
transaccionIdStringMáx. 32NoIdentificador único de la transacción generado por la empresa aceptante.
fechaHoraTransaccionDateTime—NoFecha y hora de la transacción en formato ISO-8601. Puede ser nula cuando la operación todavía no fue procesada.
estadoStringVariableSíEstado actual de la transacción.
mensajeStringVariableSíDescripción del estado actual de la transacción.
importeNumeric(18,2)—SíMonto de la transacción.
monedaString3SíCódigo de la moneda utilizada en la transacción, para este caso "BOB".
glosaStringVariable (Min=0, Max=255)NoCampo opcional para comentarios.
cuentaOrigenStringVariable (Min=0, Max=255)SíCuenta de origen de la transacción (cuenta de ATC).
titularOrigenStringVariable (Min=0, Max=255)SíTitular de la cuenta de origen (alias de la cuenta de ATC).
cuentaDestinoStringVariable (Min=0, Max=255)SíCuenta destino de la transacción.
titularDestinoStringVariable (Min=0, Max=255)SíTitular de la cuenta destino.
ciNitDestinoStringVariableSíDocumento de identidad del destinatario.
nombreBancoDestinoStringMáx=255NoNombre de banco destino.
codigoBancoDestinoStringVariable (Min=0, Max=10)SíCódigo de banco destino.
numOrdenAchStringVariableCondicionalNúmero de orden ACH. Se devuelve únicamente cuando la transacción se encuentra aprobada y el dato está disponible.

Campos generales de la respuesta

ParámetroTipoRequeridoDescripción
dataObjectSíInformación de la transacción en caso de ser exitosa.
codeStringSíCódigo de respuesta / error en caso de ser fallida la transacción.
errorMessageStringSíDescripción del error. No se retorna cuando la operación es exitosa.

Estados de la transacción

EstadoMensajeDescripción
APROBADALa transacción fue aprobadaEl pago fue confirmado correctamente.
RECHAZADALa transacción fue rechazadaEl pago fue rechazado o no pudo completarse definitivamente.
PENDIENTE_PAGOLa transacción está pendiente de pago.La transacción fue generada, pero el flujo de pago todavía no fue iniciado o completado.
EN_PROCESOLa transacción se encuentra en procesoEl pago se encuentra siendo procesado.
PENDIENTE_CONFIRMACIONLa transacción está pendiente de confirmación.El resultado definitivo todavía requiere validación o regularización interna. Se debe realizar una nueva consulta posteriormente.

Ejemplo de respuesta con error

json
{ "code": "04", "errorMessage": "Transacción no encontrada." }

7. Códigos de Respuesta

CódigoDescripción
00Operación exitosa
02Datos de entrada inválidos
04Transacción no encontrada
08QR expirado
09QR no válido
10Moneda QR no válida
11Monto obligatorio
12Glosa obligatoria
13Saldo insuficiente
14Estado de transacción no válido
15Número de cuenta no encontrada
94Error o resultado no confirmado en sistema de saldos
95Error interno
96Error o resultado no confirmado en emisor – ATC
99Error interno no controlado

8. Tiempos de Respuesta

APITimeout
Leer imagen QREl cliente deberá configurar un timeout máximo de 40 segundos para esta operación.
Pagar imagen QREl cliente deberá configurar un timeout máximo de 90 segundos para esta operación.
Consultar estado QREl cliente deberá configurar un timeout máximo de 90 segundos para esta operación.
information icon
Nota: los tiempos indicados corresponden al tiempo máximo de espera que el cliente debe configurar antes de considerar que una solicitud ha excedido el límite permitido. Estos valores no representan el tiempo habitual ni el tiempo promedio de respuesta de los servicios.

9. Ambientes

SandboxProducción
https://atcgwapitest.redenlace.com.bo/sandboxhttps://api.redenlace.com.bo