> ## 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.

# Mis cuentas

> Encuentra en un solo lugar tus cuentas receptoras, destinos bancarios y wallets crypto

export const EnvUrls = ({lang = "en"}) => {
  const T = {
    en: {
      test: "Test",
      live: "Live",
      hint: "Same API on both environments — build against test first, then go live by swapping the base URL and the key.",
      guide: "Environments and testing",
      href: "/en/environment-testing"
    },
    es: {
      test: "Test",
      live: "Live",
      hint: "La misma API en ambos ambientes — construye primero contra test y pasa a live cambiando la URL base y la key.",
      guide: "Entorno y pruebas",
      href: "/es/environment-testing"
    },
    zh: {
      test: "Test",
      live: "Live",
      hint: "两个环境的 API 完全一致——先在 test 环境构建，再通过切换基础 URL 和密钥上线。",
      guide: "环境与测试",
      href: "/zh/environment-testing"
    }
  };
  const t = T[lang] || T.en;
  const row = (label, url, keyPattern, badgeCls) => <div className="flex flex-wrap items-center gap-2 px-3 py-2">
      <span className={"rounded px-1.5 py-0.5 text-xs font-semibold uppercase tracking-wide " + badgeCls}>
        {label}
      </span>
      <code className="text-xs">{url}</code>
      <span className="text-xs text-gray-400 dark:text-zinc-500">·</span>
      <code className="text-xs">{keyPattern}</code>
    </div>;
  return <div className="my-4 rounded-xl border border-gray-200 dark:border-zinc-700 divide-y divide-gray-200 dark:divide-zinc-700 text-sm not-prose">
      {row(t.test, "https://cryptobank.qbank.cl/platform", "pk_test_...", "bg-amber-100 text-amber-800 dark:bg-amber-900/40 dark:text-amber-300")}
      {row(t.live, "https://api.qbank.cl/platform", "pk_...", "bg-emerald-100 text-emerald-800 dark:bg-emerald-900/40 dark:text-emerald-300")}
      <p className="px-3 py-2 text-xs text-gray-500 dark:text-zinc-400 m-0">
        {t.hint} <a href={t.href}>{t.guide} →</a>
      </p>
    </div>;
};

<EnvUrls lang="es" />

## Un solo lugar para tus datos de recepción

La página **Mis cuentas** es el directorio del portal con los destinos que
pueden recibir dinero para ti. Ábrela en `/accounts` desde la barra lateral,
justo debajo de **Depositar**. La página reúne tu identidad de cuenta, las
wallets crypto de depósito, las cuentas receptoras fiat y los destinos de
Banking en una sola vista.

No mezcla saldos con significados financieros distintos. Una cuenta bancaria
sigue siendo una cuenta bancaria, un vIBAN sigue siendo un instrumento de
ruteo y una wallet crypto de depósito sigue siendo una dirección blockchain.
Usa las páginas de cada producto para enviar dinero, retirar y consultar la
cartola.

Si un destino o una lectura devuelve un error, usa el [catálogo público de
errores](/es/errors) para revisar el código y la acción de recuperación.

## Hero CBPAY y tres pestañas de cuentas

La página abre con un hero **CBPAY** para tu cuenta. Muestra la foto y el
nombre del titular cuando están disponibles, además del alias permanente y el
QR de la cuenta. El hero usa la respuesta existente de `GET /v1/me/qr`; no
inventa un QR cuando la cuenta no tiene uno.

Debajo del hero hay tres pestañas:

* **Crypto** (`?tab=crypto`): elige una moneda y luego una red para ver solo
  la wallet de depósito seleccionada, con un QR brandeado.
* Deposita crypto directo a tu wallet de cada red.
* **Fiat a Crypto** (`?tab=fiat`): elige un país y ve la ficha de **datos para
  transferir** de cada cuenta de ese país. Las fichas Fiat nunca muestran QR.
* Deposita fiat a tus datos y se convierte a crypto en tu saldo.
* **Banking** (`?tab=banking`): elige un país y ve las cuentas Banking.
  Estados Unidos tiene subpestañas **ACH**, **Wire** y **SWIFT**; Europa
  muestra vIBANes Banking y wallets de empresa.
* Cuentas bancarias a tu nombre con saldo en moneda local fiat.

**Estas cuentas son solo tuyas: únicas, no compartidas.**

Cuando un icono representa una red, la página usa el icono de esa red: TRON
usa su marca roja y Ethereum su diamante azul. Los iconos de activos siguen
representando los activos.

La pestaña y el instrumento seleccionado quedan reflejados en la URL:

* `/accounts?tab=crypto&sel=USDT:tron`
* `/accounts?tab=fiat&sel=BO`
* `/accounts?tab=banking&sel=US:<account_id>:ach`
* `/accounts?tab=banking&sel=EU`

Los valores desconocidos o malformados vuelven al valor seguro por defecto;
nunca exponen otra cuenta ni crean un destino.

```mermaid theme={"theme":{"light":"github-light","dark":"github-dark"}}
flowchart LR
  open["Abrir /accounts"] --> hero["Foto + nombre + alias + QR"]
  open --> tabs["Pestañas Crypto / Fiat a Crypto / Banking"]
  tabs --> crypto["Moneda → red → ficha wallet"]
  tabs --> fiat["País → ficha datos para transferir"]
  tabs --> banking["País → cuenta → ACH/Wire/SWIFT"]
  crypto --> qr["QR brandeado / copiar / compartir"]
  banking --> qr
  fiat --> copy["Copiar ficha completa"]
```

<Steps>
  <Step title="Abre Mis cuentas">
    Selecciona **Mis cuentas** en la barra lateral del portal. La etiqueta
    **Wallets** reemplaza a **Mis wallets**; las wallets y direcciones subyacentes
    no cambian.
  </Step>

  <Step title="Elige pestaña y selección">
    Selecciona **Crypto**, **Fiat a Crypto** o **Banking**, y luego la moneda, país,
    cuenta o riel de Estados Unidos que muestra la página. Puedes guardar la vista
    actual con su deep-link `?tab=&sel=`.
  </Step>

  <Step title="Copia o comparte los datos correctos">
    Las fichas Crypto y Banking pueden mostrar un QR con el símbolo de branding
    de la organización, copiar valores individuales o compartir el riel
    seleccionado. Las fichas Fiat a Crypto no tienen QR: usa **Copiar todo** para copiar
    la ficha completa, con titular, banco, NIT cuando venga informado y número
    receptor.
  </Step>
</Steps>

<Note>
  **Banking EUR se solicita directamente como vIBAN.** No crees primero un
  customer/perfil Banking genérico. Desde Operar EUR solicita un vIBAN
  `banking_eur`; puedes pedirlo aunque todavía no exista un customer Banking
  genérico. El onboarding Banking genérico sigue siendo solo para USD.
</Note>

## Qué muestra cada pestaña

| Pestaña | Qué contiene | Qué puedes compartir |
| - | - | - |
| **Crypto** | Elige un activo y luego una red. La ficha muestra solo esa wallet, su dirección, red, estado de solo recepción y fecha de creación. Incluye TRON/USDT, Ethereum/USDT, Ethereum/USDC y Bitcoin/BTC. | La dirección blockchain seleccionada o un QR con el símbolo de la organización. |
| **Fiat a Crypto** | Elige **MX**, **BO** o **EU**. Las cuentas MX/BO muestran una ficha con titular, `bank_name` cuando viene informado, `merchant_nit` para BO cuando viene informado y CLABE o número de cuenta. EU muestra el vIBAN de fondeo (`purpose: funding_usdt`). La pestaña Fiat a Crypto **no tiene QR**. | La ficha completa, copiada con **Copiar todo**, o el IBAN de fondeo después de revisar su estado. |
| **Banking** | Elige **US** o **EU**. Las cuentas US se agrupan en subpestañas ACH, Wire y SWIFT usando los datos receptores disponibles. EU muestra vIBANes Banking (`purpose: banking_eur`) y wallets EUR de empresa. Las fichas muestran cuenta/IBAN, routing o SWIFT, estado y activación cuando existen. | El riel Banking seleccionado, incluido su QR brandeado cuando esté disponible, o el destino EUR activo. |

El QR y el alias siguen disponibles en el hero CBPAY sobre las pestañas. El
QR identifica tu cuenta para recibir transferencias y el alias es opcional. La
página solo muestra campos que devuelve la API; nunca fabrica titular, banco,
NIT ni número de cuenta.

La página usa los mismos recursos acotados a la cuenta que el resto del
portal: `GET /v1/me/qr`, `GET /v1/payins/deposit-accounts`,
`GET /v1/banking/accounts`, `GET /v1/banking/virtual-ibans`,
`GET /v1/banking/company-wallets` y `GET /v1/crypto/wallets`. Es una
superficie de navegación y compartir, no un contrato API nuevo.

## Estados vacíos y pendientes honestos

* **Sin QR del hero:** la cuenta no tiene un token QR disponible. La página no
  inventa un QR ni muestra un placeholder como si pudiera recibir dinero.
* **Fiat a Crypto no tiene QR por diseño:** usa la ficha de datos para transferir y
  **Copiar todo**. La ausencia de QR en Fiat no es un error de provisión.
* **Sin CLABE o cuenta BOB:** estos destinos se provisionan solo después de
  aprobar el KYC de una persona o el KYB de una empresa. Una aprobación
  pendiente, un corredor no disponible o un claim existente pueden dejar la
  sección vacía hasta que termine la conciliación.
* **Banking USD vacío:** completa primero el perfil y la verificación de
  Banking; luego espera a que una cuenta USD habilitada aparezca. Una cuenta
  ausente no equivale a saldo cero.
* **EUR en `pending_approval` o `pending`:** la solicitud sigue en
  conciliación. No crees otro vIBAN o wallet de empresa solo porque la primera
  lectura aún no está activa.
* **Faltan wallets crypto:** una cuenta recién aprobada todavía puede estar
  provisionando sus wallets de depósito. Actualiza la página y usa el destino
  cuando aparezca la dirección. Las wallets operativas adicionales pertenecen
  al producto separado de wallets segregadas.

Si una tarjeta muestra un error temporal de lectura, actualiza esa tarjeta y
conserva la solicitud o destino existente. No crees una segunda cuenta, wallet
o vIBAN para adivinar el resultado de una operación ambigua.

## Preguntas frecuentes

<AccordionGroup>
  <Accordion title="¿Todo lo que aparece aquí son wallets?">
    No. La página agrupa una identidad QR, cuentas bancarias, vIBANes, una wallet
    Banking de empresa y direcciones on-chain de depósito. Sus saldos y reglas de
    operación siguen separados.
  </Accordion>

  <Accordion title="¿Por qué mi CLABE o cuenta BOB no apareció al registrarme?">
    El registro por sí solo no provisiona esos destinos. La cuenta debe alcanzar
    KYC o KYB aprobado. Después de la aprobación, el flujo normal de aprobación
    dispara la provisión y operaciones puede conciliar cuentas existentes.
  </Accordion>

  <Accordion title="¿Puedo compartir los datos que aparecen aquí?">
    Sí: comparte el QR Crypto o Banking seleccionado, o la ficha Fiat copiada con
    **Copiar todo**. Nunca compartas tokens de sesión, IDs internos ni un destino
    copiado desde otra cuenta CBPay. Verifica país, moneda y método antes de que el
    pagador envíe.
  </Accordion>

  <Accordion title="¿Por qué un destino aparece pendiente?">
    La provisión o conciliación con el proveedor todavía está en curso. Conserva
    la solicitud y no crees otra con una clave nueva. La página mostrará el valor
    receptor cuando esté disponible.
  </Accordion>

  <Accordion title="¿Cambiar Mis wallets por Wallets cambia mis direcciones?">
    No. Es solo un cambio de etiqueta en el portal. Los IDs, direcciones, activos
    y el comportamiento de solo recepción de las wallets se mantienen.
  </Accordion>

  <Accordion title="¿Por qué falta el banco o el NIT mercantil de BO?">
    Son campos opcionales. `bank_name` se muestra cuando lo devuelve el riel
    receptor de MX y `merchant_nit` cuando lo devuelve el riel BO/BOB. Si falta un
    campo opcional, la página no lo reemplaza por un valor inventado; copia solo
    los datos que devolvió la API.
  </Accordion>
</AccordionGroup>

## Saldo disputado

El item USDT de `GET /v1/balances` puede incluir `disputed`, el monto exacto
retenido actualmente por casos abiertos:

## Flag de retención fiat local

El administrador puede enviar `PATCH /v1/accounts/{accountID}` con
`{"fiat_hold_local":true}`. El GET de la cuenta devuelve el booleano y solo
afecta créditos futuros BOB, MXN y ARS; los créditos históricos no cambian.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{ "asset": "USDT", "available": "900.000000", "held": "100.000000", "disputed": "100.000000" }
```

## USD como activo principal del ledger

Las cuentas usan `USD` como valor predeterminado de `settlement_asset` y
`payin_settlement_asset`; cámbialo cuando quieras con `PUT /v1/settlement`.
Las operaciones en vuelo nunca se vuelven a cotizar.

Los montos del ledger en USD usan centavos (dos decimales). Los créditos y
d débitos directos, las comisiones y los flujos de payout, checkout, POS y
tarjetas usan USD solo cuando el campo de activo de ese flujo lo acepta. Los
swaps entre USD y USDT usan paridad 1:1 y no consultan un oráculo FX. BOB,
MXN y ARS siguen siendo activos fiat separados del ledger; en v1 el pricing
de money-out para esos activos sigue no disponible.

Un payin acreditado directamente a una cuenta USD-principal expone
`credit_asset: USD` y el monto fiat acreditado en centavos; `usdt_credited`
sigue siendo el equivalente USD para reportes. El hold de una controversia
sigue el activo acreditado: los créditos USD usan `hold_asset: USD`. `disputed` y `held` usan las
unidades del activo retenido; `disputed_usdt` y `held_usdt` son equivalentes
normalizados.


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