Overview
The protocol uses a unified verification architecture where each payment method is registered with:- Payment Method Hash: Unique identifier for the payment platform
- Supported Currencies: List of fiat currencies accepted
- Verification Method: EIP-712 signed attestations from off-chain services
- Timestamp Buffer: Maximum time allowance for L2 flexibility (up to 48 hours)
Supported Platforms
Venmo
Region: United States Supported Currencies:- USD
0x90262a3db0edd0be2369c6b28f9e8511ec0bac7136cefbada0880602f87e7268
Verification: Uses UnifiedPaymentVerifier with attestation from payment receipts
Configuration: Defined in deployments/verifiers/venmo.ts
PayPal
Region: Global Supported Currencies:- USD
deployments/verifiers/paypal.ts
Verification: Single payment details verification through UnifiedPaymentVerifier
Configuration: Defined in deployments/verifiers/paypal.ts
Wise (TransferWise)
Region: Global Supported Currencies:- USD, EUR, GBP, CNY
- AUD, NZD, CAD, CHF
- AED, SGD, HKD, JPY
- ZAR, ILS, PLN, TRY
- IDR, KES, MYR, MXN
- THB, VND, UGX, CZK
- DKK, HUF, INR, NOK
- PHP, RON, SEK
0x554a007c2217df766b977723b276671aee5ebb4adaea0edb6433c88b3e61dac5
Verification: Multi-currency support with comprehensive payment verification
Configuration: Defined in deployments/verifiers/wise.ts
Wise offers the broadest currency support, making it ideal for international transactions.
Zelle
Region: United States Supported Banks:- Citibank (Zelle Citi)
- Chase Bank (Zelle Chase)
- Bank of America (Zelle BofA)
- USD (all variants)
- Zelle Citi: See
deployments/verifiers/zelle.ts - Zelle Chase: See
deployments/verifiers/zelle.ts - Zelle BofA: See
deployments/verifiers/zelle.ts
deployments/verifiers/zelle.ts
CashApp
Region: United States, United Kingdom Supported Currencies:- USD
deployments/verifiers/cashapp.ts
Verification: CashApp returns up to 20 activities at a time for verification
Configuration: Defined in deployments/verifiers/cashapp.ts
Revolut
Region: Global Supported Currencies:- USD, EUR, GBP, SGD
- NZD, AUD, CAD, JPY
- HKD, MXN, SAR, AED
- THB, TRY, PLN, CHF
- ZAR, CNY, CZK, DKK
- HUF, NOK, RON, SEK
0x617f88ab82b5c1b014c539f7e75121427f0bb50a4c58b187a238531e7d58605d
Verification: Multi-currency digital bank with comprehensive coverage
Configuration: Defined in deployments/verifiers/revolut.ts
Revolut’s UnifiedPaymentVerifier handles decimal conversions automatically for currencies like JPY.
MercadoPago
Region: Latin America (Argentina, Brazil, Mexico, Chile, Colombia, Peru, Uruguay) Supported Currencies:- See
deployments/verifiers/mercadopago.tsfor supported currencies
deployments/verifiers/mercadopago.ts
Verification: Regional payment platform verification
Configuration: Defined in deployments/verifiers/mercadopago.ts
Monzo
Region: United Kingdom Supported Currencies:- GBP, EUR, USD
deployments/verifiers/monzo.ts
Verification: Single transaction details verification
Configuration: Defined in deployments/verifiers/monzo.ts
Additional Payment Methods
The following payment methods are also available in the deployment scripts:- N26: European mobile bank
- Alipay: Chinese payment platform
- Luxon: Regional payment service
- Chime: US mobile banking
deploy/ directory for complete configuration details of these additional methods.
Verification Architecture
UnifiedPaymentVerifier
All payment methods use the UnifiedPaymentVerifier contract (contracts/unifiedVerifier/UnifiedPaymentVerifier.sol), which:
- Validates EIP-712 Attestations: Verifies cryptographically signed payment attestations
- Checks Intent Snapshots: Ensures payment details match the on-chain intent
- Prevents Double-Spending: Nullifies payment IDs in the NullifierRegistry
- Enforces Timestamp Buffers: Allows flexibility for L2 transaction timing (max 48 hours)
- Emits Payment Events: Records verified payment details for off-chain reconciliation
Payment Attestation Structure
Each payment proof contains:Payment Details
Adding New Payment Methods
To add a new payment method:- Create Verifier Configuration: Add a new file in
deployments/verifiers/ - Define Payment Method Hash: Use
calculatePaymentMethodHash("method-name") - Specify Supported Currencies: List all supported Currency enum values
- Create Deployment Script: Add script in
deploy/directory - Register with UnifiedVerifier: Call
addPaymentMethod()on UnifiedPaymentVerifier - Register with PaymentVerifierRegistry: Call
addPaymentMethod()with currencies
deployments/verifiers/venmo.ts:
Payment Method Registry
ThePaymentVerifierRegistry contract maintains:
- Mapping of payment method hashes to verifier contracts
- Supported currencies for each payment method
- Active/inactive status for each method
Security Considerations
Privacy: Payment IDs and payee details are hashed on-chain to preserve user privacy while still preventing double-spending.
Network Deployment Status
| Network | Payment Methods Deployed |
|---|---|
| Base | All supported methods |
| Base Sepolia | All supported methods (testnet) |
| Base Staging | All supported methods (staging) |
deployments/ directory for each network.