This guide walks you through the steps to support FPS bank withdrawals using the REST API — from listing external accounts to monitoring for settlement.Documentation Index
Fetch the complete documentation index at: https://developer.uphold.com/llms.txt
Use this file to discover all available pages before exploring further.
Prerequisites
- The user has completed onboarding and has the required capabilities enabled.
Walkthrough
Check available rails
Before creating a quote, verify the FPS rail is available for withdrawals. Call List Rails forGBP to confirm the fps network has the withdraw feature.
withdraw feature is only present if it’s enabled for the user.
Select source account
FPS withdrawals can be sourced from any account. If the selected account is not in GBP, the balance will be converted at the time of the transaction using Uphold’s prevailing rate. Make sure the origin asset has the necessary features enabled. Call List accounts to retrieve the user’s accounts and let them pick the one to withdraw from.Select a bank account
FPS bank accounts are registered automatically as external accounts when a user makes their first FPS deposit — they cannot be added manually. If the user has no FPS-linked accounts yet, direct them to complete an FPS deposit first. Call List external accounts and filter forbank type and fps network to retrieve the user’s linked bank accounts available for withdrawal.
status: "ok" and "withdraw" in features.
Create a quote
To initiate the withdrawal, call Create quote with the origin as the user’s account and the destination as the selected FPS external account. Specify the amount and asset for the withdrawal.quote object with details about the withdrawal, including fees and expiration.
Quotes typically expire quickly. Prompt for user confirmation within the expiry window and requote if needed.
Confirm and create transaction
After the user confirms the withdrawal, call Create transaction with the quote ID to execute the transfer.account and the destination is the external-account representing the user’s bank. The transaction status is initially processing and updates to completed once the transfer settles.
Monitor for settlement
Prefer webhooks for real-time updates, or fall back to polling if webhooks are not feasible.- Webhook events (recommended):
- core.transaction.created
status: processing→ payout submitted to the bank network
- core.transaction.status-changed
status: completed→ funds delivered to the user’s bankstatus: failed→ irrecoverable error
- core.transaction.created
- Polling (fallback): Get transaction
Notify the user
Display an in-app confirmation when the transaction iscompleted, and send an email if applicable.
You now support FPS bank transfer withdrawals via the REST API.