Prerequisites
To generate payment portal URLs, you’ll need your organisational API credentials. See Authentication Guide.Generating payment portal URLs
Use the Get Balance Withdrawal URL endpoint to generate a URL for users to access their payments portal. Response:Two-factor authentication
Whenenforce_two_factor_auth is enabled, users must verify their email address before accessing the portal.
Currently supported verification methods: Email only. Note that this requires email to be supplied while onboarding the site.
We send a verification code to the user’s registered email address. They must enter this code to proceed.
Redirect handling
Theredirect_uri parameter specifies where users are sent after completing their action in the payments portal.
Implementation depends on how users open the balance page URL:
- If opening in a browser external to your app,
redirect_urishould be a deep link back to your app - If it’s in a modal browser pop-up within your app, it should be a ‘magic string’ which allows them to exit the modal
When to hide transactions
Thehide_transactions parameter is useful in two scenarios:
- One-off payment flow: When you want a focused experience where users simply withdraw and return, without browsing their full history
- Avoiding duplication: When you already display transaction history in your own app and don’t want users seeing the same information twice
Auto-redirect behaviour
Whenauto_redirect_to_setup is true:
- If the user has no bank account linked, they skip the balance page entirely and go straight into the bank account setup flow
- If the user already has a bank account, they see the normal balance page
Example: Python
JWT token structure
The generated URL contains a JWT with the following claims:Recommended integration pattern
For the best user experience, we recommend following this pattern:-
Call the Get Balance Info endpoint, which returns:
- The user’s current balance
- The minimum withdrawal threshold
- Other relevant account information
-
Use that info to control UI state:
- Show/enable a “withdraw” button if balance is above the minimum threshold
- Grey out or hide the button if below the threshold
- Display helpful messaging about why withdrawal isn’t available
- Call Get Withdrawal URL when the user clicks the enabled button

