---
title: "Create a Route"
method: POST
path: "/v0/routes"
tags: ["Routes"]
---

# Create a Route

`POST /v0/routes`

<Callout intent="warning">
  The endpoints exposed here are currently in **Beta**! As we continue to build our initial offering, these endpoints may implement breaking changes. Be sure to check back for our change log regularly as a precaution.
</Callout>

Create a persistent source → destination route. The response includes reusable settlement instructions — a wire memo for fiat sources, or one mint or redeem address per supported chain for blockchain sources — that the caller uses to initiate transfers. A single set of instructions is valid indefinitely; every inbound transfer matching them triggers a separate settlement to the route's destination.

The route topology is determined by `from.currency`, `to.currency`, and the destination `to.chain`. `to.accountId` references a registered account from `GET /v0/accounts`.

<Callout intent="warning">
  **Fiat routes need the bank account on file first.** Add the bank account you'll *send from* (mint from `usd`) or *receive into* (redeem to `usd`) before you transact. If a wire arrives from — or a payout is owed to — a bank account Agora hasn't added and verified, settlement is held and processing is delayed until it's on file.
</Callout>

### Supported topologies

| `from.currency` | `to.currency` (+ `to.chain`) | Behavior |
|---|---|---|
| `usd` | `ausd` on a chain | Mint: wire USD with the memo, receive AUSD at the destination |
| `ausd` | `usd` (bank account) | Redeem: send AUSD to the redeem address, receive a USD payout |
| `stablecoin` (wildcard) | `ausd` on a chain | Mint with stablecoins: send any in-scope stablecoin to the mint address, receive AUSD at the destination. See the `stablecoin` section below for the in-scope asset list. |
| `ausd` | `usdc` on a chain | Redeem to tokens: send AUSD to the redeem address, receive `usdc`. |

### What `stablecoin` means

`stablecoin` is a wildcard source currency standing in for any stablecoin Agora currently accepts — **today, only `usdc`**. The mint address a mint-from-stablecoin route returns is currency-agnostic, settling AUSD regardless of which in-scope stablecoin is sent. If you have questions about which currencies can be accepted, reach out to the [operations team](mailto:support@agora.finance).

## Headers

- `Authorization` string, required

## Request body

- object
  - `name` string
  - `from` V0RoutesPostRequestBodyContentApplicationJsonSchemaFrom, required
    - `currency` 'ausd' | 'stablecoin' | 'usd', required — Source currency. `usd` (wire), `ausd`, or the `stablecoin` wildcard (any stablecoin deposit).
  - `to` V0RoutesPostRequestBodyContentApplicationJsonSchemaTo, required
    - `currency` 'ausd' | 'usd' | 'usdc', required — Destination currency. `ausd`, `usd`, or a specific stablecoin (e.g. `usdc`). Never the wildcard.
    - `accountId` string, uuid, required
    - `chain` 'arbitrum' | 'avalanche' | 'base' | 'ethereum' | 'immutable' | 'monad' | 'polygon-pos' | 'solana' — Destination chain (kebab-case). Restricted to chains Agora supports for routes (EVM + Solana).

## Response `201`

OK

- RoutesCreateResponse201
  - `id` string, uuid, required — Deterministic route UUID; same canonical inputs always derive the same id.
  - `name` string, nullable — User-set label, or null when unset.
  - `createdAt` string, date-time, required
  - `from` V0RoutesPostResponsesContentApplicationJsonSchemaFrom, required
    - `currency` 'ausd' | 'stablecoin' | 'usd' | 'usdc', required — Currency identifier.
  - `to` V0RoutesPostResponsesContentApplicationJsonSchemaTo, required
    - `currency` 'ausd' | 'stablecoin' | 'usd' | 'usdc', required — Currency identifier.
    - `accountId` string, uuid, required
    - `chain` 'arbitrum' | 'avalanche' | 'base' | 'ethereum' | 'immutable' | 'monad' | 'polygon-pos' | 'solana' — Route chain (kebab-case). Restricted to chains Agora supports for routes (EVM + Solana).
  - `instructions` V0RoutesPostResponsesContentApplicationJsonSchemaInstructionsItems[], required — Next-step instructions. Mint-fiat: one wire instruction with memo + beneficiary. On-chain directions: one deposit address per supported chain, alphabetical by chain.
    - union
      - V0RoutesPostResponsesContentApplicationJsonSchemaInstructionsItems0
        - `memo` string, required — Memo / reference field that uniquely identifies the route on the inbound wire.
        - `beneficiaryName` string, required
        - `beneficiaryAddress` string, required
        - `accountNumber` string, required
        - `bankName` string, required
        - `bankAddress` string, required
        - `swiftCode` string
        - `routingNumber` string, required
        - `supportedCurrencies` V0RoutesPostResponsesContentApplicationJsonSchemaInstructionsItemsOneOf0SupportedCurrenciesItems[], required — Currencies this wire instruction accepts
      - V0RoutesPostResponsesContentApplicationJsonSchemaInstructionsItems1
        - `chain` 'arbitrum' | 'avalanche' | 'base' | 'ethereum' | 'immutable' | 'monad' | 'polygon-pos' | 'solana', required — Route chain (kebab-case). Restricted to chains Agora supports for routes (EVM + Solana).
        - `depositAddress` string, required
        - `supportedCurrencies` V0RoutesPostResponsesContentApplicationJsonSchemaInstructionsItemsOneOf1SupportedCurrenciesItems[], required — Currencies the deposit address accepts

## Other responses

- `400` — The requested chain is not supported.
- `401` — Authentication is required.
- `403` — The account is not eligible for the requested route direction.
- `404` — Account not found.
- `409` — A route with these parameters already exists. Use GET /routes to look it up.
- `429` — Too many requests.
- `500` — An unexpected error occurred.
- `503` — Route creation temporarily unavailable. Please retry shortly.

---

[API](https://skmtc.net/agora/apis/endpoints.md) · [All operations](https://skmtc.net/agora/apis/endpoints/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/agora/endpoints/versions/8525bfff7634/schema)
