Overview
Push to Card enables instant payouts directly to your customers’ debit cards, delivering funds in near real-time (often seconds or within 30 minutes) instead of days. Unlike traditional ACH transfers that require 1-4 business days to complete, Push to Card provides a faster, more convenient payout experience. Payouts are available 24/7 with near real-time confirmation of success or failure. This capability operates on a fundamentally different model than ACH. Understanding these differences is essential for successful integration, particularly the good funds model and synchronous processing concepts covered in this guide.Key Benefits
How Push to Card Differs from ACH
The most significant difference between Push to Card and ACH is speed. ACH transfers are processed in batches and typically take 1-4 business days to complete, whereas Push to Card delivers funds to a recipient’s card in real-time (often seconds or within 30 minutes). Push to Card also operates on a good funds model, meaning funds must be available in your settlement account before initiating a payout. This differs from ACH, where transfers can be initiated while funds are still in transit. The tradeoff is certainty: Push to Card payouts are final and irrevocable once completed. Finally, Push to Card is available 24/7/365, while ACH processing is limited to banking business days. This makes Push to Card ideal for time-sensitive disbursements like gig economy payouts, insurance claims, or loan disbursements.The Good Funds Model
Push to Card operates on a good funds model, which represents a fundamental shift from how ACH transfers work. Understanding this model is critical for implementing Push to Card correctly.Core Concept
With ACH, you can initiate a transfer before funds have fully settled. The network processes transactions in batches, and returns may occur days later if there are insufficient funds or other issues. Push to Card works differently. Because card payouts are irrevocable and cannot be recalled once sent, the system requires that funds be fully settled and available before a transfer can be initiated. There is no “float” period.The Rule: Money must be settled and available in your settlement account before a Push to Card transfer can be initiated. You cannot initiate a payout with funds that are still pending.
The Flow: Funding Before Disbursement
The good funds model enforces a strict sequence:
This model ensures that every Push to Card payout is backed by real, available funds, which removes the risk of overdrafts or failed transactions due to insufficient funds in transit.
The Settlement Account
To support the good funds model, Push to Card requires a dedicated settlement account. This is a custodial bank account at a partner bank (Cross River Bank) used exclusively for card payouts.What Is a Settlement Account?
The settlement account serves as the funding source for all Push to Card transfers. Before you can send a payout to a debit card, funds must be present and available (settled) in this account. Think of it as a dedicated “wallet” for card payouts that you pre-fund as needed.Configuring Your Settlement Account
Setting up your settlement account is a one-time configuration performed in the Dwolla Dashboard that connects your Dwolla account to the card network infrastructure:1
Obtain Settlement Account Details from Checkout.com
Retrieve the account number and routing number for your CRB settlement account from the Checkout.com Dashboard. These credentials are provided by Checkout.com as part of your Push to Card onboarding.
2
Configure in the Dwolla Dashboard
In the Dwolla Dashboard, create your settlement account funding source using the CRB account details from Checkout.com, and add your Checkout.com API credentials (public key and secret key) to establish the connection.
3
Verify the Configuration
Retrieve the funding source from the Dwolla API to confirm it includes the
bankUsageType: "card-network" indicator, which confirms the account is properly configured for Push to Card.Identifying the Settlement Account
When you retrieve the settlement account funding source from the API, it includes abankUsageType field that distinguishes it from standard bank accounts:
Funding Your Settlement Account
Managing your settlement account requires an ongoing operational workflow to ensure funds are always available for payouts. We recommend establishing a regular top-up cycle that includes monitoring, replenishment, and threshold-based alerts.The Top-Up Cycle
The top-up cycle is a best practice for maintaining sufficient funds in your settlement account:- Monitor: Regularly check your settlement account balance via the Dwolla Dashboard or API
- Set thresholds: Define minimum balance thresholds that trigger replenishment
- Replenish: Transfer funds into the settlement account before the balance runs low
- Repeat: Establish a regular cadence (daily, weekly) based on your payout volume
Checking the Balance
Before initiating a payout, check the available balance in your settlement account. You can do this via the Dwolla Dashboard or programmatically through the API.Adding Funds (Top-Up)
When additional funds are needed, transfer money into the settlement account from your Master Balance or an external bank account. You can use standard ACH, Same-Day ACH, or RTP based on how quickly you need the funds available.RTP transfers to the settlement account require a pre-funded Dwolla Balance as the source. RTP cannot be initiated directly from an external bank account.
Initiating a Push to Card Payout
When you’re ready to send funds to a customer’s debit card, follow this workflow to ensure successful payouts.Recommended Payout Flow
Before creating a transfer, verify that sufficient funds are available in your settlement account: This pre-flight balance check prevents failed transfers due to insufficient funds and allows you to handle shortages gracefully. You can return an error to the calling application, alert your operations team, or automatically initiate a top-up.Creating the Transfer
Once funds are available in the settlement account, initiate the Push to Card transfer. The settlement account serves as the source, and the Customer’s card funding source serves as the destination.pending status. The final outcome (processed or failed) is delivered via webhook.
API Behavior: Transfer Lifecycle
Understanding the Push to Card transfer lifecycle helps you build robust integrations that handle all possible outcomes.ACH Behavior (Comparison)
With ACH transfers, the API returns a201 Created response when the transfer is accepted for processing. The transfer enters a pending status, and actual success or failure is communicated days later via webhooks when the bank processes the transaction.
Push to Card Behavior
Push to Card transfers are created synchronously with apending status. The transfer is then submitted to the card network, and the final outcome (processed or failed) is delivered via webhook. This typically occurs within minutes rather than days.
- Handle the
201 Createdresponse to confirm the transfer was accepted - Listen for
card_transfer_completed/customer_card_transfer_completedorcard_transfer_failed/customer_card_transfer_failedwebhooks to determine the final outcome - Update your UI or notify users based on the webhook status
Error Handling
Validation errors and some failure scenarios are returned immediately during transfer creation. Common errors include:Card Used as Source
Card Used as Source
Returned when attempting to use a card funding source as the source of a transfer. Cards can only receive funds via Push to Card; they cannot be debited.
Card payouts require the source funding source to have
bankUsageType: "card-network". This indicates it is a properly configured settlement account. See The Settlement Account for configuration details.Invalid Source
Invalid Source
Returned when the source funding source is not configured as a settlement account with
bankUsageType: "card-network".Invalid Destination
Invalid Destination
Returned when the destination funding source has been removed or does not exist.
Card network declines (e.g., card closed, not eligible for credits) are communicated via the
card_transfer_failed webhook rather than as immediate HTTP errors. Always implement webhook handling to capture these outcomes.Retrieving Transfer Failure Details
When a Push to Card transfer fails after creation, the transfer response includes afailure link. Follow this link to retrieve the transfer failure reason and get detailed information about why the payout failed.
Failed Transfer Response
When you retrieve a failed transfer, the response includes afailure link in the _links object:
Retrieve the Failure Reason
Use thefailure link from the transfer response to get the specific failure code and description:
Push to Card Failure Codes
The following failure codes are specific to Push to Card transfers:Webhook Events
Push to Card introduces new webhook events specifically for card funding sources and card transfers. Subscribe to these events to track the lifecycle of cards and payouts in your application.Card Funding Source Events
Card Transfer Events
Card transfers emit events at the account level and the customer level, depending on the parties involved in the transfer.The
card_transfer_completed and card_transfer_failed webhooks are essential for determining the final outcome of a payout. Always implement handlers for these events to update your application state and notify users.