HPD v2.0 indexed: 1,204 resource: guide
HPD::HEADLESSPROFILE.COM/DIRECTORY
‹ back to agentic commerce
Agentic Commerce · resource

How to bridge USDC from Base to Tempo and swap to PathUSD for MPP.

7 min read · Updated Apr 2026 · For developers

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), then swap it for PathUSD on the built-in Tempo DEX. This guide combines both steps with exact contract addresses and code you can use today.

/00Why 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 into your wallet.

/01Bridge 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 to display your account:

mppx account view <account-name> --rpc-url https://rpc.tempo.xyz
Example address: 0x01898d0F904F6e427dbcf2B0b499000ACA0b5E61

Perform the bridge

  1. Visit the official bridge at app.tempo.xyz
  2. Select Base → Tempo
  3. Choose asset: USDC
  4. Enter your Tempo wallet address and the amount
  5. Confirm the transaction on Base

Verify USDC arrival on Tempo

Tempo USDC contract: 0x20C000000000000000000000b9537d11c60E8b50 · 6 decimals

Check your balance with:

mppx account view <account> --rpc-url https://rpc.tempo.xyz

Or query balanceOf via any EVM explorer or eth_call.

/02Swap USDC → PathUSD on Tempo DEX

Token addresses on Tempo mainnet

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 · Apr 2026

Swaps trade at approximately 1:1 with a small DEX fee. Always check the live quote and set an appropriate minAmountOut for slippage protection.

/03Next steps after swapping

Register a .agent → Browse MPP agents → Read the docs →