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

# Convert currency

> Quote, then execute — moving money between two of your own balances at a locked rate.

A conversion moves value between two of your balances — USD → GHS, GHS → NGN, USDC → USD. Two steps so you see the rate before committing.

## 1. Quote

```bash theme={null}
POST /v1/conversions/quote
{ "from": { "currency": "USD", "amount": 100 }, "to": { "currency": "GHS" } }
→ { "quote": { "id": "qte_…", "rate": "11.31", "from": {…}, "to": { "amount": "1131.00" }, "expiresAt": "…" } }
```

Put the amount on **one side**: `from.amount` = "sell exactly this much", `to.amount` = "buy exactly this much." The rate includes your organization's spread and is **locked for 10 minutes**.

## 2. Execute

```bash theme={null}
POST /v1/conversions
{ "quoteId": "qte_…" }
→ { "conversion": { "id": "conv_…", "status": "completed", … } }
```

Synchronous: the `from` balance is debited and the `to` balance credited before the response returns. Executing the same quote twice returns the original conversion (`200`). A lapsed quote returns `400 bad_request` — request a fresh one.

## Where rates come from

`GET /v1/rates/{origin}/{destination}` returns the same all-in rate a quote would use, without creating one — handy for showing prices. See [Money & currencies](/concepts/money) for direction semantics and rate locks.

`conversion.completed` fires on execution; the ledger shows a debit and a credit entry linked to the conversion.
