Enterprise routing wall with colorful path diagrams for blockchain interoperability.
Protocols

Payment Request and Memo Standards

A technical reference for ZIP 321 Payment Request URIs and the evolving standards for memo field usage, encryption, and formatting in Zcash. Covers the impact on wallet and merchant interoperability for shielded and transparent transactions.
introduction
PAYMENT REQUEST AND MEMO STANDARDS

Standardizing Zcash Payment Interactions

How ZIP 321 and memo field standards define interoperable payment flows between Zcash wallets, merchants, and exchanges.

Zcash payment interactions are standardized through ZIP 321 (Payment Request URIs), which defines a URI scheme for representing Zcash payment requests in a way that is both human-readable and machine-parseable. This standard is the critical interoperability layer for wallets, point-of-sale systems, and e-commerce platforms, allowing a merchant to generate a single URI that encodes the recipient address, amount, memo, and label. Without strict adherence to ZIP 321, wallet implementations risk fragmenting the user experience, where a payment request generated by one wallet fails to parse correctly in another, breaking the core payment flow.

The standard interacts directly with the evolving rules for the encrypted memo field, a unique Zcash feature that allows senders to attach metadata to shielded transactions. While ZIP 302 defined the core memo field format, the operational standard for what goes into that field—such as a payment reference ID or a reply address—is often defined by the payment protocol layer. A compliant ZIP 321 implementation must correctly serialize the memo parameter into the transaction's encrypted memo field, ensuring that the recipient can decrypt and parse the attached data. This coupling means that a change in memo encryption schemes or a new shielded pool can break payment request parsing if wallets do not handle the type and pool discriminator fields correctly.

For exchanges and custodians, compliance with ZIP 321 is mandatory for a seamless deposit experience. A user scanning a withdrawal QR code from an exchange expects their wallet to correctly populate the shielded address, amount, and any required memo identifier. A failure in this flow leads directly to support tickets and stuck funds. Chainscore Labs can assess a payment integration's full-stack compliance with ZIP 321 and memo formatting rules, reviewing the URI parser, memo field construction, and multi-pool address handling to ensure that payment interactions are robust against future network upgrades and shielded pool transitions.

INTEROPERABILITY AND PRIVACY

Quick Facts: Payment Request and Memo Standards

A reference for wallet, exchange, and payment processor teams evaluating compliance with Zcash payment request formats and memo field usage.

AreaWhat changesWho is affectedAction

Payment Request URI Standard

ZIP 321 defines a URI scheme for Zcash payment requests, replacing ad-hoc formats.

Wallet developers, merchant services, exchange deposit flows

Adopt ZIP 321 for generating and parsing payment requests to ensure cross-wallet compatibility.

Memo Field Formatting

No single standard mandates memo structure, but conventions exist for encrypted memos and reply addresses.

Wallet developers, privacy-focused applications

Verify that memo usage aligns with wallet ecosystem conventions to prevent interoperability failures.

Memo Encryption

Sapling and Orchard memos are encrypted by default; transparent transactions have unencrypted memos.

Custodians, compliance teams, auditing services

Ensure compliance tools can decrypt memos using the correct viewing keys for the target pool.

Unified Address Integration

ZIP 316 Unified Addresses encode multiple pool receivers, affecting how payment requests are constructed.

Wallet developers, exchange integration teams

Update payment request generation to support UA receivers and validate multi-pool resolution.

Light Client Compatibility

Payment request parsing must work with light clients that may not have full transaction context.

Mobile wallet developers, lightwalletd operators

Test payment request flows against light client environments to ensure reliable parsing.

Exchange Deposit Flows

Non-standard payment requests can break exchange deposit detection and crediting logic.

Exchange operations teams, custody providers

Audit deposit monitoring systems against ZIP 321 and UA standards to prevent missed deposits.

Cross-Wallet Testing

Inconsistent URI parameter support leads to broken payment flows between major wallets.

QA teams, integration engineers

Build a test matrix covering major Zcash wallets to validate URI parameter handling.

Future Standard Evolution

Proposals may extend ZIP 321 or define new memo semantics for DeFi or bridging use cases.

Protocol architects, standards contributors

Monitor the ZIPs repository for draft proposals affecting payment request or memo standards.

technical-context
INTEROPERABILITY STANDARD

Technical Mechanism: URIs and Memos

How ZIP 321 Payment Request URIs and evolving memo field standards create a unified payment interface for Zcash wallets and services.

ZIP 321 defines a standard URI scheme (zcash:...) for representing Zcash payment requests, enabling interoperable payment flows between wallets, merchants, and exchanges. A compliant URI encodes a recipient address, amount, memo, and optional metadata such as a label or reply-to address. This standard is the Zcash equivalent of BIP 21 for Bitcoin, but it is designed from the ground up to handle Zcash's multi-pool architecture, including transparent, Sapling, and Orchard addresses within a single request. The URI format also supports multiple payment addresses in one request, allowing a merchant to present a Unified Address that the wallet can decompose into the most efficient shielded pool for the transaction.

The memo field, a 512-byte encrypted or unencrypted payload attached to shielded transactions, is the second critical component of Zcash payment flows. While the protocol itself does not mandate a memo format, ecosystem standards are emerging to ensure wallets can interpret memos correctly. A sender can use the memo to include a payment reference ID, an order number, or a reply address for refunds. For encrypted memos, the sender uses the recipient's transmission key to ensure only the intended recipient can read the contents. Builders must handle memo decryption failures gracefully, as an incorrectly formatted or missing memo can break automated reconciliation logic in exchange and merchant systems. Chainscore can audit a payment integration's memo handling and URI parsing to verify compliance with ZIP 321 and prevent silent payment-processing failures.

PAYMENT REQUEST AND MEMO STANDARDS

Affected Actors and Systems

Wallet Developers

Wallet teams must implement ZIP 321 URI parsing and generation to ensure interoperable payment flows. This includes correctly handling the address, amount, memo, and label parameters in the request scheme.

For memo field usage, developers need to distinguish between plaintext memos for transparent transactions and encrypted memos for shielded transactions. A wallet must not leak payment details by incorrectly populating the memo field of a shielded transaction without proper encryption.

Action items:

  • Audit URI parsing logic against the ZIP 321 ABNF grammar.
  • Verify that memo encryption uses the correct recipient public key for each shielded pool.
  • Test interoperability with at least two other major wallets before release.
implementation-impact
PAYMENT REQUEST AND MEMO STANDARDS

Implementation Impact and Integration Risks

Adopting ZIP 321 payment requests and evolving memo field standards introduces specific integration risks for wallets, exchanges, and merchant systems. The following areas require targeted review to ensure interoperability and prevent user-facing errors.

PAYMENT REQUEST AND MEMO STANDARDS

Risk Matrix: Non-Compliance and Ambiguity

Evaluates operational and integration risks arising from partial or incorrect implementation of ZIP 321 and evolving memo field conventions.

RiskFailure modeSeverityMitigation

Incomplete ZIP 321 URI parsing

Wallet fails to extract amount, address, or memo from a compliant payment request, causing a failed or incorrect transaction.

High

Implement a full parser for all ZIP 321 parameters. Use the reference test vectors to validate parsing logic.

Ambiguous memo field usage

A wallet encrypts a memo with the wrong key or sends plaintext when encryption is expected, leading to permanent loss of payment metadata.

High

Adopt and enforce a strict internal standard for memo types. Clearly signal encryption expectations in UI and documentation.

Non-standard memo formatting

A merchant system sends a structured memo (e.g., JSON order ID) that the receiving wallet cannot parse, breaking automated settlement reconciliation.

Medium

Define and publish a specific memo structure. Coordinate with major wallet developers to ensure broad parsing support.

Silent failure on invalid request

A wallet receives a malformed payment request but provides no user feedback, making it appear as if the app is broken rather than the request.

Medium

Implement explicit error handling for all ZIP 321 parsing failures. Display a clear, non-technical error message to the user.

Address type mismatch in URI

A URI contains a Unified Address but the sending wallet only supports Sapling, leading to a confusing error or a fallback to a transparent address without user consent.

Medium

Validate the receiver type against wallet capabilities before constructing the transaction. Warn the user if a privacy downgrade is required.

Replay of stale payment requests

A user reuses an old payment request with a lapsed expiry, and the sender's wallet does not check the expiry parameter, resulting in a stuck transaction.

Low

Parse and enforce the expiry parameter from ZIP 321 URIs. Reject requests past their expiration time before allowing transaction construction.

Inter-wallet memo encryption incompatibility

Wallet A encrypts a memo using a key derivation path that Wallet B does not recognize, rendering the memo unreadable despite both supporting 'encrypted' memos.

Medium

Verify memo decryption compatibility across target wallet pairs. Adhere strictly to the key derivation paths specified in ZIP 302 for outgoing viewing keys.

Exchange deposit memo truncation

An exchange generates a ZIP 321 URI with a deposit memo longer than 512 bytes, which is silently truncated by the sending wallet, causing a loss of the customer identifier.

High

Exchanges must enforce a 512-byte limit on generated memos. Wallets must warn users if a memo in a payment request exceeds this limit before sending.

ZIP 321 AND MEMO FIELD COMPLIANCE

Integration Checklist for Wallets and Merchants

A practical checklist for wallet developers, payment processors, and merchants to ensure their Zcash payment flows are interoperable, privacy-preserving, and compliant with ZIP 321 and evolving memo field standards.

Confirm that your wallet or service can both generate and parse payment request URIs according to the ZIP 321 specification.

What to check:

  • The URI scheme is zcash: followed by a valid Unified Address (UA), Sapling, or transparent address.
  • The amount parameter is correctly formatted in ZEC (e.g., amount=1.0).
  • The memo parameter is a base64url-encoded string without padding, representing the UTF-8 encoded memo.
  • The label and message parameters are correctly percent-encoded.

Why it matters: A malformed URI will cause payment failures. A parser that rejects valid parameters will break interoperability with other wallets.

Readiness signal: Your implementation successfully parses and generates all valid examples from the ZIP 321 specification test vectors.

Chains We Build On

Looking to build on a specific blockchain?

We build smart contracts, DeFi applications, wallets, tokenization platforms, and blockchain infrastructure across the major ecosystems teams choose today. That includes Ethereum, Arbitrum, Optimism, Polygon, Avalanche, Solana, Sui, Aptos, Hedera, Stellar, and NEAR, with support for additional EVM and non-EVM networks based on your product requirements.

EVM ecosystems

  • Ethereum logo
    Ethereum
  • Arbitrum logo
    Arbitrum
  • Optimism logo
    Optimism
  • Polygon logo
    Polygon
  • Avalanche logo
    Avalanche
  • Cronos logo
    Cronos

Non-EVM ecosystems

  • Solana logo
    Solana
  • Sui logo
    Sui
  • Aptos logo
    Aptos
  • Hedera logo
    Hedera
  • Stellar logo
    Stellar
  • NEAR logo
    NEAR

Additional ecosystems

  • Polkadot logo
    Polkadot
  • Cosmos logo
    Cosmos
  • TON logo
    TON
  • Cardano logo
    Cardano
  • Algorand logo
    Algorand
  • Tempo logo
    Tempo

Also available for Base, appchains, custom EVM networks, and cross-chain product architecture.

PAYMENT REQUEST AND MEMO STANDARDS

Frequently Asked Questions

Common questions about implementing ZIP 321 payment requests and handling memo field standards across Zcash shielded pools.

ZIP 321 defines the Payment Request URI scheme for Zcash. It specifies a standard format for encoding a payment address, amount, memo, and other parameters into a URI that wallets can parse and act on.

Key implementation points:

  • The URI scheme is zcash: followed by a valid Zcash address (transparent, Sapling, or Unified).
  • Parameters like amount, memo, label, and message are appended as query parameters.
  • The amount parameter must be specified in ZEC, not zatoshis.
  • The memo parameter must be URI-encoded and, for shielded recipients, must conform to the memo field constraints of the target pool.

Wallets that generate or parse these URIs should validate against the ZIP 321 test vectors. Chainscore can review a wallet's URI parser and generator for edge cases that cause silent failures or incorrect transaction construction.

Trusted by Industry Leaders

Delivering blockchain solutions for 5+ years.

We have partnered with 50+ leading DeFi protocols, NFT ecosystems, and fintech innovators to build secure, scalable, and capital-efficient blockchain products.

Selected Partners & Clients

ChainVote logo
Reax logo
Sokail logo
Swapsicle logo
SyntheX logo
Tekika logo
Telos logo
Zexe logo
ChainVote logo
Reax logo
Sokail logo
Swapsicle logo
SyntheX logo
Tekika logo
Telos logo
Zexe logo
ChainVote logo
Reax logo
Sokail logo
Swapsicle logo
SyntheX logo
Tekika logo
Telos logo
Zexe logo
ChainVote logo
Reax logo
Sokail logo
Swapsicle logo
SyntheX logo
Tekika logo
Telos logo
Zexe logo
“I've been working with Chainscore Labs for last 3+ years, they've consistently delivered with strong ownership across multiple projects. The team is reliable and detail-oriented.”
L
Lee Erswell
CEO, Telos Foundation
how to get started

How to get started?

If you're looking for blockchain integration, ChainScore Labs has 5+ years of experience helping teams build and integrate exchanges, wallets, smart contracts, tokenization solutions, and protocol-connected products, we can help you choose the right path, integrate securely, and get to production faster. Our team consists of experienced blockchain developers and architects who can help you with your blockchain integration needs.

01

Exploration & Strategy

Define your product goals and choose the right blockchain architecture for your use case.

02

Architecture & Design

Design the smart contracts, tokenomics, and security parameters of your system.

03

Development & Integration

Build and integrate with wallets, oracles, and front-end dApps for a seamless experience.

04

Security & Launch

Comprehensive audits followed by a risk-managed mainnet deployment to protect your users.

Start a build

Need a blockchain engineering team?

Send the project context and we will respond with next steps, scope questions, and a practical path to delivery.