Was this helpful?
Use this guide when you want to move pathUSD from Zone A into Zone B without changing the token. The route still touches the public chain, so the confirmation happens in stages rather than as a single balance update.
The flow uses swapAndDepositRouter on the public chain in same-token mode: withdraw from Zone A, skip the swap because the asset stays as pathUSD, then deposit that pathUSD into Zone B.
By the end of this guide you will have sent 25 pathUSD from Zone A into Zone B and confirmed the routed deposit.
This snippet assumes you already have a signed-in rootClient on the public chain plus zoneAClient, and the shared token, router, and portal constants used throughout the zone guides.
It shows the core routed send submission path; use the demo above when you want to watch the routed deposit settle into Zone B.
import { encodeAbiParameters, parseUnits } from 'viem'
import { Actions } from 'viem/tempo'
const transferAmount = parseUnits('25', 6)
await zoneAClient.zone.signAuthorizationToken()
const callbackData = encodeAbiParameters(
[
The cross-zone transfer path looks like this: the token leaves Zone A, briefly lands on the public chain, and is deposited back into Zone B as the same asset.
pathUSD from Zone A through ZoneOutbox.swapAndDepositRouter on Tempo.pathUSD.pathUSD into Zone B through ZonePortal.The target deposit still pays the normal portal deposit fee, so the amount that arrives in Zone B is the routed pathUSD minus that fee.