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_rate endpoint

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

PlatformCurrencies
Cash AppUSD
ChimeUSD
Mercado PagoARS, BRL, MXN
MonzoEUR, GBP
N26EUR
PayPalMultiple fiat pairs
RevolutEUR, GBP, USD
VenmoUSD
WiseMultiple fiat pairs
ZelleUSD

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

Offramp Demo

Watch the full video demo showing the complete offramp flow from DOT bridging to fiat withdrawal.