Introducción
Manteca está organizada alrededor de la interfaz REST. Tiene URLs predecibles orientadas a recursos y usa códigos de respuesta HTTP estándar. Todos los valores de retorno son en formato JSON.
Contamos con un sandbox para que puedas probar el API sin alterar los flujos productivos. Para acceder al mismo, tendrás que usar la URL correspondiente (junto con sus API keys).
Por otro lado, para todo lo que es notificaciones hacia el lado del cliente, utilizamos webhooks. También contamos con un servicio de websockets para escuchar algunos eventos como los precios.
El API utiliza el protocolo HTTPS para exponer los endpoints. No soporta HTTP.
What made this section unhelpful for you?
Base URL
Producción:
https://api.manteca.dev/crypto
Sandbox:
https://sandbox.manteca.dev/crypto
What made this section unhelpful for you?
Autenticación
Manteca utiliza API keys para autenticar los requests. Las mismas son enviadas a través del header md-api-key
Las credenciales poseen privilegios completos por lo que es imprescindible que sean guardadas de manera segura. La interacción con Manteca debe ser siempre del lado del servidor, especialmente para los llamados autenticados.
En algunos casos, también proveemos la posibilidad de realizar IP whitelisting o acceder vía una VPN exclusiva para aumentar la seguridad.
What made this section unhelpful for you?
Finanzas
La sección de finanzas permite gestionar y entender cómo se operan los fondos dentro de la plataforma. En este contexto, existen tres formas de operar:
- Siempre en descubierto: en este modelo, los usuarios pueden operar sin necesidad de tener fondos disponibles en su balance. Cada vez que un usuario realiza una operación, se genera automáticamente un débito en su cuenta.
- En descubierto si no hay balance: en este esquema híbrido, si el usuario tiene fondos disponibles en su balance, estos se utilizan para cubrir la operación. En caso de que no haya fondos suficientes, se genera un débito por el monto faltante, permitiendo que la operación se lleve a cabo.
- Sin descubierto: en este caso, es necesario que el usuario tenga los fondos suficientes en su balance para poder operar. Si no dispone del saldo necesario, la operación será rechazada.
Cuando se habilita la posibilidad de operar en descubierto, la compañía usuaria de Manteca asume la responsabilidad de cubrir los montos correspondientes a las operaciones realizadas. Esto implica enviar los fondos necesarios al CBU o wallet cripto asignada, dentro del plazo temporal acordado entre las partes. El proceso de liquidación se realiza de forma automática, garantizando que las operaciones sean consistentes y transparentes.
Endpoints
GET
GET
GET
GET
Gestión de usuarios
La gestión de usuarios es un componente clave en nuestro sistema, ya que la unidad base de todas las operaciones son los usuarios. Para realizar cualquier tipo de operación dentro de la plataforma, es obligatorio registrar a los usuarios y asegurarse de que se encuentren validados correctamente.
El proceso de validación incluye los siguientes pasos esenciales:
Endpoints
POST
GET
GET
GET
GET
POST
DELETE
GET
GET
GET
GET
POST
GET
GET
PUT
Mercado
El API permite realizar operaciones tanto de cripto contra fiat como de cripto contra cripto. Existen dos formas de realizarlo: la opción bajo nivel que es la que se detalla abajo o usando sintéticos. Para ejecutar una operación, se deben seguir los siguientes pasos:
Transacciones
La sección de transacciones abarca todas las operaciones financieras que se pueden realizar dentro de la plataforma. Estas incluyen tanto movimientos de fondos como la ejecución de órdenes. A continuación, se describen las principales funcionalidades:
Operaciones disponibles
- Depósitos y retiros de fiat: los usuarios pueden ingresar o retirar dinero fiat directamente desde y hacia cuentas bancarias vinculadas.
- Depósitos y retiros de cripto: los usuarios pueden transferir criptomonedas desde wallets externas hacia la plataforma y viceversa. Los retiros son procesados hacia direcciones específicas en cadenas compatibles.
Widget
El widget es un sistema embebible diseñado para facilitar integraciones sin necesidad de desarrollo front-end. Este feature permite a las plataformas integrar procesos complejos como KYC, compra y venta de criptomonedas de forma trivial, adaptándose incluso a casos en los que normalmente no se requiere KYC en sus operaciones regulares. Por detrás, funciona mediante nuestro sistema de sintéticos; por lo tanto, se recomienda una lectura general de esa documentación.
Además, el sistema cuenta con webhooks configurables que notifican en tiempo real a la URL definida por la plataforma integradora cada vez que ocurre un evento de interés en el widget. Esto incluye eventos clave como la finalización del KYC, transacciones de compra o venta, entre otros.
El widget sigue un funcionamiento estándar para todos los casos de uso. Los pasos principales son:
Flujo del registro
Al acceder a la primera pantalla y completar los datos iniciales, la cuenta del usuario será creada. Luego, el usuario debe completar la información necesaria para verificar sus datos e identidad. Estos son todos los pasos que deberá seguir durante el proceso de creación de su cuenta, hasta que quede validado para operar.

Webhooks
Podes configurar los webhook endpoints a través del API para ser notificado por cada uno de los eventos que ocurran y te sean de interés. Para garantizar la integridad de los datos enviados mediante webhooks, utilizamos un sistema de validación basado en HMAC. Cada webhook se envía con una firma en md-webhook-signature
como header que, junto con el secret
que tenemos en conjunto, permitirá realizar la verificación de autenticidad de los mensajes. Básicamente, el sigature enviado tiene que ser el mismo que generan de su lado, aplicando HMAC al contenido que llega con el secreto en común.
Para garantizar que la serialización del JSON sea determinística, es necesario ordenar las claves del objeto de manera alfabética antes de realizar la conversión a string. Esto asegura consistencia en las respuestas y es especialmente útil para firmas criptográficas o validaciones HMAC. En nuestro caso particular, utilizamos la librería fast-json-stable-stringify
para hacer la serialización del mismo.
Los webhooks, tanto en el entorno de desarrollo como en el productivo, llegarán de la IP 18.229.68.94
. La misma se encuentra fija para poder ajustar las políticas de seguridad pertinentes de su lado. Además, tenemos un sistema de reintentos automáticos que operan con exponential backoff; esto significa que se reintentará múltiples veces y cada reintento será después de un intervalo mayor. Realizamos hasta 8 reintentos de cada envío.
Países soportados
Flujos de API
Descubrí algunas de las distintas soluciones que se pueden implementar a través del API Cripto. Acá vas a poder encontrar flujos y casos prácticos de uso de la plataforma.
What made this section unhelpful for you?
Alta de usuario
El alta de usuario consta de tres pasos principales. Los tres pasos son obligatorios para considerar a un usuario como dado de alta correctamente y que el mismo pueda realizar operaciones.
- Crear un usuario: se debe realizar el alta usando el POST de crear usuario.
- Añadir cuenta bancaria: se debe añadir al menos una cuenta bancaria al usuario usando el POST de añadir cuenta bancaria. Sólo podrá operar en la moneda que tenga una cuenta bancaria añadida. Por ejemplo, si cuenta con una cuenta bancaria en ARS añadida podrá operar USDT contra ARS, pero no podrá operar contra USD.
- Subir documentación: la subida de documentación consta de dos pasos. Primero, se realiza la generación del link de suba de documentación utilizando esta llamada. Una vez obtenida se debe subir a esa URL mediante PUT la imagen correspondiente como un binario. Es necesario subirle tanto
DNI_FRONT
(frente del documento de identidad) comoDNI_BACK
(dorso del documento de identidad) a un usuario.
Para sandbox se requiere que los legalId
sean válidos. Recomendamos, por ejemplo para Argentina, buscar CUITs válidos usando cuitonline.com.
What made this section unhelpful for you?
On-ramp
En esta sección, exploraremos el otro caso de uso más importante: el On-Ramp.
¿Qué es?
El On-Ramp se refiere al proceso inverso del off-ramp, es decir, la capacidad de cambiar moneda fiduciaria por criptomonedas.
¿Cómo funciona?
- El usuario realiza una transferencia bancaria en pesos o dólares al CBU que le informamos. En el caso de pesos, es posible generar un CVU único para la compañía, con un alias propio (por ejemplo: google.ars).
- Una vez recibida la transferencia, notificamos al usuario sobre la acreditación a través de un webhook con el evento FIAT_DEPOSIT_UPDATE.
- Tras recibir esta notificación, el usuario puede proceder a operar la compra de criptomonedas. Esta operación es instantánea, y las criptomonedas se acreditan inmediatamente en el balance del usuario. Una vez disponibles, pueden ser retiradas a la wallet que el usuario desee.
Tipos de retiros disponibles
Actualmente ofrecemos dos tipos de retiros:
- Retiro normal: el caso más común. La compañía realiza un retiro por usuario a una wallet específica. Esta wallet puede ser la misma para todos los usuarios o distinta para cada cliente, sin ninguna restricción.
- Retiro globo: para reducir los costos de red, es posible realizar un retiro generalizado de los balances de criptomonedas de todos los usuarios de la compañía en intervalos definidos (diario, semanal, mensual, etc.). Con este modelo, se suman los balances de criptomonedas de todos los usuarios y se efectúa un único retiro a la wallet que la compañía haya informado. Es necesario que la compañía nos notifique previamente si desea optar por esta modalidad.
What made this section unhelpful for you?
Off-ramp
En esta sección, exploraremos uno de los casos de uso más importantes: el Off-Ramp.
¿Qué es?
El Off-Ramp se refiere a la capacidad de cambiar criptomonedas por moneda fiduciaria, por ejemplo, pesos argentinos; es decir, partiendo de criptomonedas, terminamos en pesos en la cuenta bancaria del usuario a través de un proceso seguro, eficiente e instantáneo.
Opción 1 - Operatoria en descubierto
En este caso, se podría realizar una órden de usuario sin que el mismo cuente con fondos en su propio balance; Es decir, los fondos se debitarían de una cuenta acumuladora a nombre tu compañía en su lugar. Cada compañía comenzará con un descubierto y será responsable de ir enviando fondos a su dirección única asignada en cualquiera de las redes soportadas.
El flujo, en este caso, se vería así:
- Una vez el usuario es validado, recibirán un webhook con el aviso. Si no, se puede realizar long-polling, consultando el estado de validación. Cabe mencionar que este proceso demora como máximo 10 minutos y en la mayoría de los casos, suelen demorar no más de 30 segundos.
- Llegado a este punto, se puede realizar un lock de precio y, posteriormente, una creación de órden (por ejemplo, venta de USDT a ARS en este caso). Los precios del momento se pueden consultar a través de del endpoint de consulta de precio.
- Finalmente, el flujo termina con el envío de los pesos a la cuenta cargada inicialmente.
Por último, es importante destacar que existe un endpoint para consultar el estado de cuenta de la compañía. Si la misma queda en un estado negativo mayor al descubierto asignado, las órdenes se congelarán inmediatamente, desbloqueándose automáticamente una vez se envíen fondos nuevamente.
Opción 2 - Operatoria normal
En este caso, los fondos se debitarían directo de los usuarios creados y los depósitos tendrán que ser enviados a la wallet que le generaremos de cada uno de los usuarios. La variación principal respecto a la primera opción es que posterior a la validación de usuario, es necesario obtener su wallet de depósito para poder hacer envíos de fondos allí. Una vez los mismos se acrediten, recibirán un webhook informando o bien podrían realizar long-polling consultando el balance del usuario. A partir de allí, ya se puede proceder con la creación del lock de precio, órden y envío de fondos a cuenta bancaria.
What made this section unhelpful for you?
Assets de prueba
Paginación
Parámetros
page
: Página actual, el default es 1.limit
: La cantidad de elementos por página, el default es 10.
Para poder hacer uso de esto, se requiere enviar como queryParams, algo así: /?page=1&limit=10; completando con los parámetros deseados.
What made this section unhelpful for you?
Errores
API Cripto usa respuestas HTTP estándar para indicar resultados exitosos o fallidos.
En general:
- Códigos en el rango de
2xx
indican éxito. - Códigos en el rango de
4xx
indican un error relacionado a la información provista (como parámetros omitidos o con un tipo inválido). - Códigos en el rango de
5xx
indican un error inesperado en Manteca.
Más allá de los códigos, en caso de error, se podrá acceder a más detalle a partir de visualizar el body de la respuesta. Siempre se maneja un mismo formato que contiene por un lado un internalStatus que hace referencia a un código verbal de error y por otro, un message que es básicamente una descripción algo más detallada del error.
Ejemplo de respuesta de error
Código verbal de error
Descripción del error
Show child attributes
What made this section unhelpful for you?
Error Codes
400
Los parámetros enviados pueden tener algún problema. Normalmente, se indica el detalle en la respuesta.
401, 403
Faltan las API keys o faltan permisos para acceder al recurso.
404
El recurso no existe
409
Normalmente, ocurre cuando se envía el mismo requests repetidas veces en un corto lapso de tiempo.
429
Demasiadas requests enviadas en un corto período de tiempo.
500
Error del lado de Manteca.
What made this section unhelpful for you?
Health
Contamos con una web exclusiva para visualizar el estado de nuestros servicios. Además, se puede realizar un GET al /v1 para obtener el estado particular del servicio cripto.