Skip to main content
Las transferencias internas mueven saldo entre dos cuentas CBPay, de forma atómica en el ledger y siempre sin comisión — el dinero nunca sale del ecosistema. Funcionan con las seis monedas (USDT, USDC, BTC, GOLD) y siempre entre saldos de la misma moneda: el asset que envías es el asset que recibe el destino, sin conversión. Funcionan entre cualquier combinación de cuentas:

Crear una transferencia

El destino se identifica por to_account_id, to_email, to_phone (teléfono verificado) o to_contact_id (un contacto de tu libreta):
La forma del request es idéntica en todas las combinaciones (persona o empresa, en cualquier dirección) — cambia solo la credencial que llama. asset es opcional y por defecto usa el settlement asset del emisor (USD es el saldo principal); acepta cualquiera de los diez assets del ledger (USD, USDT, USDC, BTC, GOLD, SILVER, PLATINUM, BOB, MXN, ARS) y el destino recibe en esa misma moneda. Respuesta 201 — la transferencia es síncrona e inmediata:
Replay con la misma idempotency_key — 200 con la transferencia original:
El receptor puede enterarse por el webhook transfer_received y ambos ven el movimiento en su historial (transfer_out / transfer_in).
Cada transferencia guarda al destinatario como contacto automáticamente (envía "save_contact": false para no guardarlo). Por seguridad, to_phone solo resuelve cuentas con el teléfono verificado por OTP; si más de una cuenta comparte el número responde 422 recipient_ambiguous.

Consultar transferencias

Lista las transferencias de tu cuenta (enviadas y recibidas), con paginación y filtros de fecha:
O una en particular por su ID (solo visible para las dos partes):
Cada fila trae direction (sent o received) desde tu perspectiva.

Reglas

  • Solo entre cuentas CBPay activas; las cuentas internas del sistema no pueden recibir.
  • Siempre misma moneda en origen y destino: no hay conversión entre saldos (USDT→USDT, GOLD→GOLD, …).
  • No puedes transferirte a ti mismo (400 self_transfer).
  • Requiere idempotency_key (body o header Idempotency-Key); el replay devuelve 200 con idempotency_hit: true.
  • amount acepta hasta los decimales de la moneda: 2 para USD/BOB/MXN/ ARS, 6 para USDT/USDC/GOLD/SILVER/PLATINUM, 8 para BTC.

Errores

FAQ

No — las transferencias entre cuentas de tu organización son gratis e instantáneas.
No — ambos lados mueven el mismo asset (USDT a USDT, USDC a USDC…). Para cambiar de asset, convierte primero con Swaps.
No — las transferencias son instantáneas e irreversibles. Si enviaste a la cuenta equivocada, coordina la devolución con la contraparte.
to_phone solo resuelve números verificados de tu organización. Un número sin verificar o desconocido responde 404; si más de una cuenta calza recibes recipient_ambiguous (422) — usa to_alias o el ID de cuenta.
Destinatarios alternativos: el alias inmutable de la cuenta y el token de su QR de perfil (GET /v1/me/qr). Todos resuelven solo dentro de tu organización.
Liquida un link de cobro por transferencia interna: el destino se fuerza a la cuenta del link y el monto debe cubrir el due cotizado (si no, checkout_amount_mismatch, 422).
Los errores de límites money-out están en la referencia pública de errores.
Última modificación el 4 de octubre de 2026