Skip to content

Stablecoin to Stablecoin

This guide walks you through how to initiate a stablecoin-to-stablecoin wire using FSCO. These transfers are typically used to bridge assets between stablecoin types (e.g. PHPX → USDC) or chains.

This flow typically completes in seconds to minutes depending on network conditions and liquidity.

  • You must have a verified FSCO wallet (walletId) with sufficient balance of the source stablecoin.
  • Your API key must include wire:write and wallet:read permissions.
  • Destination wallet must support the selected stablecoin and chain.
create-wire.sh
curl -X POST https://api.fsco.io/v2/wires \
-H "Authorization: Bearer $FSCO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"sourceType": "stablecoin",
"sourceCurrency": "USDC",
"sourceAmount": "1000",
"sourceDetails": {
"walletId": "123e4567-e89b-12d3-a456-426614174000"
},
"destinationType": "stablecoin",
"destinationCurrency": "PHPX",
"destinationDetails": {
"walletId": "321e4567-e89b-12d3-a456-426614174999"
}
}'

Response:

response.json
{
"id": "9ba1f880-d23e-4c98-b688-60d63fb1cf30",
"status": "pending",
"type": "transfer",
"sourceType": "stablecoin",
"sourceCurrency": "USDC",
"sourceAmount": "1000",
"sourceDetails": {
"walletId": "123e4567-e89b-12d3-a456-426614174000"
},
"destinationType": "stablecoin",
"destinationCurrency": "PHPX",
"destinationAmount": null,
"destinationDetails": {
"walletId": "321e4567-e89b-12d3-a456-426614174999"
},
"createdAt": "2025-05-05T12:34:56.000Z",
"updatedAt": null,
"completedAt": null,
"txHashes": [],
"externalReferences": {},
"reference": null,
"notes": null
}

This creates the wire. The user must now approve a stablecoin transfer from their wallet to FSCO.

Once the stablecoins are received, FSCO will perform the conversion and send the destination stablecoin to the target wallet.

After the user approves the stablecoin transfer:

  • FSCO receives the stablecoins into its smart contract or custody wallet.
  • FSCO matches the transfer to the wire.
  • The source stablecoin is converted to the destination stablecoin.
  • FSCO transfers the destination stablecoin to the provided walletId or address.
  • The wire status is updated and a wire.completed webhook is emitted (if configured).

To check the wire status at any time:

create-wire.sh
curl -X GET https://api.fsco.io/v2/wires/<wireId> \
-H "Authorization: Bearer $FSCO_API_KEY"

Response:

response.json
{
"id": "9ba1f880-d23e-4c98-b688-60d63fb1cf30",
"status": "pending",
"type": "transfer",
"sourceType": "stablecoin",
"sourceCurrency": "USDC",
"sourceAmount": "1000",
"sourceDetails": {
"walletId": "123e4567-e89b-12d3-a456-426614174000"
},
"destinationType": "stablecoin",
"destinationCurrency": "PHPX",
"destinationAmount": null,
"destinationDetails": {
"walletId": "321e4567-e89b-12d3-a456-426614174999"
},
"createdAt": "2025-05-05T12:34:56.000Z",
"updatedAt": null,
"completedAt": null,
"txHashes": [],
"externalReferences": {},
"reference": null,
"notes": null
}

The status field will reflect the current state (e.g. processing, completed, failed).

Once the conversion and transfer are complete:

  • The destination wallet receives the stablecoins.
  • The wire is marked as completed.
  • A wire.completed webhook is triggered with full transaction details.
  • Use the wireId returned from creation to fetch status, generate receipts, or view history.
  • Wallets must support the target stablecoin and be active on supported chains.
  • Use webhooks for real-time updates, or poll the status endpoint if needed.
  • Routing is automatically optimized based on liquidity and network availability.