Crear un payin (cobro de recarga)
Crea una recarga fiat. Con method: "qr" (por defecto) se genera un cobro QR activo a través del procesador — en Bolivia el QR interoperable local, en Brasil un QR PIX dinámico cuyo charge trae la imagen del QR y el payload “copia e cola”. Con method: "bank_transfer" el depósito queda anunciado y la respuesta trae la referencia que el remitente debe incluir para que la transferencia entrante se concilie y acredite automáticamente — un código corto de 12 caracteres alfanuméricos que cabe en cualquier concepto bancario (algunos rieles lo limitan a 20 caracteres sin caracteres especiales). Con method: "fintoc" (Chile) la respuesta trae una payment_url hosted: el pagador la abre y transfiere desde cualquier banco o billetera chilena; el depósito se detecta, valida y acredita automáticamente. Con method: "card" la respuesta trae una payment_url hosted de un checkout de tarjeta con 3-D Secure y la marca de tu organización — Bolivia (BOB) y tarjetas internacionales en USD (country: "US"; Visa, Mastercard, American Express, Discover y Diners emitidas en cualquier país); los datos de la tarjeta jamás tocan tu integración. Con method: "checkout" la respuesta trae una checkout_url pública — un link de cobro universal denominado en el saldo virtual que elijas (settlement_asset: USDT, USDC, BTC o GOLD). El pagador elige cualquier país con corredor de payin vivo (monto local cotizado), cualquiera de las 4 opciones crypto (dirección de depósito exclusiva con QR escaneable) o paga al instante desde la app CBPay vía el QR/alias del comercio; cada pago se convierte automático al asset de settlement salvo que se pague en el mismo asset. El primer método que completa el pago gana. Cobrar es gratis; la comisión de payin aplica cuando el depósito se acredita.
Autorizaciones
JWT de sesión (de register/login) o llave de API (pk_...).
X-API-Key: <token> se acepta como header alternativo.
Cuerpo
País del corredor. Obligatorio para todos los métodos salvo checkout, donde es opcional y solo preselecciona el país del pagador en la página.
"BO"
Moneda del corredor. Obligatoria para todos los métodos salvo checkout, que la rechaza con 400 — el cobro se denomina en settlement_asset.
"BOB"
String decimal positivo. Monto en moneda local para métodos de corredor; para checkout se denomina en el settlement_asset ("50" USDT, "0.001" BTC, "2" gramos de oro).
Indicación opcional de canal que se pasa al core.
Expiración del cobro en segundos. Para checkout acepta de 600 a 604800 (10 minutos a 7 días; default 24 horas).
Modo de cobro. qr crea un cobro QR activo a través del procesador; bank_transfer anuncia un depósito entrante y devuelve la referencia a incluir en la descripción de la transferencia; fintoc (solo Chile) devuelve una payment_url hosted donde el pagador transfiere desde cualquier banco o billetera chilena y el depósito se detecta automáticamente; card devuelve una payment_url hosted de un checkout de tarjeta con 3-D Secure (Bolivia en BOB, o tarjetas internacionales en USD cuando country es US); checkout devuelve una checkout_url pública donde el pagador elige el método de pago (QR, tarjeta, transferencia bancaria o crypto). Usa /v1/payins/collect para cobros pull.
qr, bank_transfer, fintoc, card, checkout Clave de idempotencia opcional (métodos bank_transfer, fintoc, card y checkout; también se acepta como header Idempotency-Key). Un retry con la misma clave devuelve el payin original con HTTP 200 e idempotency_hit: true — la misma payment_url/checkout_url en los métodos hosted, o la MISMA reference en una transferencia anunciada — en vez de abrir un segundo cobro. En las transferencias anunciadas esto define si la plata se puede acreditar: dos anuncios vivos con el mismo monto y sin identidad del pagador son indistinguibles, así que el depósito que llegue quedaría unassigned. Si omites la clave igual colapsamos un retry idéntico (misma cuenta, moneda, monto y documento del pagador) en el anuncio original; manda una clave distinta cuando de verdad necesites dos cobros separados del mismo monto y pagador.
Prefill opcional de facturación para el checkout de tarjeta (método card) — email, first_name, last_name, address, city, country (texto plano, máx 120 caracteres por campo). El pagador puede completarlos o corregirlos en la página.
URL https pública opcional (métodos card y checkout) a la que se redirige al pagador tras un pago aprobado.
URL https pública opcional (métodos card y checkout) a la que se redirige al pagador cuando el pago falla o expira.
Expiración RFC3339 opcional de la sesión de pago con tarjeta (método card, mínimo 15 minutos hacia adelante; default 24 horas).
Solo checkout — el saldo virtual en que se denomina y liquida el cobro. Todo pago se convierte automático a este asset al acreditar (pagos en el mismo asset no convierten). Debe estar habilitado para tu organización (422 settlement_asset_disabled si no).
USDT, USDC, BTC, GOLD Solo método card — ofrece al pagador el checkbox "guardar esta tarjeta" en la página hosted. La credencial se guarda SOLO si el pagador lo marca (consentimiento explícito) y el pago 3-D Secure se aprueba; el flujo payin_received/payin_credited lleva entonces un bloque stored_credential y la tarjeta aparece en GET /v1/stored-cards.
Solo método card — tu identificador propio del pagador (ej. tu ID de cliente). Las tarjetas guardadas quedan acotadas a esta referencia para listar y cobrar las tarjetas del cliente correcto. Texto plano, máx 120 caracteres.
120Solo método card — paga con una tarjeta guardada previamente (ver GET /v1/stored-cards). La página hosted salta la captura de tarjeta y muestra la guardada; el 3-D Secure corre igual. Mutuamente excluyente con save_card. Tarjeta desconocida o revocada responde 404. Los datos de facturación guardados con la credencial se aplican automáticamente en la página hosted (resumen enmascarado con enlace para editar — el pagador no re-tipea nada).
Solo transferencia anunciada — nombre de la persona o empresa que hará la transferencia, cuando NO es el titular de la cuenta. Opcional.
140Solo transferencia anunciada — documento tributario o de identidad del pagador (al menos 5 caracteres, uno de ellos un dígito). Opcional: si lo omites se usa el documento verificado del titular, así un depósito propio se reconoce aunque el pagador olvide la referencia. Envíalo cuando paga un tercero.
40Solo transferencia anunciada — número de cuenta bancaria del pagador (al menos 5 caracteres). Opcional; es una señal extra de conciliación cuando el corredor informa la cuenta de origen.
40Respuesta
Replay idempotente de un anuncio de transferencia (bank_transfer): el anuncio ORIGINAL, con la misma reference. Tambien se devuelve cuando un POST sin clave de idempotencia calza con un anuncio vivo indistinguible (misma cuenta, moneda, monto y pagador).