Bill Switch / Deposit Switch
Important
Bill Switch and Deposit Switch are only available to Credit Builder Card users.
Upward has partnered with Atomic to automatically Switch Bill Pay and deposit functionality to your Consumer’s Payment Cards. In this updated flow, you will first request either a Bill Switch or Deposit Switch token from the Upward API platform, and then use that Token to initialize the Atomic SDK. Once a connection is successful, you will receive regular updates/webhooks directly from Atomic as per their documentation.
Requesting a Bill Switch Token
Request a Bill Switch Token by calling POST /v2/payment-cards/{payment_card_id}/bill-switch/token. You will use this token to initialize the Atomic client-side SDK.
Response:
You can view more details about the Deposit Switch endpoint here
Requesting a Deposit Switch Token
Request a Deposit Switch Token by calling POST /v2/payment-cards/{payment_card_id}/deposit-switch/token. You will use this token to initialize the Atomic client-side SDK.
Response:
You can view more details about the Deposit Switch endpoint here
Atomic Financial
For more on the Atomic Switch Product, view the documentation here.
Integration Steps
Once you have obtained the token from Upwardli’s bill-switch or deposit-switch endpoint, follow these steps to complete the integration:
Step 1: Initialize the Atomic Transact SDK
Use the public_token received from Upwardli to initialize the Atomic Transact SDK. This will create a session and validate the token.
Important: Configuration Differences
Bill Switch requires:
scope: "pay-link"tasks: [{ operation: "switch" }]
Direct Deposit Switch requires:
scope: "user-link"tasks: [{ operation: "deposit" }]
Bill Switch - Web Implementation Example:
Direct Deposit Switch - Web Implementation Example:
Bill Switch - React Native Example:
Direct Deposit Switch - React Native Example:
Step 2: Verify Token Validity
When the SDK initializes, it will automatically validate the token. Monitor the onError callback to catch any token validation errors:
Step 3: Handle Payment Card Data Request
Atomic will request the payment card details through the onDataRequest callback. You need to ensure your implementation can provide this data when requested.
Important: You must specify the deferredPaymentMethodStrategy parameter as either 'sdk' or 'api' depending on how you want to provide the card data.
SDK Strategy Example:
API Strategy Example:
If you prefer to send card data via the Atomic API instead of through the SDK:
Step 4: Confirm Event Delivery
Atomic will send webhook events for transaction updates. Ensure your webhook endpoint is configured to receive these events.
Key Events to Monitor:
- task-status-update - Fired when a task status changes (processing, completed, failed)
- auth-status-update - Fired when authentication status changes
- task-completed - Fired when a switch task completes successfully
- task-failed - Fired when a task fails
Webhook Configuration:
Configure your webhook endpoint in the Atomic Console. Your endpoint should accept POST requests with the following structure:
Example Webhook Handler:
Testing Your Integration
Atomic provides test credentials to simulate various scenarios. You can use these in development:
Successful Flow:
- Username:
test-good - Password: Any password
- Description: Tests a successful operation
MFA Flow:
- Username:
test-code-mfa - Password: Any password
- Description: Tests authentication with device code MFA
Failure Scenarios:
- Username:
test-bad- Tests unsuccessful authentication - Username:
test-system-unavailable- Tests third-party system outage - Username:
test-failure- Tests post-authentication failure
For a complete list of test credentials and scenarios, refer to the Atomic SDK Testing Documentation.
Complete Integration Checklist
- Request token from Upwardli’s
/bill-switch/tokenor/deposit-switch/tokenendpoint - Initialize Atomic Transact SDK with the received
public_token - Verify token validity through error callbacks
- Implement
onDataRequestcallback to provide card details via SDK or API - Configure webhook endpoint in Atomic Console
- Verify webhook events are being received for task status updates
- Test with Atomic’s test credentials
- Handle error scenarios appropriately

