Skip to main content
Una decisión de producto o de riesgo llega como una frase: «no más de R$ 20,000 por cuenta al mes». Esta guía convierte esa frase en un tope activo y muestra dónde leer cuánto le queda a un cliente. Qué cambia en tu operación: el tope deja de ser una constante compilada en un servicio. Se convierte en una definición almacenada que creas, activas, subes y detienes, y cada decisión que lo toca reporta cuánto consumió.
¿Para quién es esta guía? Equipos de producto y riesgo que definen el tope, y desarrolladores que conectan POST /v1/validations al flujo de pago. Los pasos 1 y 2 son decisiones que tomar antes de cualquier llamada. Los pasos 3 a 6 son las llamadas.

Antes de empezar


  • Tracer en ejecución y accesible, con una API key. Consulta Primeros pasos
  • El id de la cuenta, el portafolio o el segmento al que se aplica el tope
  • El código de activo de las transacciones que quieres limitar
  • Familiaridad con los tipos de límite, las ventanas de tiempo y los períodos personalizados. Consulta Límites de gasto
Todas las llamadas siguientes envían la API key como X-API-Key y se ejecutan contra http://localhost:4020.

Paso 1: Decide a qué se dirige el tope


Un límite lleva una lista de objetos de scope, y cada objeto indica a qué se aplica el límite. Estos campos están disponibles dentro de un objeto: Los campos dentro de un mismo objeto se combinan con AND. Un campo que omitas actúa como comodín. Entre objetos, la lista se combina con OR, así que un límite con dos objetos se aplica cuando cualquiera de los dos coincide. La decisión que responde a «R$ 20,000 por cuenta» es qué id nombras:
El tope se aplica a esa cuenta. Cuenta el gasto de esa cuenta y de ninguna otra. Para un tope por cuenta en toda una cartera de clientes, cada cuenta recibe su propio límite.
Un límite también lleva un asset, y Tracer solo verifica un límite contra una transacción cuando ambos coinciden. Tracer no verifica un límite creado en BRL contra una transacción en USD. Una cartera que liquida en dos monedas necesita un límite para cada una.
Un límite debe llevar al menos un objeto de scope, y cada objeto debe establecer al menos un campo. Tracer rechaza una lista vacía o un objeto vacío. Consulta Qué sale mal.

Paso 2: Elige el período


limitType decide tanto el tamaño de la ventana del tope como cuándo empieza un nuevo conteo. Tracer ofrece cinco: «al mes» corresponde a MONTHLY.
El corte es UTC, no la hora local. Un cliente en São Paulo que gasta a las 21:30 del 31 de julio está a las 00:30 UTC del 1 de agosto. Ese monto entra en el conteo de agosto, no en el de julio. Cuando un tope usa términos locales, las últimas horas del mes local suelen pertenecer al mes siguiente.
CUSTOM toma customStartDate y customEndDate, y es la forma que sirve para una campaña o una promoción. Esos dos campos pertenecen a CUSTOM. Tracer los rechaza en los otros cuatro tipos. Para restringir un tope a ciertas horas del día en cambio, consulta ventanas de tiempo.

Paso 3: Crea el límite


POST /v1/limits almacena la definición. Tracer la crea en DRAFT y todavía no la verifica contra transacciones.
Una llamada exitosa responde 201. El cuerpo lleva el límite almacenado. Dos campos importan ahora:
Los nombres son únicos entre límites, y el conjunto de caracteres es reducido. name acepta letras y dígitos ASCII, espacios, y -, _, ., (, ). Tracer rechaza un acento, o un guion escrito como raya, con 0371. Tracer rechaza un nombre que ya tiene otro límite activo, con 0442. Eliminar un límite libera su nombre de nuevo.
Para el payload completo y todos los campos opcionales, consulta Crear un límite.

Paso 4: Actívalo


Tracer no verifica un límite en DRAFT. Activarlo es lo que lo pone en el flujo de pago:
La respuesta lleva el límite con status en ACTIVE. Desde aquí, Tracer verifica contra este límite cada POST /v1/validations cuya transacción coincida con el scope y el asset.
Activar a mitad de mes no importa el historial del mes. Tracer cuenta una transacción contra un límite en el momento en que decide sobre ella. El gasto que ocurrió mientras el límite estaba en DRAFT no entra en el conteo. Un tope activado el día 20 rige lo que pasa desde el día 20 en adelante.
Consulta Activar un límite.

Paso 5: Lee cuánto queda


Cada respuesta de POST /v1/validations lleva limitUsageDetails, con una entrada por cada límite que Tracer verificó:
En la entrada de arriba, una compra de R$ 1,500 llevó un mes de 18,500 a exactamente 20,000 y agotó el tope. Tracer deniega la siguiente transacción de esa cuenta hasta agosto. Cuando una transacción excede un límite, la decisión es DENY y reason es limit_exceeded. Tracer no suma al conteo el monto que habría cruzado el tope. Un límite produce una denegación, no una marca para revisión. Para ir de una denegación así hasta el límite que la causó, consulta Revisar una transacción denegada.

La otra lectura

GET /v1/limits/{limitId}/usage responde con un total del límite, no de un período. Suma los contadores de uso registrados contra él, entre los períodos y scopes que ha acumulado. Úsalo para revisar cuánto ha absorbido un límite en total, no para responder cuánto le queda a un cliente este mes. Tracer elimina un contador 90 días después de que termina su período. En un límite de larga duración, este total cubre solo los períodos que todavía se conservan, no todo el ciclo de vida del límite. Consulta Seguimiento de uso. Consulta Obtener una instantánea de uso de un límite.

Paso 6: Cámbialo, páusalo, elimínalo


1

Sube o baja el tope

name, description, maxAmount y scopes son editables, igual que los campos de ventana de tiempo y de período personalizado. limitType y asset no lo son. Tracer rechaza una solicitud que envíe cualquiera de los dos con 0380, y un período o un asset distintos significan un límite nuevo. Tracer rechaza un cuerpo vacío con 0183. Consulta Actualizar un límite.Cambiar el tope no borra el conteo en curso. Si lo bajas por debajo de lo que el período actual ya consumió, Tracer deniega a la cuenta hasta que empiece el siguiente período.
2

Deja de aplicarlo

El límite pasa a INACTIVE y Tracer deja de verificarlo. Conserva su definición y su lugar en el , y POST /v1/limits/{limitId}/activate lo devuelve al flujo de pago. Consulta Desactivar un límite.
3

Devuélvelo a borrador

Devuelve un límite INACTIVE a DRAFT. Consulta Devolver un límite a borrador.
4

Elimínalo

Responde 204. Primero tienes que desactivar un límite que esté ACTIVE. Tracer rechaza la eliminación con 0363, que es lo que evita que un tope activo desaparezca por accidente. Consulta Eliminar un límite.

Encuentra los límites que ya tienes

GET /v1/limits los lista, y filtra por los mismos campos de scope que definiste en el paso 1:
name, status, limit_type, account_id, segment_id, portfolio_id, merchant_id, transaction_type y sub_type filtran todos. Los resultados se paginan por cursor. Consulta Listar límites, y Obtener un límite para uno por su id.

Qué sale mal


Lo que suele salir mal al configurar un tope:
  • «El cliente gastó de más y nada lo detuvo». Revisa primero status. Tracer no verifica un límite en DRAFT o INACTIVE. Luego revisa que el asset del límite coincida con el de la transacción, y que el scope nombre el id que la transacción realmente llevaba.
  • «El tope del segmento se agotó al segundo día». Un límite con scope de segmento es un solo presupuesto para todo el segmento, no uno por cada cuenta dentro de él. Un tope por cuenta significa un límite dirigido a cada cuenta.
  • «El mes cambió unas horas antes». Los cortes de período son UTC. El gasto después de las 21:00 en UTC-3 pertenece al siguiente día UTC, y en el último día del mes, al mes siguiente.
  • «Subí el límite y la cuenta sigue denegada». Subir el tope no borra el conteo. Confirma que el nuevo maxAmount esté por encima de lo que el período ya consumió.
  • «GET /v1/limits/{id}/usage reporta más de lo que el cliente gastó este mes». Ese endpoint suma los contadores registrados para el límite, entre períodos y scopes. Para el período actual, lee limitUsageDetails en la respuesta de la validación.

Códigos de error

La lista completa está en la lista de errores de Tracer.

Referencia rápida