Summary
When building a stablecoin swap dApp using Circle AppKit v1.5.0 on Arc Testnet (Chain ID 5042002), kit.estimateSwap() and kit.swap() always return a fatal routing error for the EURC → USDC direction.
Error
KitError: Stablecoin Service createSwap failed: Route or resource not found. Details: No route available
name: INPUT_UNSUPPORTED_ROUTE (code 1003)
recoverability: FATAL
cause.trace.responseBody: { code: 331001, message: "No route available" }
Affected Directions
| Direction |
Result |
| USDC → EURC |
✅ Works (intermittently — also returns 331001 when testnet routing is temporarily down) |
| EURC → USDC |
❌ Always fails with code 331001 |
Reproduction
// Always fails with 331001:
await kit.estimateSwap({ fromToken: "EURC", toToken: "USDC", amount: "5" });
// Works most of the time:
await kit.estimateSwap({ fromToken: "USDC", toToken: "EURC", amount: "5" });
Root Cause
estimateSwap() internally calls Circle’s createSwap API, which routes through the lifi/Fly DEX integration. There appears to be no liquidity path seeded for EURC → USDC on Arc Testnet’s routing layer.
Impact
Any dApp offering bidirectional stablecoin swaps on Arc Testnet is broken for the EURC → USDC direction. Users who hold EURC cannot swap back to USDC, which creates a one-way liquidity trap in testnet UIs.
Suggested Fix / Documentation
Either:
- Seed routing liquidity for EURC → USDC on the Arc Testnet lifi/Fly DEX layer
- Or document which swap directions are currently supported on testnet so developers can disable unsupported directions in their UIs and avoid confusing users
For now, a safe workaround is to catch error code 1003 / Circle response code 331001 and surface a clear message:
try {
await kit.estimateSwap(...);
} catch (err) {
if (err.code === 1003 || err.cause?.trace?.responseBody?.code === 331001) {
// No route — disable this swap direction in UI
}
}
Environment
- Circle AppKit v1.5.0
- Arc Testnet Chain ID: 5042002
- RPC:
https://rpc.testnet.arc.network
- USDC:
0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359 (6 decimals)
- EURC:
0x89B5... (6 decimals)
Summary
When building a stablecoin swap dApp using Circle AppKit v1.5.0 on Arc Testnet (Chain ID 5042002),
kit.estimateSwap()andkit.swap()always return a fatal routing error for the EURC → USDC direction.Error
Affected Directions
Reproduction
Root Cause
estimateSwap()internally calls Circle’screateSwapAPI, which routes through the lifi/Fly DEX integration. There appears to be no liquidity path seeded for EURC → USDC on Arc Testnet’s routing layer.Impact
Any dApp offering bidirectional stablecoin swaps on Arc Testnet is broken for the EURC → USDC direction. Users who hold EURC cannot swap back to USDC, which creates a one-way liquidity trap in testnet UIs.
Suggested Fix / Documentation
Either:
For now, a safe workaround is to catch error code
1003/ Circle response code331001and surface a clear message:Environment
https://rpc.testnet.arc.network0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359(6 decimals)0x89B5...(6 decimals)