Skip to main content

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.
Push to Card is a premium feature available for Dwolla customers. Enabling Push to Card requires additional Dwolla approvals before getting started. Please contact Sales or your Relationship Manager for more information.

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 a bankUsageType field that distinguishes it from standard bank accounts:
Use this field to programmatically identify your settlement account when listing funding sources or building account selection interfaces.

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:
  1. Monitor: Regularly check your settlement account balance via the Dwolla Dashboard or API
  2. Set thresholds: Define minimum balance thresholds that trigger replenishment
  3. Replenish: Transfer funds into the settlement account before the balance runs low
  4. Repeat: Establish a regular cadence (daily, weekly) based on your payout volume
For high-volume payout operations, consider automating the top-up cycle. Implement balance monitoring that triggers automatic transfers when the settlement account falls below a defined threshold.

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. 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.
When the transfer is created successfully, it enters a pending status. The final outcome (processed or failed) is delivered via webhook.
Push to Card transfers cannot be cancelled. Unlike ACH transfers, which can be cancelled while in pending status, Push to Card payouts are irrevocable once initiated. The transfer is submitted to the card network immediately upon creation, and there is no window to cancel or recall the funds. Ensure all payout details are correct before creating the transfer.

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 a 201 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 a pending 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.
While the initial transfer creation is synchronous, the final approval or decline from the card network is communicated asynchronously through webhooks. This means your application should:
  1. Handle the 201 Created response to confirm the transfer was accepted
  2. Listen for card_transfer_completed/customer_card_transfer_completed or card_transfer_failed/customer_card_transfer_failed webhooks to determine the final outcome
  3. 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:
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.
Returned when the source funding source is not configured as a settlement account with bankUsageType: "card-network".
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 a failure 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 a failure link in the _links object:

Retrieve the Failure Reason

Use the failure 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:
To avoid 50003 errors, always check your settlement account balance before initiating a payout. See Checking the Balance for details.

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.

Next Steps

Now that you understand how Push to Card works, you’re ready to start building your integration.
Check out our Push to Card sample application for a complete working example of the add debit card and payout flow.

Adding a Debit Card

Transfer Processing Times