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.

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.
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.
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.
| Area | What changes | Who is affected | Action |
|---|---|---|---|
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 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.
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 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.
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.
| Risk | Failure mode | Severity | Mitigation |
|---|---|---|---|
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 | Low | Parse and enforce the |
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. |
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
amountparameter is correctly formatted in ZEC (e.g.,amount=1.0). - The
memoparameter is a base64url-encoded string without padding, representing the UTF-8 encoded memo. - The
labelandmessageparameters 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.
Canonical Resources and Specifications
Use these Zcash specifications to implement and test interoperable payment requests, memo handling, and address selection. Verify ZIP status and current protocol behavior before deploying wallet, merchant, exchange, or custody changes.
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
- Arbitrum
- Optimism
- Polygon
- Avalanche
- Cronos

Non-EVM ecosystems
- Solana
- Sui
- Aptos
- Hedera
- Stellar
- NEAR
Additional ecosystems
- Polkadot
- Cosmos
- TON
- Cardano
- Algorand
- Tempo
Also available for Base, appchains, custom EVM networks, and cross-chain product architecture.
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, andmessageare appended as query parameters. - The
amountparameter must be specified in ZEC, not zatoshis. - The
memoparameter 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.
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
“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.”
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.
Exploration & Strategy
Define your product goals and choose the right blockchain architecture for your use case.
Architecture & Design
Design the smart contracts, tokenomics, and security parameters of your system.
Development & Integration
Build and integrate with wallets, oracles, and front-end dApps for a seamless experience.
Security & Launch
Comprehensive audits followed by a risk-managed mainnet deployment to protect your users.
Discover our
blockchain development services.
We build production-grade blockchain solutions for top-tier projects across DeFi and Web3.
Need a blockchain engineering team?
Send the project context and we will respond with next steps, scope questions, and a practical path to delivery.


