> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cbpayapp.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Comisiones

> Cómo se cobra cada servicio y dónde ver tus condiciones

export const AudienceCallout = ({children}) => {
  return <div className="my-5 rounded-r-xl border border-gray-200 dark:border-zinc-700 border-l-4 border-l-amber-400 dark:border-l-amber-500 bg-gray-50 dark:bg-zinc-800/50 px-4 py-3 text-sm text-gray-700 dark:text-zinc-300">
      {children}
    </div>;
};

<AudienceCallout>
  Integradores que necesitan entender cómo cobra CBPay cada servicio y dónde vive cada superficie de comisiones.
</AudienceCallout>

Las comisiones las configura CBPay por **servicio, país y activo**.
Si no hay nada configurado para una combinación, la comisión es **0**.

## Cómo se cobran los payouts y payins

El pricing FX está en **tu tipo de cambio**: las tasas que ves en
`GET /v1/rates` son tus tasas, y son exactamente las que se usan al
ejecutar — sin porcentajes aparte. Cada país trae las dos puntas:

* `rate` — la tasa de tus **payouts** (dispersiones). Si dispersas el
  equivalente a 100 USDT, se debitan **100 USDT + el fijo** (si tu cuenta
  lo tiene configurado).
* `payin_rate` — la tasa de tus **payins** (cobros/depósitos fiat). El
  abono es el monto local convertido a esa tasa, **menos el fijo** (si tu
  cuenta lo tiene configurado).

```
payout:  usdt_amount   = monto_local / rate
         total_debit   = usdt_amount + fixed_amount
payin:   usdt_gross    = monto_local / payin_rate
         usdt_credited = usdt_gross − fixed_amount
```

Lo que recibe el beneficiario (payout) o lo que se te abona (payin) depende
de las tasas de tu cuenta para ese país. Cotizado = cobrado, siempre.

## Servicios con comisión fija u porcentual

| Servicio | Cómo se cobra | Cuándo |
| - | - | - |
| `payout` | Fijo por operación (el pricing FX ya está en tu tasa) | Al crear el payout (incluido en `total_debit`) |
| `payin` | Fijo por operación (el pricing FX ya está en tu `payin_rate`) | Al acreditar (recibes `usdt_gross − fee`) |
| `payin_card` | `%` sobre el cobro + fijo, con `%` propio por moneda procesada (ej. BOB vs USD). Si tu cuenta no lo tiene configurado, aplica el fee `payin` genérico. Puede llevar una demora de acreditación (ver [Settlement de payins con tarjeta](#settlement-de-payins-con-tarjeta)) | Al acreditar un cobro pagado con tarjeta (payin directo `method: "card"`, link de checkout pagado con tarjeta o cobro de suscripción); con demora configurada, al llegar la hora programada |
| `funding` | `%` sobre el depósito + fijo | Al acreditar el depósito on-chain |
| `withdrawal` | `%` sobre el retiro + fijo | Al crear el retiro (incluido en `total_debit`) |
| `wallet_creation` | Fijo por wallet | Al crear cada wallet (personas: 1 por red; empresas: ilimitadas). Consultar wallets existentes es siempre gratis |
| `wallet_import` | Fijo por importación | Al importar una wallet externa a una [wallet segregada](/es/guides/segregated-wallets) (`POST /v1/segregated-wallets/import`) |
| `wallet_export` | Fijo por exportación | Al exportar la llave privada de una wallet segregada (`POST /v1/segregated-wallets/{id}/export`) |
| `wallet_send` | Fijo por envío | Al enviar on-chain desde una wallet segregada (`POST /v1/segregated-wallets/{id}/sends`); el gas de red lo pone el cliente |
| `compliance_person` | Fijo por llamada | Al screenear una persona por AML (`POST /v1/aml/screenings`) |
| `compliance_company` | Fijo por llamada | Al screenear una empresa por AML |
| `compliance_rescreen` | Fijo por llamada | Al re-ejecutar un screening AML |
| `compliance_monitoring` | Fijo por activación | Al activar monitoreo AML continuo (desactivar es gratis) |
| `kyc_verification` | Fijo por verificación | Al crear un link o submission KYC de un tercero ([verificación](/es/guides/kyc)); tu propio onboarding es gratis |
| `kyb_verification` | Fijo por verificación | Al crear un link o submission KYB de un tercero |
| `address_screening` | Fijo por scan | Al evaluar el riesgo de una dirección blockchain ([screening de wallets](/es/guides/screenings)); la protección automática de retiros/depósitos es gratis |
| `banking_customer` | Fijo por perfil | Al crear tu perfil bancario ([banking](/es/guides/banking)) |
| `banking_account` | Fijo por cuenta | Al abrir cada cuenta bancaria |
| `banking_deposit` | `%` sobre el depósito + fijo, en la moneda de la operación, con tope en el monto del depósito | Al acreditar un depósito bancario entrante (ver [Comisiones banking por riel](#comisiones-banking-por-riel)) |
| `banking_transfer_ach` | `%` + fijo sobre el monto, en la moneda de la operación | Al despachar una transferencia ACH |
| `banking_transfer_swift` | `%` + fijo sobre el monto, en la moneda de la operación | Al despachar una transferencia SWIFT |
| `banking_transfer_wire` | `%` + fijo sobre el monto, en la moneda de la operación | Al despachar una transferencia wire (Fedwire) |
| `banking_transfer_sepa` | `%` + fijo sobre el monto, en la moneda de la operación | Al despachar una transferencia SEPA |
| `banking_operation` | Fijo por pago — fallback predeterminado, se cobra solo cuando el riel no tiene configuración específica | Al enviar cada pago bancario (cotizar con `prepare` es gratis) |
| `card_creation_virtual` | Fijo por tarjeta | Al emitir una tarjeta virtual ([tarjetas](/es/guides/cards)) |
| `card_creation_physical` | Fijo por tarjeta | Al emitir una tarjeta física |
| `card_monthly` | Fijo mensual | Mensualidad por tarjeta activa (sin saldo, la tarjeta se congela — sin deuda) |
| `card_cancellation` | Fijo por tarjeta | Al cancelar una tarjeta |
| `card_purchase_virtual` | `%` + fijo sobre el monto USD de la compra | Por cada compra con tarjeta virtual (estimado en la autorización, definitivo al liquidar; las reversas lo devuelven proporcional) |
| `card_purchase_physical` | `%` + fijo sobre el monto USD de la compra | Por cada compra con tarjeta física (mismo ciclo que la virtual) |
| `risk_report_person` | Fijo por informe | Al comprar un informe crediticio Qscore de una persona ([Qscore](/es/guides/qscore)); se reembolsa automáticamente si el informe falla (`risk_report_refund`) |
| `risk_report_company` | Fijo por informe | Al comprar un informe crediticio Qscore de una empresa |

Para los servicios con `%`, la fórmula es
`fee = ceil(monto × percent / 100) + fixed_amount` (redondeo hacia arriba al
micro-USDT).

<Note>
  Los cargos fijos standalone (compliance, verificación KYC/KYB, creación de
  wallets y banking) se reembolsan automáticamente si la operación falla
  aguas arriba (`compliance_refund` / `verification_fee_refund` /
  `wallet_creation_refund` / `wallet_service_refund` / `banking_fee_refund`).
</Note>

## Settlement de payins con tarjeta

Los cobros con tarjeta pueden llevar una **demora de acreditación**
(`settlement_hours`, entero en horas; `0` = sin demora — el default). Con
demora configurada, un cobro confirmado **confirma el payin de inmediato**:
el estado pasa a `credited`, el webhook `payin_credited` se emite al
momento y un link de checkout pagado con tarjeta cierra como pagado. Lo
que espera es el **saldo**: cae en tu ledger cuando corre el settlement —
al llegar `settle_at` (un worker liquida los payins vencidos cada minuto)
o antes si un org-admin lo libera manualmente desde el panel.

La demora rige **todo cobro pagado con tarjeta**: un payin directo
`method: "card"`, un [link de checkout](/es/guides/checkout) pagado con
tarjeta y un [cobro POS](/es/guides/qr-pos) pagado con tarjeta comparten la
misma regla de `settle_at` (incluidas las cuentas cuyo override de fee
deja `settlement_hours` en `0` — sus checkouts con tarjeta también se
acreditan al instante). Un checkout o POS pagado por cualquier otro riel
(QR, crypto, app CBPay, fintoc) se acredita de inmediato, como siempre.

Mientras el saldo está pendiente, la respuesta del payin (creación,
consulta y listado) lleva `settle_at` (RFC 3339) y
`settlement_pending: true`; cuando el saldo cae, lleva `settled_at` en su
lugar. Al confirmarse el pago también se emite el webhook
`payin_settlement_scheduled` exactamente una vez (idempotente) con
`status: "credited"`, los montos programados y `settle_at`, así tu
integración distingue "pagado, saldo programado" de "pagado, saldo ya
disponible".

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "pay_…",
  "status": "credited",
  "settle_at": "2026-08-10T15:04:05Z",
  "settlement_pending": true
}
```

`settle_at = created_at + settlement_hours` — la demora corre desde la
creación del payin (≈ cuando el procesador confirma el cobro). Un payin
cuyo plazo ya venció al aprobarse o asignarse se liquida de inmediato (sin
`settlement_pending`). La auto-conversión (cuando está configurada) corre
cuando el saldo se liquida, no antes.

<Warning>
  Un payin con el settlement aún pendiente **no se puede devolver**: la
  devolución debita tu saldo y esa plata aún no se libera, así que el
  request se rechaza con `422 settlement_pending`. Espera al `settle_at` o
  pide a un org-admin que libere el saldo primero — después la devolución
  funciona como siempre.
</Warning>

<Note>
  La demora la configura CBPay en el fee `payin_card` de tu cuenta. Tus
  señales de confirmación no cambian — `payin_settlement_scheduled` y
  `payin_credited` llegan al momento del pago; solo la disponibilidad del
  saldo espera al `settle_at`.
</Note>

## Comisiones banking por riel

Las operaciones banking llevan **comisiones transaccionales en la moneda
de la operación** (el saldo `BANK_USD` / `BANK_EUR` que la operación
mueve):

* **Depósitos** (`banking_deposit`): se cobran al acreditar el depósito
  entrante, con tope en el monto (`min(fee, monto)`) — un depósito chico
  jamás deja el saldo en negativo.
* **Transferencias** (`banking_transfer_ach`, `banking_transfer_swift`,
  `banking_transfer_wire`, `banking_transfer_sepa`): se cobran **al
  despachar**; tu saldo disponible debe cubrir `monto + fee` en la moneda
  de la operación o el request se rechaza con `402 insufficient_funds`.
  Si la transferencia es rechazada en forma definitiva después, el fee se
  reembolsa.
* **Fallback**: un riel sin configuración propia (ni en tu cuenta ni por
  defecto) usa el fee fijo `banking_operation` predeterminado en USDT. Un riel
  configurado con `0%` + `0` fijo es **explícitamente gratis** — no cae
  al fallback.

Cuando aplica un fee de riel, la respuesta del despacho expone
`banking_fee` y `banking_fee_asset` (el monto cobrado y su moneda
`BANK_*`), así cada cobro es atribuible a su riel.

## Transferencias internas: siempre gratis

Las transferencias entre cuentas CBPay (`POST /v1/transfers`) **no tienen
comisión**, sin importar la combinación: persona↔persona, persona↔empresa o
empresa↔empresa. El dinero se mueve dentro del ecosistema.

## Tu tipo de cambio

`GET /v1/rates` devuelve **el tipo de cambio propio de tu cuenta** en cada
país — las mismas tasas con las que se ejecutan tus operaciones, sin
sorpresas: `rate` para payouts y `payin_rate` para payins
(`monto_local / tasa = USDT`).

## Consulta tus condiciones

`GET /v1/rates` devuelve, junto a tus tasas, la configuración de comisiones
vigente para tu cuenta:

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "base": "USD",
  "rates": { "chile": { "currency": "CLP", "rate": "950.25", "payin_rate": "955.10" } },
  "asset_prices": {
    "USDT": { "currency": "USD", "unit": "usdt", "price": "1" },
    "USDC": { "currency": "USD", "unit": "usdc", "price": "1" },
    "BTC": { "currency": "USD", "unit": "btc", "price": "109853.24" },
    "GOLD": { "currency": "USD", "unit": "gram", "price": "107.5341" }
  },
  "fees": [
    {
      "service": "payout",
      "country": "CL",
      "asset": "USDT",
      "percent": "0",
      "fixed_amount": "0.30"
    }
  ]
}
```

`asset_prices` es el precio USD **de referencia** de cada saldo virtual
(para valorizarlos en pantalla) — no implica conversión ni spread. La
respuesta incluye además un bloque `settlement` con el **precio efectivo**
por asset si pagas operaciones desde un saldo distinto de USDT
([modelo de dinero](/es/concepts/money-model#elige-desde-que-saldo-pagas)):
ese precio ya incluye el margen de conversión, así que lo que ves es lo
que se aplica.

La comisión cobrada queda siempre explícita en la respuesta de cada
operación (campo `fee`) y en el ledger.

## Ejemplo completo

Payout equivalente a 100 USDT con `fixed_amount: "0.30"`:

```
usdt_amount = 100 USDT           (monto_local / rate)
fee         = 0.30 USDT          (fijo)
total_debit = 100.30 USDT
```

El beneficiario recibe el monto local completo que indicaste; a ti se te
debita el equivalente a tu tasa más el fijo.

Payin equivalente a 100 USDT con `fixed_amount: "0.30"`:

```
usdt_gross    = 100 USDT         (monto_local / payin_rate)
fee           = 0.30 USDT        (fijo)
usdt_credited = 99.70 USDT
```

El pagador paga el monto local exacto que indicaste; a ti se te abona el
equivalente a tu `payin_rate` menos el fijo.

## Score de fraude e identidad

\| `risk_fraud_score` | Fee fijo por cada informe de fraude e identidad; se reembolsa si falla la generación |

## EUR banking fee services

The following service identifiers are present in the product configuration:

| Service | Scope |
| - | - |
| `banking_funding` | Funding through an EUR virtual IBAN; charged only when configured |
| `banking_return` | Una devolución o recall bancario; se cobra tras cada conciliación exitosa, con idempotencia por operación |
| `banking_monthly` | Mensualidad fija por cuenta con un perfil banking activo; se cobra una vez por período `YYYY-MM` mediante un worker diario |
| `banking_transfer_sepa_instant` | SEPA Instant transfer; charged only when configured |
| `banking_virtual_iban` | Virtual IBAN lifecycle service; charged only when configured |

Amounts, payer, settlement timing and provider onboarding terms remain
configuration-dependent. No fee is implied when the organization has no
matching configuration.

## Preguntas frecuentes

<AccordionGroup>
  <Accordion title="¿Dónde configuro las comisiones que pagan mis clientes?">
    En el panel admin, en comisiones: porcentaje más fijo por servicio, con las dimensiones que cada servicio acepta (activo para payouts, propósito para payins).
  </Accordion>

  <Accordion title="¿Se cobran comisiones en operaciones fallidas?">
    No. Las comisiones solo se cobran cuando la operación se crea y acepta; las validaciones fallidas jamás crean un cobro.
  </Accordion>

  <Accordion title="¿Cómo sé qué comisión se aplicó?">
    Las respuestas y webhooks exponen el desglose de comisiones, y las cartolas las itemizan por operación.
  </Accordion>
</AccordionGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.