Skip to navigation

Overview

Reusable mint and redeem paths, and how they settle.

A route is a persistent path from a source currency to a destination account — for example, an inbound USD wire that mints AUSD to your wallet, or AUSD redeemed to a USD payout. A route carries no amount: creating one returns reusable settlement instructions, and every inbound transfer that matches them settles independently to the route’s destination, for whatever amount actually arrives.

1

Create a route

POST /v0/routes with a from currency and a to destination account. No amount — a route is a reusable path, not a single transfer.

2

Get reusable instructions

The response includes settlement instructions: a wire memo for fiat sources, or a mint or redeem address per chain for onchain sources.

3

Funds arrive

A sender follows the instructions. Every inbound transfer that matches them is detected automatically.

4

Settlement

Agora delivers the destination currency to to.accountId for the amount received. The instructions don’t expire, so this repeats for every matching transfer.

Instructions

Instructions are the actionable part of a route — how a sender actually moves funds. A route returns whichever shape fits its source:

  • Wire instruction (fiat source) — a memo plus beneficiary and bank details (accountNumber, bankName, routingNumber). The memo is the key: any wire received against that account carrying the memo settles to this route.
  • Onchain instruction (blockchain source) — one reusable mint or redeem address (depositAddress) per supported chain, each listing the supportedCurrencies it accepts.

Instructions don’t expire. Reuse them across many transfers; each matching transfer settles on its own.

Deterministic IDs

Route IDs are deterministic — the same canonical inputs always derive the same id — so creating a route is idempotent: calling POST /v0/routes again with the same inputs returns 200 with the existing route rather than creating a duplicate. 409 route_already_exists is reserved for the rare case where the deterministic id is occupied by a route the call couldn’t read back cleanly; see 200, 201, or 409 on POST /v0/routes.

Topologies

The pairing of from.currency, to.currency, and to.chain determines what a route does — mint from fiat (usd → ausd), mint from stablecoin (usdc → ausd), redeem to fiat (ausd → usd), or redeem to a token (ausd → usdc) — and is returned on every route as direction. The Create a Route endpoint below documents the supported topologies and chains in full.

The endpoints below let you create a route (POST /v0/routes), list routes (GET /v0/routes), and retrieve one (GET /v0/routes/{routeId}). The list takes fromCurrency, toCurrency, toChain, direction, and toAccountId filters. See Filtering list endpoints. usdc is valid on either side — as fromCurrency for a mint-from-stablecoin route, as toCurrency for a redeem-to-stablecoin route — matching what route creation accepts. See the Error Reference for route-specific errors (route_not_found, route_already_exists, route_creation_unavailable).