Conceptos fundamentales
Un glosario y una referencia del modelo de objetos de Tokeflow — las entidades que orquestas (organizations, merchants, clientes, catálogo, checkout, transacciones, órdenes, suscripciones e instrumentos de pago) y cómo se relacionan.
Tokeflow es la infraestructura detrás de tu plataforma. Modelas tu negocio una sola vez — sus cuentas, catálogo, clientes y pagos — y Tokeflow estandariza esos objetos en todos los proveedores de pago conectados. Esta página es el glosario canónico y el modelo de objetos: cada entidad, qué representa, su prefijo de ID y cómo encajan las piezas.
Tokeflow orquesta pagos — enrutamiento, fallback, normalización y trazabilidad — pero no es un procesador de pagos y nunca mueve ni liquida fondos. La autorización, la captura y la liquidación ocurren en los proveedores de pago conectados. Los objetos a continuación son la vista normalizada de Tokeflow sobre tu operación.
El modelo de objetos de un vistazo
Todo en Tokeflow cuelga de un modelo de tenencia de dos niveles: una Organization (tu plataforma) que contiene uno o más Merchants (las marcas o unidades de negocio que realmente venden). Casi cualquier otro recurso está delimitado a un único merchant.
Una clave de API de Merchant está delimitada automáticamente a su merchant — nunca pasas merchant_id. Una clave de Organization abarca cada merchant de la org, por lo que las llamadas delimitadas por merchant deben identificar el merchant destino mediante el parámetro de consulta merchant_id (en list/get) o el campo del cuerpo (en create). Consulta Autenticación.
Tenencia
Organization
Tu plataforma — el tenant de nivel superior y el límite de facturación/gobernanza. Una organization posee uno o más merchants y lleva la identidad de cumplimiento de toda la org (razón social, registro, país). Las claves de API delimitadas a la organization (sk_live_org_… / pk_live_org_…) pueden actuar a través de cada merchant de la org.
Prefijo de ID: org_
Merchant
Una única marca o unidad de negocio que vende bajo tu plataforma. Un merchant es el ámbito para casi todos los recursos operativos — clientes, catálogo, checkout, transacciones, órdenes y suscripciones pertenecen todos a exactamente un merchant. Las claves delimitadas a merchant (sk_live_mer_… / pk_live_mer_…) infieren el merchant automáticamente.
Prefijo de ID: mrc_
Los merchants, las claves de API y los endpoints de webhook se aprovisionan en el Tokeflow Dashboard durante el onboarding — no vía la API. Una vez completado el onboarding, usas las claves emitidas para gestionar todo lo siguiente de forma programática.
Clientes y datos de pago
Customer
Un comprador bajo un merchant específico. Contiene identidad (nombre, correo electrónico, teléfono), un documento fiscal opcional y una dirección de facturación. Los clientes se deduplican por correo electrónico dentro de un merchant, y la misma persona puede existir de forma independiente bajo diferentes merchants.
Prefijo de ID: cust_
| Field | Type | Required | Description |
|---|---|---|---|
email | string | No | Usado para la deduplicación dentro del merchant. |
name | string | No | Nombre para mostrar. |
phone | string | No | Teléfono de contacto. |
document_type | enum | No | Uno de cpf, cnpj, passport, tax_id. |
document_number | string | No | El valor del documento para el tipo dado. |
Payment Instrument
Un método de pago reutilizable y tokenizado propiedad de un cliente — típicamente una tarjeta almacenada para cobros futuros (checkout recurrente, suscripciones, un clic). Tokeflow almacena únicamente metadatos seguros como la marca, los últimos cuatro dígitos y la caducidad; los datos brutos de la tarjeta nunca se persisten en los sistemas de Tokeflow.
Prefijo de ID: pi_
| Field | Type | Description |
|---|---|---|
id | string | Identificador del instrumento pi_…. |
customer_id | string | Cliente propietario (cust_…). |
card_brand | string | Marca de la red de la tarjeta. |
last4 | string | Últimos cuatro dígitos de la tarjeta. |
exp_month | integer | Mes de caducidad. |
exp_year | integer | Año de caducidad. |
is_default | boolean | Si este es el instrumento predeterminado del cliente. |
status | string | Estado del ciclo de vida del instrumento. |
Los instrumentos de pago pueden mantenerse actualizados automáticamente: Tokeflow admite network tokens (un opt-in explícito por merchant, network_tokens_enabled en el merchant) y un account updater para que las tarjetas almacenadas sigan funcionando a través de reemisiones y caducidades — sin que tengas que volver a recopilar los datos de la tarjeta. Un instrumento guardado también puede volver a cobrarse con un clic; consulta Upsells y downsells en un clic.
Card Token
Una referencia efímera y de un solo uso a los datos de la tarjeta recopilados en el navegador por los secure fields de Tokeflow. Los secure fields se ejecutan dentro de iframes aislados y cross-origin; los datos de la tarjeta se cifran en el navegador y nunca tocan tus servidores. Tu cliente recibe un card token y lo entrega a tu backend, que lo intercambia (del lado del servidor, con una clave secreta) por un Payment Instrument duradero.
Prefijo de ID: tok_
Los card tokens son un concepto del SDK / lado del navegador y son efímeros por diseño. Trátalos como entregas de un solo uso: intercámbialos en el servidor con prontitud y luego referencia el instrumento pi_… resultante para cualquier cobro futuro. Consulta la documentación del SDK.
Catálogo
Tu catálogo vendible es una jerarquía de cuatro niveles: una Product Family agrupa Products relacionados; cada producto se vende como una o más Offers; cada oferta tiene precio mediante Offer Prices (uno por moneda). Las Offer Transitions definen cómo un suscriptor puede moverse entre ofertas (upgrade/downgrade) dentro de una familia.
Product Family
Una agrupación de productos relacionados entre los que un suscriptor puede moverse (por ejemplo, niveles de un plan). La familia define el comportamiento predeterminado — change_charge_behavior — para las transiciones entre sus ofertas. Un producto pertenece a una familia cuando participa en flujos de upgrade/downgrade.
Prefijo de ID: pfa_
Product
Algo que vendes. Un producto es one_time o recurring (type), y está active o archived (status). Cuando forma parte de una familia, lleva una posición de nivel para que los planes puedan ordenarse en la lógica de upgrade/downgrade.
Prefijo de ID: prd_
| Field | Type | Description |
|---|---|---|
name | string | Nombre del producto. |
type | enum | one_time o recurring. |
status | enum | active o archived. |
product_family_id | string | Familia propietaria (pfa_…); se establece cuando el producto participa en upgrade/downgrade. |
Offer
Una configuración comprable de un producto — lo que un cliente realmente compra. Una oferta fija el ciclo de facturación, el comportamiento de prueba y de configuración, y cuántos ciclos cobrar. Un producto puede exponer varias ofertas (por ejemplo, una oferta mensual y una anual).
Prefijo de ID: ofr_
| Field | Type | Description |
|---|---|---|
name | string | Nombre de la oferta (p. ej. "Monthly", "Holiday Promo"). |
billing_cycle | enum | daily, biweekly, monthly, quarterly, half_yearly, yearly, custom, o none (bajo demanda, sin programador). |
cycle_limit | integer | Número de cobros; null = cobrar hasta la cancelación. |
status | enum | active o archived. |
is_default | boolean | Oferta predeterminada para el producto. |
billing_cycle: none significa una oferta bajo demanda sin programador de facturación automática. Úsala para ofertas que se cobran de forma ad hoc en lugar de en una cadencia fija.
Offer Price
El importe de una oferta en una única moneda. Una oferta tiene un precio por moneda, con uno marcado como predeterminado. Los importes son unidades menores enteras y siempre van emparejados con una moneda ISO 4217.
Prefijo de ID: opr_
| Field | Type | Description |
|---|---|---|
currency | string | Moneda ISO 4217 (p. ej. BRL, USD). |
amount | integer | Precio en unidades menores (p. ej. 9900 = US$99.00). |
is_default | boolean | Moneda predeterminada para la oferta. |
Offer Transition
Una regla direccional que conecta dos ofertas de la misma familia — el camino que toma un suscriptor al hacer upgrade o downgrade. Una transición puede anular el change_charge_behavior predeterminado de la familia (next_renew, prorated, o override) para ese par específico, y puede activarse o desactivarse.
Prefijo de ID: oft_
Checkout
Un flujo de compra alojado y con estado. Una Checkout Session rastrea a un comprador desde su llegada hasta la finalización, contiene las ofertas elegidas como Checkout Items, y registra una línea de tiempo de Checkout Events (incluyendo atribución UTM) para el análisis del embudo. Una sesión completada produce una Order.
Checkout Session
El contenedor para un intento de checkout. Rastrea la oferta principal, el cliente (eventualmente identificado), la moneda seleccionada, y un estado del ciclo de vida: initiated, customer_identified, payment_pending, completed, expired, abandoned.
Prefijo de ID: cks_
Checkout Item
Una línea dentro de una sesión: una oferta, su moneda e importe capturado como snapshot, cantidad, y cuotas seleccionadas. Los importes se capturan como snapshot del precio de la oferta en el momento de la sesión para que ediciones posteriores del catálogo no cambien un checkout en curso.
Prefijo de ID: cki_
Checkout Event
Un evento de solo anexado en la línea de tiempo de una sesión. Tipos de evento: initiated, customer_identified, currency_changed, payment_started, payment_failed, payment_succeeded, completed, expired, abandoned. Lleva atribución opcional (utm_source, utm_medium, utm_campaign) y contexto de la solicitud.
Prefijo de ID: cke_
Pagos
Transaction
Un único intento de pago contra un proveedor — el registro normalizado de una autorización/captura, independientemente de qué proveedor conectado la haya gestionado. Lleva el método de pago, los importes (autorizado y capturado, en unidades menores), la moneda, el país y un estado detallado. Las transacciones son idempotentes en la creación y pueden vincularse a una Order.
Prefijo de ID: tx_
| Field | Type | Description |
|---|---|---|
payment_method | enum | credit_card, debit_card, pix, boleto, wallet. |
charge_type | enum | payment o setup_verification. |
amount_authorized | integer | Importe autorizado en unidades menores. |
amount_captured | integer | Importe capturado en unidades menores. |
currency | string | Moneda ISO 4217. |
country | string | País ISO 3166-1 alpha-2. |
status | enum | Consulta los estados de transacción a continuación. |
status: pending, pre_authorized, authorized, failed, canceled, voided, charged_back, refund_pending, capture_pending, refunded, partially_refunded, expired.
Atención a la escritura de los estados de cancelación. Las transacciones y las órdenes usan canceled (una l); los reembolsos y las suscripciones usan cancelled (dos l). Compara siempre contra el valor exacto del recurso que estés leyendo — una comparación de cadenas escrita para uno nunca coincidirá con el otro.
Cuando creas una transacción, envía una cabecera Idempotency-Key (o idempotency_key en el cuerpo). Reproducir la misma clave devuelve el resultado original en lugar de cobrar dos veces. Consulta Idempotencia.
Order
El registro normalizado y orientado al merchant de una única venta. Una orden se vincula a como máximo una Transaction que la liquida, referencia al cliente, y puede estar ligada a una Subscription cuando se trata de una renovación o configuración de prueba. Usa la orden como tu referencia de negocio estable; la transacción es la mecánica de pago detrás de ella.
Prefijo de ID: ord_
| Field | Type | Description |
|---|---|---|
customer_id | string | Comprador (cust_…). |
order_type | enum | api, checkout, renewal, trial_setup, card_setup. |
total_amount | integer | Total de la orden en unidades menores. |
currency | string | Moneda ISO 4217. |
status | enum | Consulta los estados de orden a continuación. |
subscription_id | string | Se establece para órdenes renewal / trial_setup; null para órdenes puntuales. |
checkout_session_id | string | Se establece cuando la orden se originó a partir de una sesión de checkout. |
status: pending, pre_authorized, authorized, failed, canceled, refunded, partially_refunded, charged_back, refund_pending.
Refund
Una reversión total o parcial de una transacción capturada. Una transacción puede tener múltiples reembolsos (p. ej. reembolsos parciales sucesivos). Cada reembolso registra un importe en unidades menores, una moneda, un estado y un motivo.
Prefijo de ID: ref_
| Field | Type | Description |
|---|---|---|
payment_transaction_id | string | La transacción que se está reembolsando (tx_…). |
amount | integer | Importe reembolsado en unidades menores. |
currency | string | Moneda ISO 4217. |
status | enum | pending, succeeded, failed, cancelled. |
reason | enum | duplicate, fraudulent, requested_by_customer. |
Subscription
Un acuerdo de facturación recurrente: un cliente facturado en una Offer usando un Payment Instrument almacenado. Tokeflow rastrea la oferta y el importe actuales, el período de facturación, las ventanas de prueba, el estado de dunning para renovaciones fallidas, y un estado del ciclo de vida. Cada cobro de renovación produce una Order (y su transacción).
Prefijo de ID: sub_
| Field | Type | Description |
|---|---|---|
customer_id | string | Suscriptor (cust_…). |
current_offer_id | string | La oferta facturada actualmente (ofr_…). |
billing_cycle | enum | Copiado de la oferta en la creación. |
current_amount | integer | Importe recurrente actual en unidades menores. |
currency | string | Moneda ISO 4217. |
payment_instrument_id | string | Instrumento cobrado en la renovación (pi_…). |
cancel_at_period_end | boolean | Si es true, cancela al final del período en lugar de inmediatamente. |
status | enum | trialing, active, dunning, paused, cancelled, expired. |
Convenciones de dinero y formato
La consistencia entre proveedores y monedas se garantiza mediante unas pocas reglas. Aplícalas en todas partes.
| Concept | Convention | Example |
|---|---|---|
| Importes | Unidades menores enteras (centavos) — nunca decimales | 15000 = R$150.00; 9900 = US$99.00 |
| Moneda | ISO 4217, siempre emparejada con un importe | BRL, USD, EUR |
| País | ISO 3166-1 alpha-2 | BR, US |
| Marcas de tiempo | ISO 8601, UTC | 2026-01-15T12:30:00.000Z |
Cada importe en Tokeflow es un entero en unidades menores. Enviar 150.00 donde se espera 15000 será rechazado o malinterpretado. Envía y almacena siempre los importes como centavos, e incluye siempre la currency.
Envoltorio de respuesta estándar
Cada respuesta de la API envuelve el recurso en un envoltorio consistente. Un único recurso omite meta; una lista incluye meta.pagination.
{
"success": true,
"data": {
"id": "tx_8f3c2a1b",
"status": "authorized",
"payment_method": "credit_card",
"amount_authorized": 15000,
"amount_captured": 15000,
"currency": "BRL",
"country": "BR"
},
"request_id": "req_8f3c2a1b9d",
"timestamp": "2026-01-15T12:30:00.000Z"
}Una respuesta de lista establece data como un array e incluye paginación:
{
"success": true,
"data": [
{ "id": "ord_a1b2c3", "status": "authorized", "total_amount": 9900, "currency": "USD" }
],
"meta": {
"pagination": {
"page": 1,
"limit": 20,
"total": 42,
"total_pages": 3,
"has_next": true,
"has_prev": false
}
},
"request_id": "req_8f3c2a1b9d",
"timestamp": "2026-01-15T12:30:00.000Z"
}Referencia de formato de ID
Cada objeto de Tokeflow lleva un identificador opaco con prefijo. Los prefijos son estables — haz coincidencias con ellos en lugar de analizar el sufijo aleatorio.
| Object | Prefix | Example |
|---|---|---|
| Organization | org_ | org_a1b2c3d4 |
| Merchant | mrc_ | mrc_a1b2c3d4 |
| Customer | cust_ | cust_a1b2c3d4 |
| Product Family | pfa_ | pfa_a1b2c3d4 |
| Product | prd_ | prd_a1b2c3d4 |
| Offer | ofr_ | ofr_a1b2c3d4 |
| Offer Price | opr_ | opr_a1b2c3d4 |
| Offer Transition | oft_ | oft_a1b2c3d4 |
| Checkout Session | cks_ | cks_a1b2c3d4 |
| Checkout Item | cki_ | cki_a1b2c3d4 |
| Checkout Event | cke_ | cke_a1b2c3d4 |
| Transaction | tx_ | tx_a1b2c3d4 |
| Order | ord_ | ord_a1b2c3d4 |
| Refund | ref_ | ref_a1b2c3d4 |
| Subscription | sub_ | sub_a1b2c3d4 |
| Payment Instrument | pi_ | pi_a1b2c3d4 |
| Card Token (SDK) | tok_ | tok_a1b2c3d4 |
Próximos pasos
- Autenticación — tipos de clave, ámbitos y la regla de
merchant_idpara claves de org. - Idempotencia — reintentos seguros en llamadas de creación y de cobro.
- SDK — recopila tarjetas con secure fields e intercambia card tokens por instrumentos de pago.
- Webhooks — entrega normalizada de eventos y verificación de firmas.