Muxed IDs and attribution
Every payment into the issuer has to be matched to the right organisation or the right redeem. Stellar's muxed IDs carry that match inside the payment itself, so a single distribution account can serve many destinations.
One stable ID per deposit route
When an organisation is approved, it gets a deposit route: one stable muxed ID on the distribution account, plus a reference for the mock bank's virtual account. The ID comes from a shared sequence, so two approvals at once can never collide. Incoming wires use the route's reference. The muxed ID is not a token deposit address in Phase 1: a token payment sent to a deposit route's muxed ID goes to suspense, because a token deposit to a fiat route has no defined meaning yet.
One ID per redeem
A redeem can't share a route ID, because two equal redeems would then be indistinguishable. So each redeem gets its own muxed ID when it is created, and that ID is valid until the transfer's expires_at. A payment to an expired or unknown ID is not credited; it goes to suspense.
Reading a muxed payment
The watcher sees the destination of a token payment in one of two shapes:
- a plain G-address: the event value is just the amount, and the payment can only be attributed by reference;
- a muxed address: the event value is the map
{amount, to_muxed_id}, and the ID can name an open redeem. A muxed ID that names a deposit route is held in suspense, not credited.
The SEP-29 memo_required hint is advisory only. RPC accepted a plain payment to an account that sets it, so a wallet that ignores the hint can still send an unattributable payment. That is why suspense exists even when a memo was requested.
Wires
A wire carries a reference. The resolver turns an MNT- reference into an open, unexpired mint and a DEP- reference into an active deposit route. Anything it can't resolve stays unattributed and is held in suspense.
Endpoints
POST /v1/deposit-routesandGET /v1/deposit-routes/{id}manage routes and their muxed IDs.POST /v1/counterpartiesregisters the bank counterparties that wires arrive from.POST /v1/sandbox/fiat-depositssimulates an incoming wire with a reference, so you can test attribution.