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

# Remesas internacionales

> Cobra en el país de origen, convierte la moneda y acredita en la cuenta del beneficiario en otro país.

Una remesa tiene tres tramos: el cliente paga en su país, el dinero cambia de moneda y llega a la cuenta del beneficiario en otro país. La API cubre los tres con llamadas estándar.

## Flujo

```mermaid theme={null}
sequenceDiagram
  participant Sender as Cliente (país A)
  participant App as Tu app
  participant Vita as Vita API
  participant Recipient as Beneficiario (país B)

  Sender->>App: Monto a enviar
  App->>Vita: GET /prices
  Vita-->>App: Tasa + fixed_cost + valid_until
  App-->>Sender: Monto final que recibirá
  Sender->>App: Confirma
  App->>Vita: POST /payment_orders (país A)
  Vita-->>Sender: Checkout con método local
  Sender->>Vita: Paga
  Vita-->>App: Webhook payment_order.paid
  App->>Vita: GET /withdrawal_rules (país B)
  App->>Vita: POST /transactions (withdrawal)
  Vita-->>Recipient: Acreditación bancaria
  Vita-->>App: Webhooks de ciclo de vida
```

## Paso a paso

**1. Recibe el pago local**

Crea la orden con `POST /payment_orders` indicando el país de origen (en mayúsculas, ISO 3166-1 alfa-2). El cliente paga con un método local y el monto se acredita en tu wallet.

**2. Muestra el monto exacto que recibirá el beneficiario**

`GET /prices` devuelve tasa y costo fijo por destino. Calcula:

```
monto_destino = (monto_origen × tasa) − costo_fijo
```

Respeta siempre `valid_until`.

**3. Pide los datos del destino**

`GET /withdrawal_rules` entrega el formulario exacto del país: campos obligatorios, bancos aceptados y formatos. Así tu app pide solo lo que el destino exige.

**4. Envía el pago**

`POST /transactions` con `transactions_type: "withdrawal"`. Sigue el estado con webhooks: `started`, `processed`, `pending`, `completed` o `denied`.

## Buenas prácticas

> [!TIP]
>
> **Informa al cliente el monto final antes de que pague**, usando los precios vigentes. Nada frustra más a un remitente que ver una cifra distinta a la prometida.

> [!TIP]
>
> Para Brasil y Argentina existen validadores de beneficiario (`POST /beneficiaries/validate_beneficiary`) que bajan los rechazos antes de ejecutar.

> [!TIP]
>
> Si el estado llega `denied`, lee `statuses[]` para saber la razón y ofrece corregir los datos sin crear otro `order`.

## Endpoints clave

> [card] [Precios](https://docs.vitawallet.io/api-reference/vita-sent/overview.md)
>
> `GET /prices`

> [card] [Reglas por país](https://docs.vitawallet.io/api-reference/bank-payouts/overview.md)
>
> `GET /withdrawal_rules`

> [card] [Crear payout](https://docs.vitawallet.io/api-reference/bank-payouts/create-payout.md)
>
> `POST /transactions` con `transactions_type: "withdrawal"`

> [card] [Validar beneficiario](https://docs.vitawallet.io/api-reference/bank-payouts/overview.md)
>
> `POST /beneficiaries/validate_beneficiary`


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