G... accounts, muxed M... destinations and Soroban C... contract addresses. The Resolver stores muxed destinations as an explicit base G account and unsigned 64-bit ID; the SDK and HTTP result encode that pair as the complete M address.
These are payment-destination capabilities, not a promise that every wallet can sign for every account type. This page describes the deployed Resolver payment ABI 2, Lookup ABI 2, Lookup SDK 0.6.0 and Holder SDK 0.4.0 in release status.
The SDK examples below use published Lookup 0.6.0 and Holder 0.4.0. These versions preserve M destinations; older SDKs cannot. The same on-chain instructions are available through the contract methods, HTTP payment endpoint and app.
Support at a glance
No memo is required for an ordinary memo-free record. A recipient account’s own memo-required policy still applies. Other memo variants, including return-hash, and arbitrary contract routing arguments are outside this Soran ABI.
Contract-account senders need a compatible transfer flow that preserves the recipient’s routing requirement. Soroban transfers cannot use the classic transaction memo field. A supported numeric-ID route may use muxed transfer support if the receiver supports it; text and hash memos must not be dropped or silently converted. Refuse a payment when the chosen flow cannot carry its required instruction. See Stellar’s contract-account payment guide.
Example destinations
The examples below show complete, validly encoded values. They are illustrative: the account comes from Stellar’s documentation, the contract address is synthetic, and these names are not promised to exist. Do not send funds to these examples.Classic account without a memo
An ordinaryalice.nova payment could resolve to:
Classic account with an ID memo
An exchange deposit name such ascustomer420.nova could resolve to:
"420" is a different instruction. IDs range from 0 to 18446744073709551615; preserve them as decimal strings, with no leading zeroes except "0".
The exchange supplies the actual account and customer memo. A Soran name removes the need to copy those fields separately; it does not remove the wallet’s duty to put the memo in the payment.
Classic account with a text memo
none to remove a memo explicitly.
Classic account with a hash memo
Contract address
Muxed accounts: what is and is not supported
A muxedM... address packages a base G account with a 64-bit identifier. For example:
customer420.nova can resolve to:
none means no separate transaction memo. The embedded muxed ID 420 is still required and remains part of the M address. Send to that complete address using a compatible payment flow. Do not substitute the base G address or Memo ID 420.
M addresses with a separate ID, text or hash memo are rejected by this Soran interface. Invalid M encodings and out-of-range IDs are rejected. Muxed IDs range from 0 to 18446744073709551615; preserve them as exact decimal strings or bigint values when inspecting them.
You can inspect an M address with Stellar SDK 17 without submitting a transaction:
Publish and read the whole instruction
With a configured Holder SDK, the name’s holder can publish the recipient-approved destination:set_muxed. Address and routing information are stored atomically in the namespace’s Resolver. Universal Lookup obtains the current instruction from that Resolver; no Soran database is the source of the memo or muxed ID.
Wallets call on-chain resolve_destination, SDK resolvePayment, or HTTP /v1/payment/{namespace}/{label}. The older on-chain resolve_payment and address-only contract methods, plus HTTP /v1/resolve, reject muxed records rather than return an incomplete G address. The updated SDK’s resolve/record/verify conveniences can preserve the full M address, but resolvePayment remains the general payment API. Display and preserve the whole pair. A required separate memo makes address-only lookup fail. Read failures and unknown legacy memo capability must never become memo-free results.
A classic transaction has one memo, so payments requiring different memos need separate transactions. Recheck the full instruction before confirmation, honor recipient memo requirements, and use the correct payment flow for the address type. See payment integration and the contract ABI.