Overview
What the Alfred API does and how money moves through it.
Alfred lets you collect local currency and hold balances on behalf of customers you onboard yourself. You can also convert between currencies and assets, then pay out.
You are the partner. The customers you create sit underneath you, and every call you make is scoped by your API key. You never pass your own identifier anywhere.
What you can do
- Collection: Issue a virtual account to a customer and receive local currency into it. Every deposit that lands on it is attributed to that customer. You can announce an expected deposit in advance, or take arrivals as they come.
- Holding: A customer's funds sit as balances. They can be held in stablecoin, in a Corporate USD Account, or as a local stablecoin where one exists.
- Conversion: Price a currency pair, then execute against that price. This works for fiat to fiat, fiat to stablecoin, and stablecoin to stablecoin.
- Payout: Send to a registered bank account or wallet. A cross-currency payout converts as part of execution, so it's one transaction rather than two.
The shape of it
These are the five objects you will work with, in the order you'll meet them.
- Customers: You create one, fill in its profile, and submit it for verification. Until it's
ACTIVE, it can't do anything. - Endorsements: Each thing a customer is allowed to do is gated by an endorsement. You request one, wait for it to be approved, and only then call the endpoint it unlocks.
- Instruments: A virtual account receives fiat and a deposit address receives stablecoin. Both belong to a customer, and neither holds a balance.
- Balances: Money lives on the customer rather than on the instrument that received it.
- Movements: Deposits, conversions and payouts are separate transactions that relate to each other. A deposit completing doesn't complete the conversion it funds, and that conversion doesn't complete the payout after it.
Two things worth knowing up front
Routes decide what's possible. A combination of country, currency, destination type and rail is either supported or it isn't. GET /v1/countries/{country} is the authoritative answer. Anything not listed as LIVE is refused before anything is locked, so you find out at request time rather than at settlement.
Events drive the sequence. Nearly every flow has a step that's only correct after something has happened on our side. You don't poll for it. See Webhooks and events.
Two flows in detail
Most of the flows are linear enough to read as prose, and the pages linked at the end describe them that way. The two below are easier to follow as diagrams, because their shape is easy to assume wrongly. Getting the shape wrong usually means rewriting your integration instead of fixing a bug.
In both diagrams, a solid arrow is a call you make and a dotted arrow is the response. An open arrow is a webhook we deliver to you.
Getting a customer ready to receive money
Nothing can arrive until the customer is ACTIVE, holds the endorsement for what it's about to do, and has an instrument to receive into. Those are three separate waits. Most integrations underestimate this part.
All three gates have to clear. Partners often treat a passing KYB decision as the finish line, and the usual result is provisioning an instrument before the endorsement lands. Read Onboarding a customer and Endorsements for what each step needs.
Collecting in one currency and paying out in another
The old equivalent of this was a single chained order. It now runs as two transactions. The pay-in and the payout have separate lifecycles, and the pay-in completing does not start the payout. You relate them by passing the same payment_flow_id to both.
The payout converts natively, as an LP_EXECUTION leg inside itself. Don't run a separate conversion first.
Request the quote after the funds are credited rather than before. A quote has an expiresAt and the deposit doesn't, so quoting first means re-quoting.
Where to go next
- Getting started for credentials, the base URL and your first call.
- Core concepts for the customer model, endorsements, routes and statuses.
- The Step by Step guides for a worked example of each flow end to end.
Updated 9 days ago

