Skip to main content
Use resolvePayment(name) to get the complete address and optional memo. Lookup 0.11.0 reads this instruction from the namespace’s current Resolver through Universal Lookup. Try the live testnet examples for all supported address and memo forms, including resolving and calling cyclops.nova.

Memos are optional

Ordinary native records return their default address with none until the holder configures a payment instruction. Holders do not need to create a memo to use Soran. After a holder configures an instruction, missing or invalid payment state fails instead of falling back to that default. To remove a memo, the holder explicitly writes the complete destination with setPayment and none. Return-hash memos and contract-specific arguments are outside this ABI. Refuse unknown memo types. Never convert M to G plus a transaction memo. See complete destination examples.

Native and legacy results

Both variants contain the canonical name, Registrar, optional Resolver and exact bigint generation. Lookup recognizes a legacy implementation only when its current code hashes are explicitly configured. A legacy address does not establish a memo-free payment instruction. resolvePayment, verifyPayment and payment fields in details/identity reject legacy results with LEGACY_MEMO_UNKNOWN. Missing, malformed, archived or unreadable native instructions fail; no error retries through an older ABI or substitutes a Registrar address.

Address-only convenience methods

resolve(name), record(name) and verify(name, address) work only with native memo-free instructions:
  • A required memo throws PAYMENT_REQUIRED.
  • Unknown legacy memo capability throws LEGACY_MEMO_UNKNOWN.
  • A muxed record returns or compares the complete M address.
The older on-chain address methods cannot represent M and reject it. Use resolvePayment for general payment integration.

Building a payment

  1. Resolve the name and display its complete address and memo.
  2. Choose a payment flow that supports that destination. G/M can use a compatible classic Stellar Payment; C requires an appropriate Soroban asset/token transfer.
  3. Preserve the full M address or the exact G memo type and value. A classic transaction has one memo, so split payments needing different memos.
  4. Call verifyPayment near confirmation. If it returns false, show the changed instructions for another review.
Honor recipient account memo-required settings such as SEP-29. A Soran none instruction does not override that requirement. Rechecking detects stale client data. It cannot prevent a holder from updating records before a separate payment settles. Even a permanent Resolver permits holder record changes. The same complete instructions are available through the contract ABI and HTTP payment endpoint.

Metadata is a separate read

nameMetadata supplies holder, built-in target, generation, expiry and active status without requiring a valid payment record. The built-in target can differ from the Resolver’s effective address. Use it for ownership displays, never as a fallback payment destination.