Offramp (USDC to Fiat)
Overview
Convert shielded USDC to fiat currency through the ZKP2P peer-to-peer protocol.
Architecture
- Source: Polkadot network (user sends DOT)
- Bridge: DOT → ETH (gas) and DOT → USDC (for offramp)
- Destination: Base network (for USDC offramp execution)
Flow
Step 1: Bridge DOT → ETH (for gas)
- Users send DOT to a deposit address
- Receive ETH on Base network for transaction fees
- Required if Base ETH balance < $1.5 equivalent
Step 2: Bridge DOT → USDC
- Users send DOT to receive USDC on Base
- Can use existing USDC balance on Base (skips this step)
- Rate estimation via
/exchange_rateendpoint
Step 3: Offramp USDC → Fiat
- Approve USDC spending on Base
- Create deposit with platform/payment details
- Order sent to ZKP2P orderbook for P2P fulfillment
Platforms
| Platform | Currencies |
|---|---|
| Cash App | USD |
| Chime | USD |
| Mercado Pago | ARS, BRL, MXN |
| Monzo | EUR, GBP |
| N26 | EUR |
| PayPal | Multiple fiat pairs |
| Revolut | EUR, GBP, USD |
| Venmo | USD |
| Wise | Multiple fiat pairs |
| Zelle | USD |
Supported Fiat Currencies
- ARS (Argentine Peso)
- AUD (Australian Dollar)
- CHF (Swiss Franc)
- EUR (Euro)
- GBP (British Pound)
- MXN (Mexican Peso)
- SGD (Singapore Dollar)
- THB (Thai Baht)
- USD (US Dollar)
Supported Assets
The offramp supports all pallet-assets on Polkadot and Kusama via the ERC20 precompile system.
Asset Precompile Addresses
Pallet assets use the precompile address format: 0x{assetIdHex}00000000000000000000000001200000
Common assets:
- USDC: Asset ID 1 (via precompile on Asset Hub)
- USDT: Asset ID varies by chain
- PSILV: Asset ID 50000867 on Paseo AssetHub
Asset Shielding
Use the @kusamashield/shielded-transfers library to shield assets before offramping:
// Shield PSILV on Paseo
const deposit = await shieldAssetPaseo(50000867, "100", wallet);
// Bridge to Base and offramp
// See integrate_sdk.md for withdrawal flow
Key Addresses
- USDC (Base):
0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 - Offramp Contract:
0x777777779d229cdF3110e9de47943791c26300Ef - Base Chain ID: 8453
Troubleshooting
- Insufficient gas: Bridge DOT → ETH first
- Approval failure: Ensure USDC allowance for offramp contract
- Order expired: Complete within 10 minutes
- Network mismatch: Auto-switches to Base if needed
Video Demo
Watch the full video demo showing the complete offramp flow from DOT bridging to fiat withdrawal.