How to Bridge USDC from Base to Tempo and Swap to PathUSD for MPP
Need PathUSD to register domains or complete MPP transactions on HeadlessDomains? You'll first need to bridge USDC from Base to the Tempo chain (Chain ID 4217) and then swap it for PathUSD on the built-in Tempo DEX.
This guide combines both steps with exact contract addresses, commands, and code examples you can use today.
Why Bridge and Swap?
USDC on Base and USDC on Tempo are separate tokens. PathUSD (the native stablecoin for MPP payments) only exists on Tempo. Bridging + swapping is the fastest way to get usable PathUSD.
Step 1: Bridge USDC from Base to Tempo
Tempo is an EVM-compatible chain, so your wallet address stays the same across networks.
Find Your Tempo Wallet Address
Run this MPPX command:
mppx account view <account-name> --rpc-url https://rpc.tempo.xyz
Example address: 0x01898d0F904F6e427dbcf2B0b499000ACA0b5E61
Perform the Bridge
- Visit the official bridge at app.tempo.xyz
- Select Base → Tempo
- Choose asset: USDC
- Enter your Tempo wallet address and the amount
- Confirm the transaction on Base
Verify USDC Arrival on Tempo
Tempo USDC contract: 0x20C000000000000000000000b9537d11c60E8b50 (6 decimals)
Check balance with:
mppx account view <account> --rpc-url https://rpc.tempo.xyz
or query balanceOf via any EVM explorer or eth_call.
Step 2: Swap USDC → PathUSD on Tempo DEX
Token Addresses on Tempo Mainnet:
- PathUSD: 0x20c0000000000000000000000000000000000000 (6 decimals)
- USDC: 0x20C000000000000000000000b9537d11c60E8b50 (6 decimals)
- DEX Router: 0xdec0000000000000000000000000000000000000
Option A: Using viem/tempo (Recommended for Developers)
import { Actions } from 'viem/tempo';
import { createWalletClient, createPublicClient, http, parseAbi } from 'viem';
import { tempo } from 'viem/chains';
import { privateKeyToAccount } from 'viem/accounts';
const pathUsd = '0x20c0000000000000000000000000000000000000';
const usdc = '0x20C000000000000000000000b9537d11c60E8b50';
const DEX = '0xdec0000000000000000000000000000000000000';
// 1. Get quote
const quote = await Actions.dex.getSellQuote(publicClient, {
tokenIn: usdc,
tokenOut: pathUsd,
amountIn: BigInt(5000000) // 5 USDC
});
// 2. Approve DEX to spend USDC
const approveAbi = parseAbi(['function approve(address spender, uint256 amount) returns (bool)']);
await walletClient.writeContract({
address: usdc,
abi: approveAbi,
functionName: 'approve',
args: [DEX, amountToSwap]
});
// 3. Execute swap
const result = await Actions.dex.sellSync(walletClient, {
tokenIn: usdc,
tokenOut: pathUsd,
amountIn: BigInt(5019190),
minAmountOut: BigInt(4900000) // slippage protection
});
console.log('Swap TX:', result.receipt.transactionHash);
Option B: Quick Check with MPPX CLI
Use mppx account view <account> --rpc-url https://rpc.tempo.xyz to verify balances before and after swapping.
Current Swap Rate (as of April 2026)
Swaps trade at approximately 1:1 with a small DEX fee. Always check the live quote and set appropriate minAmountOut for slippage protection.
Next Steps After Swapping
- Use PathUSD directly for HeadlessDomains domain registrations
- Pay MPP transaction fees
- Monitor your balances with MPPX or Tempo explorer