Agregado — Screening de wallets (riesgo AML de direcciones blockchain)
- Producto nuevo:
POST /v1/screenings/addressesevalúa cualquier dirección blockchain contra inteligencia on-chain global — sanciones, exposición a fondos ilícitos — y devuelve un nivel de riesgoLow/Medium/High/Severecon la evidencia completa. Comisión fija por scan (address_screening, con reembolso automático si falla) e idempotencia obligatoria. Historial conGET /v1/screenings/addresses(+/{id}). - Protección automática gratis: los retiros on-chain evalúan el destino antes de firmar (riesgo severo ⇒ rechazo con reembolso completo) y los depósitos entrantes evalúan al remitente antes de acreditar (severo ⇒ retenido en revisión de compliance; alto ⇒ se acredita con alerta).
- Webhooks nuevos:
crypto_deposit_heldycrypto_deposit_alert. - Guía nueva: Screening de wallets.
Agregado — Assets públicos por CDN (avatares, branding, QR de cobro)
- Avatares por CDN:
avatar_url(enPUT /v1/me/avatar,GET /v1/resolvey contactos) ahora es una URL pública absoluta que carga sin autenticación cuando la imagen está publicada en el CDN;GET /v1/avatars/{accountID}responde con un302hacia esa URL (los avatares legados se siguen sirviendo directo). - Branding con URLs:
GET /v1/brandingsumalogo_urlysymbol_url— URLs públicas de CDN de los logos, para tematizar el front sin decodificar base64 (los campos*_png_base64se mantienen). - QR de payins: los cobros QR (
POST /v1/payins, métodoqr) exponenqr_image_url, el PNG del QR publicado en el CDN, además del base64qr_imagede siempre. Ideal para mostrarlo con un<img>directo.
Agregado — Catálogos de compliance
- Nuevo
GET /v1/aml/catalogs: todos los catálogos para construir formularios de compliance y verificación (géneros, formas jurídicas por país, fuentes de ingreso/patrimonio, estándares de industria, países y subdivisiones ISO-3166). Antes esta data no estaba disponible en la API.
- El bloque
asset_pricesdeGET /v1/ratesyGET /v1/rates/historyya no incluye el campo internosource; usasettlement_gradeyupdated_atpara saber si un precio es ejecutable y qué tan fresco está.
Agregado — Toda cuenta nace con sus wallets de depósito
- Al crear una cuenta (persona o empresa) se aprovisionan automáticamente y
sin costo sus tres wallets de depósito crypto:
tron/usdt,eth/usdtyeth/usdc. Apenas registrada,GET /v1/crypto/walletsya devuelve las tres direcciones (la provisión corre en segundo plano; si consultas en el mismo segundo puede tardar unos instantes). POST /v1/crypto/walletsqueda para wallets adicionales (empresas); las personas ya tienen ocupado el cupo de cada combinación desde el registro. Las cuentas creadas antes de este cambio fueron completadas con las wallets que les faltaban.
- El registro público de cuentas ahora tiene límite de velocidad por IP
(
429 too_many_attempts).
Agregado — Trazabilidad total: banking en la cartola, comisiones desglosadas y custodia de wallets
- Cartola más completa: nuevas secciones
card_transactions(compras con tarjeta),swaps(conversiones de saldo) ybanking_operations(operaciones bancarias). Si usas Banking, tus cuentas bancarias cuadran como saldos espejoBANK_USD/BANK_EURen la secciónassets. - Comisiones desglosadas: payouts, payins y retiros crypto ahora
separan la comisión en
fee_percentyfee_fixed(suman exacto elfee); los cargos standalone llevanfee_model: "fixed"y se etiquetan Fixed Com en el PDF/Excel. - Comprobantes nuevos:
GET /v1/banking/operations/{id}/receipt,GET /v1/wallets/{walletID}/sends/{sendID}/receiptyGET /v1/wallets/{walletID}/deposits/{depositID}/receipt. El webhookbanking_operation_status_changedahora incluyereceipt_url. - Custodia de wallets segregadas: campo
custody(cbpay|client) en cada wallet; la plataforma sincroniza la actividad on-chain completa y emite los webhookswallet_external_movement(movimiento firmado por fuera, esperable en custodiaclient) ywallet_key_compromise_suspected(alarma crítica). - Analytics:
sections.banking.volume(dinero movido por tus cuentas bancarias, que también suma algross_volume),sections.verifications.fees_by_kind(gasto KYC vs KYB por separado),sections.adjustmentsydeposits.wallet_fees_usd. - Contabilidad garantizada por wallet (custodia
cbpay): cuadratura de vida completa en la cartola yfunding_sources(atribución FIFO depósito→envío) en el detalle de cada envío. Los saldos espejoBANK_*también aparecen enGET /v1/balancesconcustody: "banking".
Agregado — Series históricas para tu dashboard
GET /v1/rates/history: la evolución de las tasas de cambio de tu cuenta (punta payout y payin por punto), con granularidaddayuhour, ychange_pctcon signo por moneda — listo para el gráfico de tasas con su badge “+3.4% / −3.0%”. Incluye las series de referencia USD de BTC y GOLD.GET /v1/balances/history: la evolución diaria de tus saldos — una serie por asset con el saldo de cierre de cada día (sin huecos), la serie agregada en USD valorizada al precio histórico de cada día, las entradas/salidas del período y el snapshot actual — todo lo necesario para la tarjeta de saldo con gráfico.- El historial de tasas nace con un backfill de ~90 días de tasas diarias y se registra continuamente hacia adelante.
Agregado — Comprobantes PDF con verificación de autenticidad
- Todo producto transaccional tiene su comprobante PDF brandeado:
GET .../receipten payouts, payins, transferencias, retiros y depósitos crypto (deposit_idnuevo enGET /v1/crypto/transactions), swaps y compras con tarjeta. Idiomas?lang=es|en. receipt_urlen toda respuesta de esos productos y en los webhooks de estados finales: el front nunca construye la URL a mano.- Verificación pública de autenticidad: cada PDF lleva un código firmado
con QR que abre
GET /verify/receipts/{code}(sin credenciales) — JSON para APIs y página web brandeada para navegadores, siempre con el estado y monto reales y vigentes, sin datos personales del beneficiario. - Los comprobantes de operaciones no completadas llevan marca de agua diagonal (“EN PROCESO” / “FALLIDA”): un PDF en tránsito jamás pasa por prueba de pago.
- Email automático con el PDF adjunto al llegar la operación a estado
final, con opt-out por cuenta (
PATCH /v1/meconreceipt_emails: false).
GET /v1/branding: el branding efectivo de la plataforma (logo, colores, nombre) para que el front white-label se auto-tematice desde la API.
- La cartola PDF ahora sale con el logo real de la marca y tipografía Inter (antes wordmark tipográfico), y el Excel incluye el logo en la hoja resumen.
Agregado — Wallets segregadas (solo cuentas empresa)
- Wallets on-chain con saldo propio (fuera del ledger): crear
(
POST /v1/wallets), listar y ver detalle, importar una wallet externa con su llave (POST /v1/wallets/import), exportar la llave privada (POST /v1/wallets/{id}/export, custodia compartida) y enviar crypto directo desde la wallet (POST /v1/wallets/{id}/sends). - Consulta on-chain en vivo:
GET .../balance(incluye gas),.../depositsy.../transactions; auto-forward configurable (GET/POST .../auto-forward). - El gas de los envíos corre por el cliente: sin gas el envío responde
422 insufficient_gas. Import y export exigen sesión de usuario con 2FA. - Fees nuevos:
wallet_import,wallet_export,wallet_send. - Webhooks nuevos:
wallet_deposit_received,wallet_send_status_changed,wallet_key_exported. Service flag nuevo:wallets. - La cartola y el dashboard incluyen una sección de wallets segregadas.
Agregado — Perfil, credenciales y seguridad de la cuenta
- Contraseña: cambio self-service (
POST /v1/me/password, revoca las demás sesiones) y recuperación por código (POST /v1/auth/password/forgot→POST /v1/auth/password/reset) al email o al teléfono verificado. Forgot siempre responde 200 (no revela si la cuenta existe). - Email de login: cambio verificado (
POST /v1/me/email/change→confirmcon el código enviado al email nuevo) y verificación del actual (POST /v1/me/email/verify). - Alias permanente (
PUT /v1/me/alias) y QR de perfil (GET /v1/me/qr): identifican tu cuenta para recibir transferencias. Las transferencias aceptanto_aliasyto_qr_token;GET /v1/resolvemuestra una vista previa del destinatario antes de enviar. - Foto de perfil:
PUT/DELETE /v1/me/avataryGET /v1/avatars/{id}. - 2FA self-service (
GET/PUT /v1/otp/preferences): activa y elige el canal por acción — ahora también email y app autenticadora (TOTP) además de SMS/WhatsApp. Puedes endurecer libremente; relajar exige verificación. - App autenticadora (TOTP):
POST /v1/me/totp/enroll(QR) →confirm(entrega 10 códigos de respaldo de un solo uso),DELETE, yPOST /v1/me/totp/recovery-codespara regenerarlos. - Passkeys (WebAuthn): inicio de sesión sin contraseña con la biometría
del dispositivo (Face ID, Touch ID, Windows Hello, llaves). Registro
(
/v1/me/passkeys/register/begin|finish), gestión (GET,DELETE) y login (/v1/auth/passkey/login/begin|finish). - Sesiones y actividad:
GET /v1/me/sessions+ revocar una o todas, yGET /v1/me/security/events(historial de seguridad de la cuenta). - Avisos por email ante eventos sensibles (cambio de contraseña o email, alta/baja de un factor).
Agregado — Identidad verificada reutilizable (KYC/KYB unificado)
- La verificación KYC/KYB aprobada de un cliente pasa a ser su identidad única dentro de CBPay: sus datos y documentos se reutilizan en los demás productos sin volver a tipearlos ni re-subirlos. Guía: identidad reutilizable.
- Tarjetas: la primera emisión de tu cuenta completa la identidad y los
documentos del titular desde tu verificación aprobada — solo envías
occupationysalary_usd. Los campos explícitos siguen ganando. - Informe de compliance (KYB):
GET /v1/kyb/submissions/{id}/reportdescarga el informe de compliance firmado (PDF) de la verificación.
POST /v1/banking/third-partiesahora exigeverification_idde una verificación aprobada del tercero. Eltypesale del kind (KYC ⇒ INDIVIDUAL, KYB ⇒ COMPANY), la identidad se completa sola y los documentos ya validados se re-entregan al proveedor bancario (documents_synced). Los terceros existentes siguen operando.POST /v1/cardspara personas designadas (cuentas empresa) ahora exigecardholder.verification_iddel KYC aprobado de esa persona; su identidad y documentos salen de la verificación.- Errores nuevos:
422 verification_required,422 verification_not_approved,422 verification_kind_mismatch,422 verification_invalid.
Agregado — Resumen de cuenta (analytics) + usuarios banking de terceros
GET /v1/analytics/summary: en una sola llamada, todas las series y estadísticas de tu cuenta para armar tu dashboard — volumen bruto (in/out), transacciones y usuarios nuevos por período (día/semana/mes, con comparativa vs el período anterior), vista global por país, y una sección por CADA servicio (payouts, payins, depósitos, retiros, transferencias, swaps, tarjetas, banking, KYC/KYB, AML, contactos) con sus dimensiones (país, moneda, método, estado, chain, comercio). Ademásspending(lo que consumiste en fees por servicio) ybalancesvalorizados en USD. Guía nueva: Resumen de tu cuenta.- Usuarios banking de terceros (solo empresas):
POST/GET /v1/banking/third-parties(+documentos, submit, cuentas, saldo) para dar de alta a tus clientes finales como usuarios banking separados, con su identidad/KYC y cuentas a su nombre. Aislados por cuenta. - Límite nuevo: las cuentas persona pueden tener máximo 1 cuenta
bancaria (
409 banking_account_limit).
Cambiado — Tasas de Bolivia y Venezuela
- Las tasas USD→BOB y USD→VES de
GET /v1/ratesahora reflejan el mercado con el que realmente operamos tus pagos (antes se publicaba una tasa de referencia que no correspondía al valor aplicado). - Si en algún momento una de esas tasas no está disponible, el país no
aparece en
GET /v1/ratesy las operaciones en esa moneda responden422 currency_not_supportedhasta que vuelva — nunca cotizamos con una tasa incorrecta. Te recomendamos consultarGET /v1/rates(o suscribirte al webhook de tasas) antes de cotizar pagos enBOBoVES.
Agregado — Swaps: conversión entre tus saldos
- Nuevo producto
swaps: convierte entreUSDT,USDC,BTCyGOLDal instante y sin que la plata salga de tu cuenta — cualquier par, incluidoBTC↔GOLDdirecto.POST /v1/swaps(síncrono, conidempotency_key),GET /v1/swaps/quote(cotización indicativa gratis) yGET /v1/swaps(+/{id}) para el historial. - La tasa cotizada es la tasa de ejecución de tu cuenta: cotizado =
recibido, sin comisiones aparte. Precios de BTC/GOLD en vivo (si el
precio no está fresco, el swap se rechaza con
503 pricing_unavailable). - Las conversiones que tocan BTC/GOLD comparten los límites por operación
y de volumen 24 h con payouts y compras con tarjeta
(
GET /v1/settlement). Guía nueva: Swaps.
Agregado — Contactos y envío por teléfono
- Libreta de contactos (
/v1/contacts): CRUD completo con búsqueda y favoritos. Cada envío (transferencia, payout, retiro crypto) guarda su destino como contacto automáticamente — deduplicado; opt-out con"save_contact": false. - Import de la agenda del celular (
POST /v1/contacts/import, hasta 1.000 por request): normaliza los teléfonos a E.164 y te dice qué contactos ya tienen CBPay (has_cbpay, match solo dentro de tu operador). - Transferir por teléfono:
POST /v1/transfersaceptato_phone(solo cuentas con teléfono verificado por OTP; ambigüedad responde422 recipient_ambiguous) yto_contact_id. - Envío rápido a contactos:
beneficiary_contact_iden payouts (usa el beneficiario guardado del contacto) yto_contact_iden retiros crypto (usa su dirección guardada). Guía nueva: Contactos.
Agregado — Verificación de identidad KYC/KYB (wizard hosteado, documentos con OCR y prueba de vida)
- Onboarding obligatorio: toda cuenta nueva debe aprobar su verificación
de identidad (persona ⇒ KYC, empresa ⇒ KYB) antes de operar. Hasta
entonces solo puede fondear (payins, depósitos crypto, transferencias
entrantes) y leer; el resto responde
403 verification_required. Pide tu link conPOST /v1/me/verification/linky consulta tu estado conGET /v1/me/verification— la aprobación actualiza tukyc_statusautomáticamente. Las cuentas existentes quedaron aprobadas. - Verificación de terceros (solo cuentas empresa): genera links
hosteados (
POST /v1/kyc/links,POST /v1/kyb/links) o envía los datos por API (POST /v1/{kyc,kyb}/submissions), sube documentos con presign + OCR y cierra la prueba de vida con liveness links. Comisiones fijas nuevaskyc_verification/kyb_verificationcobradas al crear (conidempotency_keyobligatoria y reembolso automático si falla). - 7 webhooks nuevos:
kyc/kyb_verification_status_changed,kyc/kyb_link_completed,kyc/kyb_document_validated,kyc_liveness_completed. Guía completa en Verificación KYC y KYB.
POST /v1/kyc,POST /v1/kyc/rescreenyPATCH /v1/kyc/monitoringse eliminaron: el screening contra listas ahora vive enPOST /v1/aml/screenings,POST /v1/aml/rescreenyPATCH /v1/aml/monitoring(misma semántica y comisionescompliance_*). El errorno_kycpasa ano_screeningy el screening ya no toca tukyc_status. Nuevo webhookaml_screening_updatedy nuevo service flagaml(el flagkycahora gatea la verificación de identidad). Guía: AML screening.
Corregido — Catálogo de bancos sin
method en países con varios métodosGET /v1/payouts/banks?country=VErespondía400pidiendomethod, y?country=BOrespondía400 payout_corridor_unsupported. Ahora el catálogo sinmethoddevuelve la unión de los bancos de todos los métodos del país (deduplicada por código), como promete esta documentación; conmethodse acota al canal específico (parámetro documentado en la referencia).
Agregado — Compras con tarjeta desde BTC y GOLD (conversión al momento)
spending_assetahora acepta también BTC y GOLD: las compras se convierten con el precio efectivo del momento de cada evento (el mismo del bloquesettlementdeGET /v1/rates).- Autorización: se reserva el equivalente más un pequeño colchón (no es
un cobro; se devuelve al liquidar). Si el precio de ejecución no está
disponible, la compra se declina con
pricing_unavailable— nunca se convierte con un precio no confiable. - Liquidación: el monto final se re-cotiza al precio del momento de la captura y el sobrante del colchón vuelve solo. Anulación de una autorización: devolución del monto exacto, sin conversión. Devoluciones/ajustes posteriores: re-convertidos al precio del momento del evento (tu saldo asume la variación del precio).
- Las compras BTC/GOLD comparten los límites de assets volátiles de la
cuenta con los payouts: por operación (
settlement_limit_exceeded) y volumen 24 h (settlement_daily_limit_exceeded).
Agregado — Elige desde qué saldo gastan tus tarjetas (USDT o USDC)
- Cada tarjeta ahora tiene un asset de gasto (
spending_asset): sus compras se debitan del saldo USDT o USDC de la cuenta, 1:1 con el USD y sin comisión de conversión. USDT por defecto (comportamiento idéntico al histórico). - Defínelo al crear la tarjeta (
spending_assetenPOST /v1/cards) o cámbialo cuando quieras conPATCH /v1/cards/{cardID}. El cambio aplica solo a compras futuras: las autorizaciones en vuelo conservan (y devuelven a) el asset con el que debitaron. - Las transacciones de tarjeta ahora exponen
spend_assetyspend_amount(el saldo y monto realmente debitados);amount_usd/amount_usdtsiguen siendo el valor USD de referencia. Los límites por tarjeta siguen midiéndose en USD. - Errores nuevos:
400 spending_asset_unavailable(BTC/GOLD no están disponibles para compras con tarjeta) y rechazos de autorizaciónspending_asset_disabledsi tu operador deshabilita el asset.
Cambiado — Endurecimiento del settlement multi-asset
- Los pagos desde BTC/GOLD ahora tienen, además del límite por operación,
un tope de volumen en 24 h móviles por cuenta (
422 settlement_daily_limit_exceeded). Lo ves enGET /v1/settlementcomovolatile_daily_limit_usdt. - Las comisiones de tarjetas (emisión, cancelación y mensualidad) ahora también se debitan desde tu saldo de settlement predeterminado, igual que el resto de los servicios. Las compras con tarjeta siguen liquidando en USDT.
Agregado — Paga payouts y servicios desde cualquier saldo (settlement multi-asset)
- Los payouts y las comisiones de servicios (KYC, creación de wallets, banking) ahora pueden debitarse desde cualquiera de tus cuatro saldos (USDT, USDC, BTC, GOLD). El pricing sigue cotizándose en USDT; el total se traduce al asset elegido con el precio efectivo de settlement del momento. Detalle en el modelo de dinero.
- Nuevo
GET/PUT /v1/settlement: define el saldo predeterminado de tu cuenta (default_settlement_asset). Override puntual por operación consettlement_assetenPOST /v1/payoutsy en el confirm de QR. - La respuesta del payout ahora registra
settlement_asset,settlement_amount(el monto exacto debitado, que es también el que se reembolsa si falla — nunca se re-cotiza) ysettlement_rate. GET /v1/ratessuma un bloquesettlementcon el precio efectivo por asset habilitado, yasset_pricesahora traesource,updated_atysettlement_grade(si el precio está apto para ejecutar).- Errores nuevos:
503 pricing_unavailable(precio de ejecución de BTC/GOLD no disponible),400 settlement_asset_disabled,400 invalid_settlement_assety422 settlement_limit_exceeded(límite por operación de los assets volátiles).
Cambiado — Referencia corta en la transferencia anunciada
POST /v1/payinsconmethod: "bank_transfer"ahora devuelve unareferencecorta de 12 caracteres alfanuméricos (ej.CBW4N8R2T6P9) en vez del UUID: los conceptos bancarios tienen límites duros (en Paraguay/SIPAP el máximo es 20 caracteres sin caracteres especiales) y el UUID no cabía.- El match automático acepta la referencia nueva y sigue aceptando el
UUID de los anuncios antiguos — los payins
pendingexistentes no se ven afectados. El respaldo por monto+moneda no cambia. GET /v1/payinsy el detalle muestran la referencia de anuncio enreferencemientras el payin estápending.
Agregado — Payins en Paraguay (transferencia anunciada)
- Nuevo corredor de cobro
PY/PYG/bank_transfer: anuncia el depósito conPOST /v1/payins, tu pagador transfiere (SIPAP o transferencia interna del banco receptor) con lareferenceen el concepto, y el abono llega automático en USDT a tupayin_rate, como en todos los países. Guía en payins. - Los guaraníes no usan decimales: anuncia el monto entero exacto
(ej.
"596000"). El match de respaldo por monto+moneda aplica igual. - El corredor aparece en
GET /v1/payins/methodscondelivery: polling.
Agregado — Saldos virtuales multi-moneda (USDT, USDC, BTC, GOLD)
- Cada cuenta ahora mantiene cuatro saldos virtuales independientes:
USDT(la moneda operativa),USDC,BTC(8 decimales, satoshis) yGOLD(gramos de oro fino, 6 decimales, con respaldo en custodio). Nunca se mezclan ni se convierten automáticamente. Detalle en modelo de dinero. GET /v1/balancesdevuelve siempre los cuatro saldos (con ceros si no has operado esa moneda) yGET /v1/movementsfiltra por moneda con?asset=.- Transferencias internas multi-moneda:
POST /v1/transfersaceptaasset(USDTdefault,USDC,BTC,GOLD) — siempre entre saldos de la misma moneda, sin conversión y sin comisión. - USDC on-chain: crea wallets
eth/usdc, deposita y retira USDC por Ethereum. Cada depósito acredita el saldo de su propio activo. Guía en crypto. - Precios de referencia:
GET /v1/ratesincluyeasset_pricescon el precio USD referencial de cada moneda (BTC por unidad, GOLD por gramo) — solo para valorizar, sin conversión ni spread. - Cartola multi-moneda: nueva sección
assetscon la conciliación independiente de cada saldo no-USDT (inicial/entradas/salidas/final y su flagbalanced), también en el PDF y el Excel. - Los payouts, payins, tarjetas y comisiones de servicios siguen operando exclusivamente contra el saldo USDT.
Agregado — Login social (Google, Apple, Microsoft, Meta)
- Registro e inicio de sesión sin contraseña con Google, Apple,
Microsoft y Facebook por token exchange: tu front obtiene la credencial
con el SDK del proveedor y la intercambias en
POST /v1/auth/oauthpor la sesión CBPay. Guía completa en login social. - Endpoints nuevos:
POST /v1/auth/oauth(login + registro unificado),GET /v1/auth/oauth/providers(proveedores habilitados, público),GET/POST /v1/me/identitiesyDELETE /v1/me/identities/{provider}(vincular/desvincular proveedores desde la sesión). - Integra el 2FA: si la cuenta exige OTP en login, el login social
también devuelve
otp_required+pending_token. - Multi-método: una misma cuenta puede tener contraseña y varios proveedores; el auto-vínculo por email solo ocurre si el proveedor lo entrega verificado.
- Códigos de error nuevos en el catálogo:
invalid_provider,provider_not_configured,invalid_credential,email_conflict,identity_taken,last_login_method.
- El sello de “Colección actualizada” en la página de Postman ahora muestra correctamente hace cuánto se actualizó (antes quedaba un indicador vacío).
Agregado — OTP/2FA por SMS y WhatsApp
- Verificación en dos pasos para acciones sensibles: tu operador puede exigir un código de un solo uso (por SMS o WhatsApp) antes de login, payouts, retiros crypto, transferencias, pagos bancarios, revelar una tarjeta, emitir API keys, agregar miembros o cambiar el teléfono. Guía completa en seguridad y 2FA.
- Endpoints nuevos:
POST /v1/otp/challenges(envía el código),POST /v1/otp/challenges/{id}/verify(devuelve elotp_tokende un solo uso para el headerX-OTP-Token),GET /v1/otp/challenges(+ detalle) yGET /v1/otp/settings(tu política efectiva). - Login en dos pasos: con OTP activo en
login,POST /v1/auth/logindevuelveotp_required: true+pending_token, y la sesión se emite enPOST /v1/auth/login/otp. - Solo sesiones de usuario: las API keys
pk_quedan exentas — tus integraciones server-to-server no cambian. - Códigos de error nuevos en el catálogo:
otp_required,otp_invalid,phone_required,phone_binding_cooldown,too_many_attemptsy más.
Documentación — persona vs empresa y guías unificadas
- Nueva página personas y empresas: TODAS las diferencias entre los dos tipos de cuenta (wallets, tarjetas, miembros, KYC/KYB) en una sola tabla, con los errores que delata cada límite.
- Guía de tarjetas reorganizada por tipo de cuenta: pestañas “Cuenta persona” y “Cuenta empresa”, cada una con su flujo completo (primera tarjeta, siguientes, y para empresas la emisión corporativa y para empleados) — ya no hay que armar el flujo leyendo notas sueltas.
- Ejemplos por país de vuelta en sus guías: los requests/responses por corredor de payouts y payins viven otra vez DENTRO de la guía de cada producto (una sola página por producto, sin saltar a una referencia aparte). Las URLs antiguas redirigen.
- Postman con frescura en vivo: la página Postman ahora muestra hace cuánto se actualizó la colección (segundos/minutos/días), además de la fecha y la versión.
- El MD compilado incluye ahora la referencia completa de endpoints y la versión de la documentación.
Documentación — rediseño completo del sitio
- Navegación nueva: Comenzar → Conceptos → Flujos de integración → Productos → Integración → Recursos, con icono por página y breadcrumbs.
- Páginas nuevas: ambiente y pruebas (túnel
para webhooks en local + checklist de go-live),
servicios habilitados,
estados y ciclo de vida (incluye el catálogo de
status_codede payouts fallidos), movimientos y conciliación y flujos de integración con diagramas end-to-end. - Payouts y payins divididos: guía general + referencia por país con el request y response real de cada corredor.
- Guías ampliadas: quickstart cierra el ciclo con webhooks; perfil
(
PATCH /v1/me) y miembros con roles; tabla completa de endpoints con idempotencia; schedule de reintentos de webhooks; tiempos de confirmación on-chain; cuentas banking en EUR; errores de banking en el catálogo; FAQ con límites, cancelaciones y conciliación. - Tarjetas: cuándo se envía el
cardholder, aclarado. La guía y el spec ahora explican que la primera emisión de una cuenta crea y verifica al titular (datos completos + documentos obligatorios) y que las tarjetas siguientes lo reutilizan sin pedir datos — antes el ejemplo mínimo daba a entender que nunca se pedían.
Agregado
payin_rateenGET /v1/rates: cada país ahora entrega tus dos tasas —ratepara payouts (dispersiones) ypayin_ratepara payins (cobros/depósitos fiat). Cotizado = acreditado, siempre.
- Pricing de payins igual que payouts: el pricing FX de un payin vive
en tu
payin_rate(la conversión del abono se hace exactamente a esa tasa) y la comisión de payin pasa a ser un fijo por operación — sin porcentajes aparte. El campofx_ratede cada payin registra la tasa aplicada. Ver comisiones y la guía de payins. - La conversión de abonos redondea hacia abajo al micro-USDT (los débitos siguen redondeando hacia arriba), con diferencia máxima de 1 micro-USDT.
- KYC/KYB: referencia completa de campos de identidad. El objeto
customersiempre aceptó muchos más campos opcionales de los que mostraban los ejemplos (fecha de nacimiento, nacionalidades, documentos con país emisor, alias, domicilios, datos registrales de empresa…) y enviarlos hace el screening más preciso. La guía de KYC ahora documenta todos los campos, con ejemplos de identidad completa y la regla de deduplicación.
Agregado
- Catálogo de tarjetas:
GET /v1/cards/catalog/occupationsyGET /v1/cards/catalog/business-activities(buscables con?q=) para poblar selectores. Al designar una persona,occupationdebe ser un código del catálogo; para empresa,kind_of_businesstambién. Un valor fuera de catálogo se rechaza con400 invalid_occupation/400 invalid_kind_of_businessantes de tocar el emisor. Ver la guía de tarjetas.
Agregado
GET /v1/services: mapa efectivo de los servicios habilitados para tu cuenta (payouts,payins,transfers,crypto,banking,kyc,cards) — úsalo para decidir qué mostrar en tu UI. Los servicios se habilitan por cuenta según tu acuerdo comercial; si uno está apagado, sus acciones responden el nuevo error403 service_disabled(las lecturas y el dinero en tránsito nunca se bloquean).
Agregado
- Tarjetas virtuales y físicas que gastan directo del saldo USDT de la
cuenta, sin prefondeo: cada compra se autoriza en tiempo real contra el
saldo disponible y los límites de la tarjeta. Personas: 1 virtual + 1
física; empresas: ilimitadas, propias o para personas designadas (ej.
empleados). Nuevos endpoints
POST/GET /v1/cards,GET/PATCH /v1/cards/{id}(límites y congelar/descongelar),POST /v1/cards/{id}/activate|cancel|revealyGET /v1/cards/{id}/transactions. Ver la guía de tarjetas. - Nuevos servicios facturables (fijos, configurables, pueden ser 0):
card_creation_virtual,card_creation_physical,card_monthly(si no hay saldo, la tarjeta se congela — sin deuda) ycard_cancellation. - Nuevos webhooks
card_transaction(autorizada/anulada/ajustada) ycard_status_changed(cambios de estado, incluido el congelamiento automático). - Nuevos tipos de movimiento en el ledger:
card_debit,card_refund,card_fee,card_fee_refund.
Agregado
- Chile: página de pago hosted (
method: "fintoc") enPOST /v1/payins. La respuesta trae unapayment_urlque el pagador abre para transferir desde cualquier banco o billetera chilena (Banco Estado, Santander, Mach, Tenpo, Mercado Pago, entre otros); el depósito se detecta, valida y acredita automáticamente en USDT con el webhookpayin_creditedde siempre. Soportaidempotency_keyopcional: un reintento devuelve el mismo payin y la misma URL sin abrir otra sesión de pago. Ver la guía de payins.
Agregado
-
Filtros de fecha
from/toen todos los listados:/v1/movements,/v1/payouts,/v1/payinsy/v1/crypto/transactionsahora aceptanfrom/to(YYYY-MM-DD, UTC, inclusive), además de la paginación de siempre (page,page_sizehasta 200). Fechas inválidas devuelven400 invalid_range. -
Consulta de transferencias:
GET /v1/transfers(lista con paginación y fechas) yGET /v1/transfers/{id}— antes solo se podían crear. -
Listar suscripciones de webhook:
GET /v1/webhooks/subscriptions. -
Idempotencia en cobros activos:
POST /v1/payins/collectahora exigeidempotency_key(ejecuta un cargo real; un reintento nunca vuelve a cobrar al pagador). Igual refuerzo en creación de wallet (no dobla el fee en reintentos) y en ajustes de administración. -
Paginación uniforme agregada a
members,crypto/wallets,deposit-accountsy (admin)orgs. -
Cartola / estado de cuenta (
GET /v1/reports/statement): consolida todos los movimientos del período — payouts, payins, crypto, transferencias y comisiones — en un solo documento auditable con cuadratura contable exacta (saldo inicial + entradas − salidas = saldo final, verificada contra el ledger). Tres formatos con el mismo endpoint: JSON para tu web, PDF con branding CBPay y Excel multi-hoja con celdas numéricas, filtros y hoja de movimientos para auditores (format=json|pdf|xlsx,lang=es|en). El org admin puede generar la cartola de cualquiera de sus cuentas. Ver la guía.
Mejorado
- Diagramas de flujo visuales en toda la documentación: mapa del dinero en la introducción (todo lo que entra y sale del saldo USDT), ciclo de vida del payout con débito/hold/reembolso, flujo QR en dos pasos, las 4 modalidades de payin convergiendo al abono, depósito y retiro crypto, ciclo completo de banking, estados del KYC, entrega y reintentos de webhooks, y la regla de decisión de idempotencia (“¿con qué clave reintento?”).
Cambiado
- Nueva URL base:
https://api.qbank.cl/platform(antesexchange.qbank.cl/platform). El dominio anterior sigue funcionando como alias, así que ninguna integración existente se rompe — pero usaapi.qbank.clpara todo lo nuevo. Toda la documentación, el spec y el Postman ya apuntan a la URL nueva.
Agregado
- Banking: cuentas bancarias reales para tu cuenta — recibe, mantén y
envía dinero por rieles bancarios internacionales (SEPA, SWIFT, ACH
según la moneda). 14 endpoints nuevos bajo
/v1/banking/*:- Perfil bancario: crear, consultar, subir documentos y enviar a verificación.
- Cuentas: abrir por moneda, listar y consultar saldo en vivo.
- Beneficiarios: registrar, listar y agregar cuentas destino.
- Pagos: cotizar (
prepare, gratis) y ejecutarTRANSFER/WITHDRAWcon idempotencia.
- Webhooks nuevos:
banking_customer_status_changedybanking_operation_status_changed. - Comisiones nuevas (fijas, configurables, reembolsables si la operación
falla):
banking_customer,banking_account,banking_operation— el campobanking_feede cada respuesta muestra lo cobrado. - Guía completa de Banking con el flujo end-to-end y ejemplos de cada operación.
Mejorado
- API Reference completamente en español: títulos, descripciones, campos y grupos del sidebar ahora están traducidos cuando navegas la documentación en español (antes solo la interfaz cambiaba de idioma).
- Guía de payouts reordenada: PIX de Brasil vive ahora solo en “Ejemplos por país” (se eliminó la sección duplicada); el QR quedó como única sección de flujo aparte por ser un flujo distinto (scan + confirm).
- Webhooks: payload de ejemplo de cada uno de los 5 eventos.
- Quickstart: registro con ejemplos de persona y empresa.
- Colección Postman ampliada a 53 requests: los endpoints con varios casos de uso ahora traen un request por caso (un payout por país y método, payins por modalidad, KYC persona/empresa, etc.), cada uno con su body listo para enviar.
- Guía de payins reestructurada por país, igual que payouts: matriz de corredores con la modalidad de cada país y pestañas Chile / Perú / México / Venezuela / Bolivia / Brasil con sus ejemplos completos.
- Nueva página de preguntas frecuentes: sandbox, fondeo inicial, costos previos al payout, garantía de tasa, tiempos de llegada, reintentos seguros, depósitos sin referencia y más — las dudas del primer día respondidas en la misma docu.
- Quickstart abre con la tabla de datos clave (URL base, header de
auth, slug, formato de montos, ambiente) y el ejemplo de respuesta de
GET /v1/ratescon la fórmula para estimar costos. - Payouts: respuesta de ejemplo de los catálogos de métodos y bancos, y
tabla de estados con el efecto en tu saldo. Payins: respuesta de ejemplo
del catálogo con el significado de
delivery.
Mejorado
- Ejemplos completos por caso de uso en toda la documentación:
- Payouts: ejemplo de cada país y método con su
beneficiaryreal y la respuesta (Chile, Perú CCI + Yape, México CLABE + tarjeta, Venezuela Pago Móvil + transferencia, Bolivia ACH, Brasil PIX, Paraguay). - Payins: QR de Bolivia y Brasil lado a lado, cobro activo
c2pydebito_inmediatocon la respuesta del OTP, cuenta de depósito dedicada. - KYC/KYB: requests de persona, empresa y mínimo autocompletado, con las respuestas de screening, rescreening y monitoreo (activar/desactivar).
- Transferencias: por email, por
account_id, empresa→persona (nómina) y replay idempotente. - Crypto: creación de wallet persona vs empresa, y el error
wallet_limit_reached. - API Reference: ejemplos nombrados seleccionables en cada endpoint (10 corredores en payouts, 3 modos en payins, persona/empresa en KYC…).
- Payouts: ejemplo de cada país y método con su
Agregado
- Brasil (BRL) con PIX documentado en payouts y payins:
- Payout
pixpor llave (CPF/CNPJ, teléfono, email o llave aleatoriaevp) víaPOST /v1/payouts. - Payout a QR PIX (estático o “copia e cola”) vía el flujo
qr/scan+qr/confirmconcountry: "BR". - Payin con QR PIX dinámico vía
POST /v1/payins(method: "qr",country: "BR"), con imagen del QR y código “copia e cola”. - Payin por transferencia anunciada (
method: "bank_transfer").
- Payout
GET /v1/payouts/methods, GET /v1/payins/methods) refleja la
disponibilidad en cada momento.Agregado
- Todos los métodos de cobro (payins) disponibles por API:
POST /v1/payinsahora aceptamethod:qr(cargo QR, como antes) obank_transfer(anuncias un depósito entrante y recibes la referencia que debe incluir la transferencia para acreditarse sola).POST /v1/payins/collect— cobro activo (pull) al pagador en los corredores que lo soportan (ej. Venezuelac2p/debito_inmediato), con acreditación síncrona;POST /v1/payins/collect/otppara el OTP previo cuando el método lo requiere.POST /v1/payins/deposit-accounts— cuenta de depósito dedicada fija (ej. CLABE en México) vinculada a tu cuenta: todo lo que llega se acredita automáticamente.GET /v1/payins/deposit-accountspara listarlas.
- Matriz completa de corredores y métodos de payout en la guía (Chile,
Perú con
yape, México SPEI, Venezuela conpago_movil, Bolivia conqr, Paraguay). - Venezuela (VES) se sumó a las tasas de
GET /v1/rates.
Agregado
- Payout QR Bolivia: paga a cualquier QR de cobro boliviano en dos
pasos —
POST /v1/payouts/qr/scan(gratis, devuelve los datos del destinatario) yPOST /v1/payouts/qr/confirm(se cobra igual que un payout: tu tasa + fijo, con resultado final síncrono y reembolso automático si falla). - Bolivia (BOB) se sumó a las tasas de
GET /v1/rates.
Agregado
- Nueva página Postman: colección oficial descargable con los 25 endpoints, cuerpos de ejemplo y autenticación preconfigurada. Se regenera con cada versión de la API.
- La página de Comisiones y los ejemplos de payout reflejan el modelo de pricing vigente: los payouts se cobran a tu tasa + fijo por operación (sin porcentaje aparte). Si dispersas el equivalente a 100 USDT, se debitan 100 USDT más el fijo configurado.
Mejorado
GET /v1/ratesahora entrega el tipo de cambio propio de tu cuenta por país: la misma tasa con la que se ejecutan tus operaciones (monto_local / rate = USDT), sin diferencias entre lo cotizado y lo cobrado.
Eliminado (Breaking)
- Se eliminó definitivamente
GET /v1/crypto/deposit-address(el alias que quedó deprecado en v1.4). UsaPOST /v1/crypto/walletspara crear wallets yGET /v1/crypto/walletspara consultarlas.
Agregado
- Wallets múltiples para empresas: las cuentas empresa ahora pueden crear wallets ilimitadas por red (las personas mantienen 1 por red).
- Nuevos endpoints:
POST /v1/crypto/wallets(crear wallet, conlabelopcional para distinguirlas) yGET /v1/crypto/wallets(listar mis wallets). Cada creación cobra la comisión fijawallet_creationsi está configurada. - Nuevo error
422 wallet_limit_reachedcuando una persona intenta crear una segunda wallet en la misma red. - Las respuestas de wallet ahora incluyen
wallet_idylabel.
- La guía de Crypto se reorganizó en: crear wallet, ver mis wallets, depositar, transferir y movimientos.
GET /v1/crypto/deposit-addressqueda como alias legacy (deprecado): usa los endpoints de wallets.
- Pulido de redacción y traducciones en ambos idiomas; la tabla de
movimientos ahora incluye los tipos
wallet_creation_feeywallet_creation_refund.
Mejorado
- API Reference de nivel profesional: los 25 endpoints ahora incluyen ejemplos de request y de respuesta para todos los casos (éxito, replay de idempotencia, y cada error posible con su cuerpo real), listos para probar desde el playground de la documentación.
- Los 5 webhooks ahora están documentados dentro de la propia API Reference (sección Webhooks del estándar OpenAPI), con esquema y payload de ejemplo de cada evento.
- Catálogos de métodos y bancos documentados con las formas de respuesta reales del sistema.
- Endpoint
GET /healthzdocumentado (estado del servicio). - La guía de Crypto agrega “Saldo y actividad de tu wallet”: cómo ver el
saldo, la actividad on-chain con
tx_idy el historial contable. - Redacción en voz de marca: toda la documentación habla como CBPay (antes usaba términos genéricos como “tu operador” o “la organización”).
- La verificación de identidad ahora se nombra KYC/KYB en toda la documentación (KYC para personas, KYB para empresas).
- Transferencias internas: documentado explícitamente que funcionan entre cualquier combinación de cuentas (persona↔persona, persona↔empresa, empresa↔empresa) y son siempre sin comisión.
Agregado
- Nuevo servicio de comisión
wallet_creation: la primera creación de una dirección de depósito en cada red puede tener un cargo fijo configurado por CBPay (0 = gratis, valor por defecto). La respuesta deGET /v1/crypto/deposit-addressahora incluyecreation_fee, y el historial de movimientos incorpora los tiposwallet_creation_feeywallet_creation_refund. Consultar una dirección existente sigue siendo siempre gratis; si la creación falla, el cargo se reembolsa automáticamente. - Nueva página Novedades (esta página) con el historial de versiones de la API y la documentación.
- La guía de Crypto ahora tiene una sección explícita “Crear tu wallet”
que explica la creación por red (201 primera vez con
creation_fee, 200 gratis después), y la API Reference renombra el endpoint a “Create or get my wallet (deposit address)”.
Agregado
- Comisiones de compliance por operación:
compliance_person,compliance_company,compliance_rescreenycompliance_monitoring(cargo fijo por llamada; 0 = gratis). Las respuestas de KYC ahora incluyencompliance_serviceycompliance_fee. - Endpoints
POST /v1/kyc/rescreenyPATCH /v1/kyc/monitoring(desactivar monitoreo es gratis). Requieren un KYC previo (409 no_kyc).
- Identidad visual oficial de CBPay aplicada a toda la documentación.
- La documentación de administración se movió a un portal interno de CBPay; este sitio contiene solo la API de cuentas.
Lanzamiento inicial
- Documentación pública de la API de CBPay, bilingüe (español e inglés):
autenticación (sesiones JWT y API keys
pk_), modelo de dinero USDT, comisiones, idempotencia, payouts fiat multi-país, payins, transferencias internas, crypto (fondeo y retiros on-chain), KYC, webhooks firmados y catálogo completo de errores. - API Reference interactiva generada desde OpenAPI 3.1.