Saltar al contenido principal
Las tarjetas CBPay gastan Just-In-Time del saldo central de la cuenta: no hay que prefondearlas ni moverles saldo. Cada tarjeta elige desde qué saldo gasta (spending_asset: USDT, USDC, BTC o GOLD). USDT/USDC van 1:1 con el USD; BTC y GOLD se convierten al precio del momento de cada evento. Cada compra se autoriza en tiempo real contra el saldo disponible de ese asset y los límites propios de la tarjeta, y el débito queda de inmediato en el historial de movimientos.

Cuántas tarjetas puedes tener

Tipo de cuentaVirtualesFísicas¿Para terceros?
Persona11No
EmpresaIlimitadasIlimitadasSí: personas designadas (ej. empleados)
Cada tarjeta gasta del saldo central de la cuenta en el asset que tenga configurado (spending_asset, USDT por defecto). El control fino es por límites de gasto de cada tarjeta (por transacción, diario, mensual), que siempre se miden en USD y puedes cambiar en cualquier momento.

Elegir el saldo de gasto (USDT, USDC, BTC o GOLD)

Define spending_asset al crear la tarjeta o cámbialo después con PATCH. Solo afecta compras futuras: las autorizaciones en vuelo conservan el asset con el que se debitaron (y su anulación devuelve ese mismo asset).
curl -X PATCH https://api.qbank.cl/platform/v1/cards/{card_id} \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{ "spending_asset": "BTC" }'
USDT y USDC valen 1 USD, así que la conversión es exacta 1:1 y sin comisión de cambio: una compra de 25.00 USD debita 25.000000 del asset elegido. BTC y GOLD se convierten con el precio efectivo del momento de cada evento (el mismo precio de settlement que ves en GET /v1/rates, bloque settlement):
  • Autorización: se reserva el equivalente de la compra en tu asset más un pequeño colchón (no es un cobro: cubre la variación del precio hasta la liquidación y se devuelve al capturar). Si el precio de ejecución no está disponible en ese momento, la compra se declina (pricing_unavailable) — nunca se convierte con un precio no confiable.
  • Liquidación (captura): el monto final se re-convierte al precio del momento de la captura; el sobrante del colchón vuelve a tu saldo (o se debita la diferencia si el precio se movió más que el colchón).
  • Anulación de una autorización: se devuelve el monto EXACTO reservado, sin conversión.
  • Devoluciones y ajustes posteriores a la captura: se re-convierten al precio del momento del evento. Entre la compra y la devolución el precio puede variar — recibes el equivalente en tu asset al precio de ese momento, no la cantidad original.
  • Las compras BTC/GOLD comparten los límites de assets volátiles de tu cuenta (por operación y volumen 24 h, visibles en GET /v1/settlement).
Error / rechazoDóndeCausaSolución
spending_asset_unavailable400 en PATCH / rechazo de compraEl asset no existe o no está habilitado para comprasUsa USDT, USDC, BTC o GOLD
settlement_asset_disabled400 en PATCHTu operador deshabilitó ese assetConsulta GET /v1/settlement (enabled_assets)
pricing_unavailableRechazo de compra (BTC/GOLD)Precio de ejecución no disponible al autorizarReintenta la compra; si persiste, cambia a USDT/USDC
settlement_limit_exceededRechazo de compra (BTC/GOLD)La compra excede el límite por operación de assets volátilesCompra menor o gasta desde USDT/USDC
settlement_daily_limit_exceededRechazo de compra (BTC/GOLD)Se alcanzó el volumen 24 h de assets volátiles de la cuentaEspera o gasta desde USDT/USDC
Si el saldo del asset elegido no alcanza, la compra se rechaza con insufficient_funds — no hay fallback automático a otro saldo.
Con BTC/GOLD tu saldo queda expuesto a la variación del precio entre los eventos de una compra (autorización, captura, devolución). Cada conversión usa el precio efectivo del momento — CBPay nunca re-cotiza montos hacia atrás ni te descuenta “por si acaso”: el colchón de la autorización se devuelve siempre al liquidar.

Costos (configurados por tu operador, pueden ser 0)

ServicioCuándo se cobra
card_creation_virtualAl emitir una tarjeta virtual
card_creation_physicalAl emitir una tarjeta física
card_monthlyMensualidad por tarjeta activa (si no hay saldo, la tarjeta se congela — sin deuda)
card_cancellationAl cancelar una tarjeta
Los montos exactos se consultan en GET /v1/rates (campo fees). Todo cargo de emisión se reembolsa automáticamente si la emisión falla.

Crear una tarjeta

El flujo depende de si tu cuenta es persona o empresa — elige tu pestaña. La regla común: el titular (cardholder) se verifica UNA sola vez por cuenta, en la primera emisión; las siguientes tarjetas lo reutilizan sin pedir datos. La idempotency_key es obligatoria siempre (un retry con la misma clave devuelve la tarjeta original y nunca cobra dos veces).
Una cuenta persona emite tarjetas para sí misma (máximo 1 virtual + 1 física).Tu primera tarjeta crea y verifica tu titular en el emisor. Como tu cuenta ya aprobó su verificación de identidad, tus datos y documentos se completan solos desde tu verificación — solo agregas los campos propios del emisor (occupation, salary_usd); cualquier campo que envíes explícito gana sobre el autofill:
curl -X POST https://api.qbank.cl/platform/v1/cards \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "physical": false,
    "idempotency_key": "card-v-1",
    "cardholder": {
      "occupation": "52201",
      "salary_usd": 1800
    }
  }'
occupation es un código del catálogo (ver abajo) y salary_usd va en dólares enteros. Si tu verificación se hizo por wizard sin algún dato o documento que el emisor exige, agrégalo explícito al cardholder (first_name, email, address, id_front_url…, mismo formato de siempre).Tu segunda tarjeta (por ejemplo la física) ya no pide ningún dato — tu titular quedó verificado:
curl -X POST https://api.qbank.cl/platform/v1/cards \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{ "physical": true, "idempotency_key": "card-f-1" }'
Si intentas una tercera del mismo tipo: 409 card_limit_reached (cancela la existente primero).
Respuesta (misma forma en todos los casos):
{
  "card_id": "3c2b1a09-8d7e-6f5a-4b3c-2d1e0f9a8b7c",
  "account_id": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
  "physical": false,
  "cardholder_kind": "account",
  "status": "active",
  "spending_asset": "USDT",
  "limits": { "monthly": "5000.000000" },
  "created_at": "2026-07-08T12:00:00Z",
  "updated_at": "2026-07-08T12:00:00Z",
  "creation_fee": "3.000000"
}
Puedes fijar el saldo de gasto desde el inicio agregando "spending_asset": "USDC" al body de creación (USDT si no lo mandas).
Los documentos se validan de verdad por el emisor: las URLs deben apuntar a documentos legítimos y accesibles. Si faltan o son insuficientes, la emisión falla (422 core_rejected o 409 cardholder_kyc_pending), el fee se reembolsa automáticamente y puedes reintentar corrigiendo los datos.
¿Persona o empresa? Las diferencias entre ambos tipos de cuenta en TODOS los productos están resumidas en personas y empresas.
Al designar una persona, occupation debe ser un código del catálogo oficial (no texto libre); para una empresa, kind_of_business también. Consulta y busca los códigos en:
# Ocupaciones (personas) — filtra con ?q=
curl "https://api.qbank.cl/platform/v1/cards/catalog/occupations?q=director" \
  -H "Authorization: Bearer <token>"

# Giros / actividad económica (empresas)
curl "https://api.qbank.cl/platform/v1/cards/catalog/business-activities?q=informát" \
  -H "Authorization: Bearer <token>"
Cada item trae { "code": "...", "label": "..." }. Usa el code en occupation / kind_of_business. Si mandas un valor fuera de catálogo, la API responde 400 invalid_occupation o 400 invalid_kind_of_business antes de llegar al emisor. El salary_usd va en dólares (entero).

Tarjetas físicas: activación

Una tarjeta física nace en pending_activation y viaja inactiva por seguridad. Cuando el titular la tiene en mano:
curl -X POST https://api.qbank.cl/platform/v1/cards/{card_id}/activate \
  -H "Authorization: Bearer <token>"

Ver PAN y CVV (datos sensibles)

Solo la cuenta dueña puede revelarlos (nunca el org admin). La respuesta es de una sola pasada: muéstrala al titular y descártala.
curl -X POST https://api.qbank.cl/platform/v1/cards/{card_id}/reveal \
  -H "Authorization: Bearer <token>"
{
  "card_id": "3c2b1a09-8d7e-6f5a-4b3c-2d1e0f9a8b7c",
  "pan": "5339880000001234",
  "cvv": "123",
  "exp_date": "202907",
  "note": "sensitive data: display once, never store"
}
Nunca almacenes ni loguees el PAN/CVV. CBPay tampoco lo persiste: la respuesta viene directo del emisor (estándar PCI).

Límites y congelar/descongelar

Actualizar límites
curl -X PATCH https://api.qbank.cl/platform/v1/cards/{card_id} \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{ "limits": { "per_transaction": "200.00", "daily": "0" } }'
"0" elimina un límite. Para congelar (rechaza toda compra al instante):
Congelar
curl -X PATCH https://api.qbank.cl/platform/v1/cards/{card_id} \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{ "frozen": true }'

Transacciones y su ciclo de vida

curl "https://api.qbank.cl/platform/v1/cards/{card_id}/transactions?from=2026-07-01&to=2026-07-08&page=1&page_size=50" \
  -H "Authorization: Bearer <token>"
{
  "page": 1,
  "page_size": 50,
  "transactions": [
    {
      "transaction_id": "7a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9",
      "card_id": "3c2b1a09-8d7e-6f5a-4b3c-2d1e0f9a8b7c",
      "kind": "purchase",
      "merchant": "MERPAGO*SUPERMERCADO",
      "mcc": "5411",
      "amount_usd": "25.00",
      "amount_usdt": "25.000000",
      "spend_asset": "USDC",
      "spend_amount": "25.000000",
      "status": "settled",
      "decline_reason": "",
      "auth_number": "123456",
      "created_at": "2026-07-09T15:04:05Z",
      "updated_at": "2026-07-10T09:00:00Z"
    }
  ]
}
spend_asset / spend_amount indican desde qué saldo se debitó realmente la compra y cuánto en ese asset (amount_usd / amount_usdt siguen siendo el valor USD de referencia). En BTC/GOLD, spend_amount de una transacción autorizada incluye el colchón de reserva; al liquidar queda el monto final.
EstadoSignificado
authorizedCompra aprobada en tiempo real: el monto salió del disponible del saldo elegido y quedó en hold
settledConfirmada en la liquidación de la red (el hold se consume; BTC/GOLD re-cotizado al momento de la captura)
reversedAnulada: los fondos volvieron al mismo saldo (monto exacto si no se liquidó; re-convertido al precio del momento si ya se había liquidado)
declinedRechazada, con la razón: insufficient_funds, card_limit_exceeded, card_frozen, account_blocked, spending_asset_unavailable, spending_asset_disabled, pricing_unavailable, settlement_limit_exceeded, settlement_daily_limit_exceeded
Si la liquidación llega por un monto distinto al autorizado (propinas, conversión del comercio), el ajuste se aplica automáticamente: positivo debita la diferencia, negativo la devuelve.

Cancelar una tarjeta

Irreversible. Cobra card_cancellation si está configurado.
curl -X POST https://api.qbank.cl/platform/v1/cards/{card_id}/cancel \
  -H "Authorization: Bearer <token>"

Webhooks

EventoCuándo
card_transactionCompra autorizada, anulada o ajustada
card_status_changedLa tarjeta cambió de estado (incluye congelamiento automático por mensualidad impaga)
Suscríbete igual que al resto de eventos (ver Webhooks).

Preguntas frecuentes

No. Las tarjetas no tienen saldo propio: cada compra se autoriza en tiempo real contra el saldo de la cuenta (en el asset de gasto de la tarjeta). Si hay saldo y la compra respeta los límites, se aprueba.
Todas gastan de los saldos centrales de la cuenta. Cada autorización debita de forma atómica: nunca se aprueba más que el saldo disponible del asset, sin importar cuántas tarjetas operen en paralelo.
Las compras se procesan en USD y se debitan del saldo que la tarjeta tenga configurado (spending_asset). USDT/USDC van 1:1 con el dólar, sin comisión de conversión; BTC y GOLD se convierten con el precio efectivo del momento de cada evento (el mismo del bloque settlement de GET /v1/rates).
Sí: spending_asset es por tarjeta. Una empresa puede tener, por ejemplo, tarjetas corporativas gastando USDT, las de empleados gastando USDC y una personal gastando BTC. El cambio con PATCH aplica solo a compras futuras.
La liquidación de una compra llega 1-2 días después de la autorización, y el precio de BTC/oro puede moverse entre medio. Por eso la autorización reserva el equivalente de la compra más un pequeño porcentaje. No es un cobro: al liquidar, la compra se re-convierte al precio de ese momento y todo lo reservado de más vuelve a tu saldo automáticamente.
La compra se declina (pricing_unavailable) — CBPay nunca convierte tu saldo con un precio no confiable. Es una condición transitoria (feed de precios degradado): reintenta en unos minutos o cambia la tarjeta a USDT/USDC. Los eventos que no se pueden rechazar (la liquidación de una compra ya aprobada, una devolución) nunca se bloquean: se procesan con el último precio conocido más un margen prudencial, auditado en el movimiento.
Las devoluciones se convierten al precio del momento de la devolución, no al de la compra: recibes el equivalente en tu asset del monto USD devuelto. Si BTC subió desde la compra, recibes menos BTC (mismo valor USD); si bajó, más. Tu saldo BTC/GOLD siempre está expuesto al precio — es la naturaleza de gastar desde un asset volátil.
La tarjeta se congela automáticamente (evento card_status_changed con reason: monthly_fee_unpaid). No se genera deuda; al regularizar el saldo, pide descongelarla con PATCH { "frozen": false }.
Las cuentas empresa pueden emitir para cualquier persona designada. Esa persona debe tener su verificación KYC aprobada — pasas su verification_id en el cardholder y sus datos y documentos se completan solos. La tarjeta gasta siempre del saldo de la cuenta empresa que la emitió.
Última modificación el 10 de julio de 2026