¿Preguntas?

Más información en nuestro Centro de Ayuda.

Centro de Ayuda
Contacto

Envíanos un mail con tu duda o sugerencia.

Contacto

Introducción

Aquí encontrarás la documentación necesaria para comenzar a usar la API de Prometeo de manera clara y detallada.


¿Por qué una API podría ayudarme? (Interfaz de Programación de Aplicaciones)

Desarrollar todo un software desde cero podría ser sumamente complejo, costoso e innecesario. Las APIs son interfaces que nos ayudan a conectar los servicios que desarrolladores han hecho para otros proyectos y bajo ciertos estándares conectarlos con los nuestros para crear algo más grande.


Puntos importantes a tener en cuenta:

  • Endpoint es el punto de intercambio de información en la API.
  • Token es una especie de llave electrónica que hace más seguro el intercambio de información.
  • Prometeo utiliza los métodos POST o GET para las peticiones, lo verá identificado en cada caso.
  • Prometeo soporta las siguientes instituciones financieras:
    • BBVA - México
    • Banorte - México
    • Citi Banamex - México
    • Santander - México
    • Tres betas privadas - Brasil
    • Banco de Crédito - Perú
    • Scotiabank - Perú
    • Banco Estado - Chile
    • Banco Nación - Argentina
    • Banco Nacional - Panamá
    • Banco General - Panamá
    • Caja de Ahorros - Panamá
    • Bancolombia - Colombia
    • Davivienda - Colombia
    • Banco del Pacífico - Ecuador
    • Banco Internacional - Ecuador
    • BCU - Uruguay
    • BROU - Uruguay
    • Edenred - Uruguay
    • Itaú - Uruguay
    • Itaú Empresas- Uruguay
    • Mi dinero - Uruguay
    • Santander - Uruguay
  • Para comenzar a realizar peticiones en nuestra plataforma, nuestro equipo con gusto te asignará el API-key que necesitarás.
  • Excepto en el login a la institución financiera, cada request debe incluir un API-key dado.
    Incluso si el endpoint es con POST. Puedes elegir utilizarlo mediante el header X-API-Key o el parámetro api_key en la url.
  • La mayoría de los endpoints retornan un campo “status” y el resto de los datos estarán presentes solo si el mismo es “success”.
  • Cada request dura 5 minutos. Una vez culminada la última, pasado este lapso de tiempo, vence la sesión y deberá iniciar sesión otra vez.
  • Los requests de tipo POST requieren que el media type sea ‘application/x-www-form-urlencoded’.

Para acceder a nuestro ambiente de pruebas, por favor escríbenos a info@prometeoapi.com.

Para todos los ejemplos utilizaremos los mismos datos de prueba:

  • Usuario con solo una cuenta asociada al usuario
    • Username: 12345
    • Password: gfdsa
  • Institución de prueba test

Login

Endpoint: POST /login/

Parámetros Descripción
provider

Corresponde al nombre del banco, en minúsculas y sin tildes (test, brou, santander, itaú, edenred, santander_mx, banco_general, itau_corp_uy).

username

Documento o nombre de usuario utilizado para ingresar al home banking o app de la institución financiera.

password

Contraseña del usuario web de la institución financiera.

rut

Número de RUT de la empresa. Este parametro es solicitado unicamente para instituciones financieras dedicadas a empresas.

Respuesta:

Status Descripción
status
  • select_client es necesario seleccionar un cliente.

  • wrong_credentials usuario o password inválidos.

  • missing_credentials falta un campo de credenciales

  • logged_in sesión iniciada correctamente.

  • interaction_required se requiere algún tipo de inicio de sesión interactiva, podría ser un captcha o una pregunta de seguridad.

key

Clave de autenticación que deberá ser usada en todas las requests siguientes (no estará presente si el status es un error).

Usuario:

POST /login/? HTTP/1.1
Host: test.prometeo.qualia.uy
Accept: application/json
X-API-Key: X-API-Key: <api key>

provider=test&username=12345&password=gfdsa

Respuesta:

{
   "status" : "logged_in"
   "key" : "163d06b2-3378-4383-9868-71c2b6fb28da",
}

Respuesta errónea:

{"status": "wrong_credentials"}

Respuesta con interacción requerida:

Para reforzar el sistema de seguridad, algunas instituciones financieras requieren una interacción por parte del usuario, como un token otp, preguntas de seguridad o confirmación 2FA.

{
    "context": "¿Cuántos baños tenia la casa de mis padres?",
    "field": "personal_question",
    "key": "be612b0a-c972-4fb1-bb16-798956a3efa1",
    "status": "interaction_required"
}

Iniciar sesión con interacción:

POST /login/? HTTP/1.1
Host: test.prometeo.qualia.uy
Accept: application/json
X-API-Key: <api key>

provider=test&username=12345&password=asdfg&personal_question=uno
curl -X POST "https://test.prometeo.qualia.uy/login/?" -d 'provider=test&username=12345&password=gfdsa' -H "X-API-Key:  <api key>"

Respuesta:

{
   "status" : "logged_in"
   "key" : "163d06b2-3378-4383-9868-71c2b6fb28da",
}

Respuesta errónea:

{"status": "wrong_credentials"}

Respuesta con interacción requerida:

Para reforzar el sistema de seguridad, algunas instituciones financieras requieren una interacción por parte del usuario, como un token otp, preguntas de seguridad o confirmación 2FA.

{
    "context": "¿Cuántos baños tenia la casa de mis padres?",
    "field": "personal_question",
    "key": "be612b0a-c972-4fb1-bb16-798956a3efa1",
    "status": "interaction_required"
}

Iniciar sesión con interacción:

curl -X POST "https://test.prometeo.qualia.uy/login/?" -d 'provider=test&username=12345&password=asdfg&personal_question=uno' -H "X-API-Key: <api key>"
import requests

requests.post('https://test.prometeo.qualia.uy/login/', headers={'X-API-Key': '<api key>'}, data={
  "provider": "test",
  "username": "12345",
  "password": "gfdsa"
})

Respuesta:

{
   "status" : "logged_in"
   "key" : "163d06b2-3378-4383-9868-71c2b6fb28da",
}

Respuesta errónea:

{"status": "wrong_credentials"}

Respuesta con interacción requerida:

Para reforzar el sistema de seguridad, algunas instituciones financieras requieren una interacción por parte del usuario, como un token otp, preguntas de seguridad o confirmación 2FA.

{
    "context": "¿Cuántos baños tenia la casa de mis padres?",
    "field": "personal_question",
    "key": "be612b0a-c972-4fb1-bb16-798956a3efa1",
    "status": "interaction_required"
}

Iniciar sesión con interacción:

requests.post('https://test.prometeo.qualia.uy/login/', headers={'X-API-Key': '<api key>'}, data={
  "provider": "test",
  "username": "12345",
  "password": "asdfg",
  "personal_question": "uno"
})
var request = require('request');

request.post({
  "url": "https://test.prometeo.qualia.uy/login/",
  "json": true,
  "headers": {
    "X-API-Key": "<api key>"
  },
  "form": {
    "provider": "test",
    "username": "12345",
    "password": "gfdsa"
  }
});

Respuesta:

{
   "status" : "logged_in"
   "key" : "163d06b2-3378-4383-9868-71c2b6fb28da",
}

Respuesta errónea:

{"status": "wrong_credentials"}

Respuesta con interacción requerida:

Para reforzar el sistema de seguridad, algunas instituciones financieras requieren una interacción por parte del usuario, como un token otp, preguntas de seguridad o confirmación 2FA.

{
    "context": "¿Cuántos baños tenia la casa de mis padres?",
    "field": "personal_question",
    "key": "be612b0a-c972-4fb1-bb16-798956a3efa1",
    "status": "interaction_required"
}

Iniciar sesión con interacción:

var request = require('request');

request.post({
  "url": "https://test.prometeo.qualia.uy/login/",
  "json": true,
  "headers": {
    "X-API-Key": "<api key>"
  },
  "form": {
    "provider": "test",
    "username": "12345",
    "password": "asdfg",
    "personal_question": "uno"
  }
});

Listar Clientes

Endpoint: GET /client/

Datos a tener en cuenta:
Los clientes son cuentas asociadas a un usuario. Un usuario puede tener más de una cuenta asociada a su usuario. Sucede mucho en el caso de cuentas con 2 dueños.
Los usuarios sin clientes asociados no muestran información. No es necesario ir a `Seleccionar Cliente` Se puede pasar al Endpoint /account/ directamente.

Parámetros Descripción
key

Clave de autenticación que deberá ser usada en todas las requests siguientes.

Usuario:

GET /client/?key=959602df-d3ee-4898-b6d8-a28a2c7486fb HTTP/1.1
Host: test.prometeo.qualia.uy
Accept: application/json
X-API-Key: <api key>
curl -X GET "https://test.prometeo.qualia.uy/client/?key=959602df-d3ee-4898-b6d8-a28a2c7486fb"  -H "X-API-Key: <api key>"
import requests

requests.get('https://test.prometeo.qualia.uy/client/', headers={'X-API-Key': '<api key>'}, params={
  "key": "959602df-d3ee-4898-b6d8-a28a2c7486fb"
})
{
   "status":"success",
   "clients":{
      "0":"First Client",
      "1":"Second Client"
   }
}

Respuesta:

{
   "status":"success",
   "clients":{
      "0":"First Client",
      "1":"Second Client"
   }
}

Seleccionar cliente

Endpoint: GET /client/ <id>/

Parámetros Descripción
key

Clave de autenticación que deberá ser usada en todas las requests siguientes.

Respuesta Descripción
status

Usuario:

var request = require('request');

request.get({
  "url": "https://test.prometeo.qualia.uy/client/20727/",
  "json": true,
  "headers": {
    "X-API-Key": "<api key>"
  },
  "qs": {
    "key": "959602df-d3ee-4898-b6d8-a28a2c7486fb"
  }
});
curl -X GET "https://test.prometeo.qualia.uy/client/20727/?key=959602df-d3ee-4898-b6d8-a28a2c7486fb"  -H "X-API-Key: <api key>"
import requests

requests.get('https://test.prometeo.qualia.uy/client/20727/', headers={'X-API-Key': '<api key>'}, params={
  "key": "959602df-d3ee-4898-b6d8-a28a2c7486fb"
})
var request = require('request');

request.get({
  "url": "https://test.prometeo.qualia.uy/client/20727/",
  "json": true,
  "headers": {
    "X-API-Key": "<api key>"
  },
  "qs": {
    "key": "959602df-d3ee-4898-b6d8-a28a2c7486fb"
  }
});

Respuesta exitosa:

{
   "status" : "success"
}

Listar cuentas

Endpoint: GET /account/

Parámetros Descripción
key

Clave de autenticación que deberá ser usada en todas las requests siguientes.

Respuesta Descripción
status

accounts

Lista de cuentas.

El ejemplo ilustra una respuesta exitosa de una cuenta en el Banco Santander que cuenta con cuatro cuentas bancarias:

Usuario:

GET /account/?key=959602df-d3ee-4898-b6d8-a28a2c7486fb HTTP/1.1
Host: test.prometeo.qualia.uy
Accept: application/json
X-API-Key: <api key>
curl -X GET "https://test.prometeo.qualia.uy/account/?key=959602df-d3ee-4898-b6d8-a28a2c7486fb"  -H "X-API-Key: <api key>"
import requests

requests.get('https://test.prometeo.qualia.uy/account/', headers={'X-API-Key': '<api key>'}, params={
  "key": "959602df-d3ee-4898-b6d8-a28a2c7486fb"
})
var request = require('request');

request.get({
  "url": "https://test.prometeo.qualia.uy/account/",
  "json": true,
  "headers": {
    "X-API-Key": "<api key>"
  },
  "qs": {
    "key": "959602df-d3ee-4898-b6d8-a28a2c7486fb"
  }
});

Respuesta:

{
   "accounts":  [
          {
      "balance": 1234.95,
      "branch": "02 - 18 De Julio",
      "currency": "UYU",
      "id": "hash1",
      "name": "Cuenta total",
      "number": "001234567890"
    },
          {
      "balance": 12.01,
      "branch": "02 - 18 De Julio",
      "currency": "USD",
      "id": “hash2”,
      "name": "Cuenta total",
      "number": "005234567890"
    },
          {
      "balance": 4301,
      "branch": "61 - Ciudad Vieja",
      "currency": "UYU",
      "id": "hash3",
      "name": "Caja De Ahorro Atm",
      "number": "007234567890"
    },
          {
      "balance": 53.96,
      "branch": "61 - Ciudad Vieja",
      "currency": "USD",
      "id": "hash4",
      "name": "Caja De Ahorro Atm",
      "number": "007234567890"
    }
   ],
   "status": "success"
}

Listar movimientos

Endpoint: GET /movement/

Parámetros Descripción
account

Número de cuenta (es el valor ‘number’ del resultado de consultar al endpoint /account/ , para la cuenta para la que se desea sacar el listado).

currency

Moneda de la cuenta en formato ISO 4217, por ejemplo UYU o USD.

date_start

Fecha de inicio de los movimientos, en formato DD/MM/YYYY

date_end

Fecha de fin de los movimientos, en formato DD/MM/YYYY

key

Clave de autenticación que deberá ser usada en todas las requests siguientes

Respuesta Descripción
status

movements

Lista de movimientos.

Usuario:

GET /movement/?key=959602df-d3ee-4898-b6d8-a28a2c7486fb&account=12345¤cy=UYU&date_start=22%2F11%2F2017&date_end=23%2F11%2F2017 HTTP/1.1
Host: test.prometeo.qualia.uy
Accept: application/json
X-API-Key: <api key>
curl -X GET "https://test.prometeo.qualia.uy/movement/?key=959602df-d3ee-4898-b6d8-a28a2c7486fb&account=12345¤cy=UYU&date_start=22%2F11%2F2017&date_end=23%2F11%2F2017"  -H "X-API-Key: <api key>"
import requests

requests.get('https://test.prometeo.qualia.uy/movement/', headers={'X-API-Key': '<api key>'}, params={
  "key": "959602df-d3ee-4898-b6d8-a28a2c7486fb",
  "account": "12345",
  "currency": "UYU",
  "date_start": "22/11/2017",
  "date_end": "23/11/2017"
})
var request = require('request');

request.get({
  "url": "https://test.prometeo.qualia.uy/movement/",
  "json": true,
  "headers": {
    "X-API-Key": "<api key>"
  },
  "qs": {
    "key": "959602df-d3ee-4898-b6d8-a28a2c7486fb",
    "account": "12345",
    "currency": "UYU",
    "date_start": "22/11/2017",
    "date_end": "23/11/2017"
  }
});

Respuesta:

{
   "final_balance": "undefined",
   "initial_balance": "undefined",
   "movements": [
          {
      "credit": "",
      "date": "12/01/2017",
      "debit": 3500,
      "detail": "RETIRO EFECTIVO CAJERO AUTOMATICO J.C. GOMEZ 1372, MONTEVIDEO TARJ: 4303090202018993",
      "id": -890185180,
      "reference": "000000005084"
    },
          {
      "credit": "",
      "date": "05/01/2017",
      "debit": 16000,
      "detail": "RETIRO EFECTIVO CAJERO AUTOMATICO J.H Y OBES 1389, MONTEVIDEO TARJ: 4303090202018993",
      "id": 1024917397,
      "reference": "000000002931"
    },
          {
      "credit": 98640,
      "date": "03/01/2017",
      "debit": "",
      "detail": "SUELDOS 123456TT RECIBIDA /Qualia Fintech S.R.L",
      "id": 1303899175,
      "reference": "TR0003858408"
    }
   ],
   "status": "success"
}

Preprocesar Transferencia

Endpoint: POST /transfer/preprocess

Parámetros Descripción
origin_account

Número de cuenta desde donde se transfiere.

destination_institution

Id de la institución a donde se transfiere, el id se obtiene en el endpoint de listar instituciones para transferencias.

destination_account

Número de cuenta a donde se transfiere.

currency

Codigo: ISO 4217 de la moneda usada para la transferencia.

amount

Monto a transferir.

concept

Concepto o descripción de la transferencia.

destination_owner_name

Nombre del titular de la cuenta de destino (vacío si no aplica).

branch

Número de sucursal de la cuenta de destino (vacío si no aplica).

Respuesta Descripción
status

result
  • approved Indica si la operacion se aprobó satisfactoriamente

  • authorization_devices Lista de métodos de verificación posibles para confirmar la transferencia (pin, tarjeta de coordenadas, token, etc), estará vacía si la transferencia se puede realizar sin metodo de verificacion.

  • message Descripción del resultado de la operacion (solo si ha ocurrido un error).

  • request_id Id de la operación, a usarse para confirmar la transferencia.

Usuario:

var request = require('request');

request.post({
  "url": "https://test.prometeo.qualia.uy/transfer/preprocess",
  "json": true,
  "headers": {
    "X-API-Key": "<api key>"
  },
  "form": {
    "origin_account": "002206345988",
    "destination_institution": 0,
    "destination_account": "001002363321",
    "currency": "UYU",
    "amount": 1.3,
    "concept": "descripcion de transferencia",
    "destination_owner_name": "John Doe",
    "branch": 62
  },
  "qs": {
    "key": "959602df-d3ee-4898-b6d8-a28a2c7486fb"
  }
});
curl -X POST "https://test.prometeo.qualia.uy/transfer/preprocess?key=959602df-d3ee-4898-b6d8-a28a2c7486fb" -d 'origin_account=002206345988&destination_institution=0&destination_account=001002363321¤cy=UYU&amount=1.3&concept=descripcion+de+transferencia&destination_owner_name=John+Doe&branch=62' -H "X-API-Key: <api key>"
import requests

requests.post('https://test.prometeo.qualia.uy/transfer/preprocess', headers={'X-API-Key': '<api key>'}, params={
  "key": "959602df-d3ee-4898-b6d8-a28a2c7486fb"
}, data={
  "origin_account": "002206345988",
  "destination_institution": 0,
  "destination_account": "001002363321",
  "currency": "UYU",
  "amount": 1.3,
  "concept": "descripcion de transferencia",
  "destination_owner_name": "John Doe",
  "branch": 62
})
var request = require('request');

request.post({
  "url": "https://test.prometeo.qualia.uy/transfer/preprocess",
  "json": true,
  "headers": {
    "X-API-Key": "<api key>"
  },
  "form": {
    "origin_account": "002206345988",
    "destination_institution": 0,
    "destination_account": "001002363321",
    "currency": "UYU",
    "amount": 1.3,
    "concept": "descripcion de transferencia",
    "destination_owner_name": "John Doe",
    "branch": 62
  },
  "qs": {
    "key": "959602df-d3ee-4898-b6d8-a28a2c7486fb"
  }
});

Respuesta:

{
    "result": {
        "approved": true,
        "authorization_devices": [
            {
                "data": ["F-4", "B-2", "G-7"],
                "type": "cardCode"
            },
            {
                "data": null,
                "type": "pin"
            }
        ],
        "message": null,
        "request_id": "0b7d6b32d1be4c11bde21e7ddc08cc36"
    },
    "status": "success"
}

Confirmar Transferencia

Endpoint: POST /transfer/confirm

Parámetros Descripción
request_id

Id de la request retornada por el endpoint de preprocesar transferencia.

authorization_type

Nombre del método de verificación a usar, corresponde al campo type de la lista de métodos de verificación retornados por el endpoint de preprocesar transferencia. De no ser necesario un metodo de verificación este paramtro queda vacío.

authorization_data

Valor de verificación (número de pin, respuesta de tarjeta de coordenadas, etc). En caso de ser varios valores, deben ir separados por coma.

Usuario:

POST /transfer/confirm?key=959602df-d3ee-4898-b6d8-a28a2c7486fb HTTP/1.1
Host: test.prometeo.qualia.uy
Accept: application/json
X-API-Key: <api key>

request_id=0b7d6b32d1be4c11bde21e7ddc08cc36&authorization_type=cardCode&authorization_data=1%2C2%2C3
curl -X POST "https://test.prometeo.qualia.uy/transfer/preprocess?key=959602df-d3ee-4898-b6d8-a28a2c7486fb" -d 'origin_account=002206345988&destination_institution=0&destination_account=001002363321¤cy=UYU&amount=1.3&concept=descripcion+de+transferencia&destination_owner_name=John+Doe&branch=62' -H "X-API-Key: <api key>"
import requests

requests.post('https://test.prometeo.qualia.uy/transfer/preprocess', headers={'X-API-Key': '<api key>'}, params={
  "key": "959602df-d3ee-4898-b6d8-a28a2c7486fb"
}, data={
  "origin_account": "002206345988",
  "destination_institution": 0,
  "destination_account": "001002363321",
  "currency": "UYU",
  "amount": 1.3,
  "concept": "descripcion de transferencia",
  "destination_owner_name": "John Doe",
  "branch": 62
})
var request = require('request');

request.post({
  "url": "https://test.prometeo.qualia.uy/transfer/confirm",
  "json": true,
  "headers": {
    "X-API-Key": "<api key>"
  },
  "form": {
    "request_id": "0b7d6b32d1be4c11bde21e7ddc08cc36",
    "authorization_type": "cardCode",
    "authorization_data": "1,2,3"
  },
  "qs": {
    "key": "959602df-d3ee-4898-b6d8-a28a2c7486fb"
  }
});

Respuesta:

{
    "status": "success",
    "transfer": {
        "message": "",
        "success": true
    }
}

Listar Instituciones para Transferencias

Endpoint: POST /transfer/destinations

Usuario:

var request = require('request');

request.get({
  "url": "https://test.prometeo.qualia.uy/transfer/destinations",
  "json": true,
  "headers": {
    "X-API-Key": "<api key>"
  },
  "qs": {
    "key": "959602df-d3ee-4898-b6d8-a28a2c7486fb"
  }
});
curl -X GET "https://test.prometeo.qualia.uy/transfer/destinations?key=959602df-d3ee-4898-b6d8-a28a2c7486fb"  -H "X-API-Key: <api key>"
import requests

requests.get('https://test.prometeo.qualia.uy/transfer/destinations', headers={'X-API-Key': '<api key>'}, params={
  "key": "959602df-d3ee-4898-b6d8-a28a2c7486fb"
})
var request = require('request');

request.get({
  "url": "https://test.prometeo.qualia.uy/transfer/destinations",
  "json": true,
  "headers": {
    "X-API-Key": "<api key>"
  },
  "qs": {
    "key": "959602df-d3ee-4898-b6d8-a28a2c7486fb"
  }
});

Respuesta:

{
  "destinations": [
    {
      "id": 0,
      "name": "SANTANDER"
    },
    {
      "id": 1,
      "name": "B.R.O.U."
    },
    {
      "id": 91,
      "name": "B.H.U."
    },
    {
      "id": 110,
      "name": "BANDES"
    }
  ],
  "status": "success"
}

Listar Proveedores

Endpoint: GET /provider/

Respuesta Descripción
status

providers

Lista de proveedores. Un proveedor es una fuente de datos financieros.

Usuario:

GET /provider/? HTTP/1.1
Host: test.prometeo.qualia.uy
Accept: application/json
X-API-Key: <api key>
curl -X GET "https://test.prometeo.qualia.uy/provider/?"  -H "X-API-Key: <api key>"
import requests

requests.get('https://test.prometeo.qualia.uy/provider/', headers={'X-API-Key': '<api key>'})
var request = require('request');

request.get({
  "url": "https://test.prometeo.qualia.uy/provider/",
  "json": true,
  "headers": {
    "X-API-Key": "<api key>"
  }
});

Respuesta:

{
    "providers": [
        {
            "code": "test",
            "country": "UY",
            "name": "Test Provider"
        },
        ...
    ],
    "status": "success"
}

Detalle de Proveedor

Endpoint GET /provider/{code}/

Respuesta Descripción
status

providers

Datos del proveedor.

Usuario:

GET /provider/test/? HTTP/1.1
Host: test.prometeo.qualia.uy
Accept: application/json
X-API-Key: <api key>
curl -X GET "https://test.prometeo.qualia.uy/provider/test/?"  -H "X-API-Key: <api key>"
import requests

requests.get('https://test.prometeo.qualia.uy/provider/test/', headers={'X-API-Key': '<api key>'})
var request = require('request');

request.get({
  "url": "https://test.prometeo.qualia.uy/provider/test/",
  "json": true,
  "headers": {
    "X-API-Key": "<api key>"
  }
});

Respuesta:

{
    "provider": {
        "auth_fields": [
            {
                "interactive": false,
                "name": "username",
                "type": "text"
            },
            {
                "interactive": false,
                "name": "password",
                "type": "password"
            }
        ],
        "country": "UY",
        "name": "test"
    },
    "status": "success"
}

Especificacion Open API

¿Preguntas?

Más información en nuestro Centro de Ayuda.

Centro de Ayuda
Contacto

Envíanos un mail con tu duda o sugerencia.

Contacto