Crear un payin (cobro de recarga)
Requiere identidad de cuenta aprobada; las cuentas persona necesitan KYC aprobado y las cuentas empresa KYB aprobado antes de que esta operación autenticada cree o cobre un payin. 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. Cuando no envías stored_card_id, una sesión de tarjeta abierta pending/challenge puede reutilizarse para la misma cuenta, país, moneda, monto y payer_reference (con customer.email como fallback), con HTTP 200, session_reused: true y la payment_url existente. Las sesiones duran 60 minutos por defecto y aceptan vencimientos explícitos de hasta 48 horas. El límite por cuenta es de 50 sesiones abiertas; si no se puede desalojar una sesión pending sin intentos, responde 429 too_many_open_card_sessions. 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: USD, USDT, USDC, BTC, GOLD, SILVER o PLATINUM; el fiat BOB/MXN/ARS se rechaza). 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.
Encabezados
Alternativa al campo JSON idempotency_key. Es obligatorio para method: "card" cuando el body no trae la clave, y opcional para cobros QR. No envíes valores distintos en el body y el header.
256^[^\r\n]{1,256}$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; pix (solo Brasil) devuelve una payment_url hosted de un checkout redirect PIX (payer_name y payer_document obligatorios, mínimo 1 BRL); 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, wallet, pix Para method: "card", esta clave es obligatoria: envíala en el body o como header Idempotency-Key. Es opcional para qr, bank_transfer, fintoc, pix y checkout. 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.
256^[^\r\n]{1,256}$Prefill opcional de facturación para el checkout de tarjeta (método card). El pagador puede completarlo o corregirlo en la página.
Show child attributes
Show child attributes
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 5 minutos hacia adelante, máximo 48 horas desde la creación; default 60 minutos.
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). Si se omite, se usa el asset de liquidación de payins de la cuenta (payin_settlement_asset, fallback USD). BOB, MXN y ARS se rechazan (422 invalid_pair): el checkout no liquida en fiat.
USD, USDT, USDC, BTC, GOLD, SILVER, PLATINUM 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 — identificador propio en texto plano del pagador (máx 120 caracteres). Es la identidad preferida para reutilizar sesiones abiertas pending/challenge; si falta, se usa customer.email. También acota el discovery y los cobros de tarjetas guardadas dentro de la cuenta que llama; el mismo correo o referencia en otra cuenta no puede descubrir ni usar la credencial.
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, revocada o de otra cuenta 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).
Identidad del pagador. Obligatorio para pix (redirect hosted Brasil); en transferencia anunciada es el nombre opcional de la persona o empresa que hará la transferencia, cuando NO es el titular de la cuenta.
140Identidad del pagador. Obligatorio para pix (redirect hosted Brasil); en transferencia anunciada es el documento tributario o de identidad opcional del pagador (al menos 5 caracteres, uno de ellos un dígito): 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.
40Teléfono del pagador hosted o collect; algunos métodos wallet lo exigen.
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 QR o anuncio de transferencia (bank_transfer) o reutilización de una sesión abierta de tarjeta (card). Los replays de QR y transferencias devuelven el payin original con idempotency_hit: true; la reutilización devuelve la payment_url existente y session_reused: true. No se crea un segundo charge ni una segunda sesión.