Setting Up Instant Debit Transfers

This guide describes the developer implementation for Instant Debit Transfers. Use this guide to build the necessary infrastructure that enables your account holders to link external debit cards and initiate transfers. For a high-level overview of the business value, key capabilities, and compliance requirements, see the Instant Debit Transfers guide.

Result of setting up Instant Debit Transfers

Account holders who link their external accounts can move funds between their Galileo account and an external debit card.

Prerequisites

To launch Instant Debit Transfers, you must establish a sponsor bank relationship with Sunrise Bank to handle daily settlement. Galileo is integrated with Sunrise Bank as the acquiring sponsor for the Visa Direct® network.
If Sunrise Bank is already your program's sponsor, Galileo configures your existing setup for Instant Debit Transfers.
If you use a different sponsor bank, you must open a settlement FBO account at Sunrise Bank. This account handles the daily settlement of funds with the card network.

To get started with bank certification and your technical implementation, contact Galileo.

Workflow

These entities participate in the funds transfer flow:

  • Account holder — Your customer, who has at least one account on your platform.
  • Your system — Your mobile app or website, which provides the interface to launch the account linking and funds transfer processes.
  • Galileo — The system that manages the ledger and API orchestration.
  • Card network — The infrastructure (such as Visa or Mastercard) that routes transaction messages between Galileo and the external bank. See the Networks guide for more information.
  • External bank — The financial institution that issued the account holder's external debit card.
  • Sponsor bank — The regulated financial institution (Sunrise Bank) that holds the Galileo accounts and settles the funds with the card networks.

Initiate an instant transfer

The end-to-end flow to transfer funds has three main steps: Link an external debit card, request to transfer funds, and money movement (pulling or pushing funds).

Link an external debit card

  1. The account holder requests to link their account in your provided interface.
  2. Your interface collects the external debit card information.
  3. You call the Create External Account Link endpoint with these values:
    • accountNo — 12-digit PRN of the Galileo account.
    • owner object: typeGALILEO.
    • details object:
      • typeCARD
      • cardNumber PAN of the external debit card
      • cardUseOwnerAddresstrue or false
      • cardAddress — Required when cardUseOwnerAddress: false
      • cvv — 3-4 digit verification code for the external card
      • cardExpirationDate — Expiration date for the external card in "YYYY-MM" format
      • validation object: typeCARD
  4. Galileo initiates the account link and returns HTTP 200 containing an externalAccountLinkId. At this stage, the bank account link is pending because it is awaiting verification.
  5. Galileo requests the account owner details from the card network to confirm the account holder's identity.
  6. The card network returns the account owner details to Galileo, and Galileo performs the verification.
  7. Galileo uses the external_account_status_change event to send you the result of the verification process (ACTIVE or FAILED).

Transfer request

This flow is entirely synchronous, based on an active link status:

  1. The account holder requests to fund their account.
  2. Your system calls the Create Transfer endpoint, with the externalAccountLinkId returned in the Create External Account Link endpoint.
  3. Galileo creates a transfer record starting the AFT or OCT asynchronous flow.
  4. Galileo sends the transfer_status_change message to your system with the status PENDING.
  5. Your system displays a confirmation screen to the account holder to inform them that the request has been submitted.

Scenario A: Pulling funds (AFT)

  1. Galileo initiates an AFT and sends a standard authorization request to the card network.
  2. The card network routes the request to debit the external bank.
  3. The external bank approves or rejects the AFT and sends the response back to the card network.
  4. The card network sends the approval or rejection back to Galileo.
  5. If the transaction is successful, Galileo credits the account holder's Galileo account and sends the BPMT: pmt event message.
  6. Galileo sends the transfer_status_change message to your system with the status COMPLETED or FAILED.

Scenario B: Pushing funds (OCT)

  1. Galileo debits the account holder's linked account and sends the BADJ: adj event message.
  2. Galileo initiates an OCT by sending a payment authorization request to the card network.
  3. The card network routes the request to credit the external bank.
  4. The external bank approves or rejects the OCT and sends the response back to the card network.
  5. The card network sends the approval or rejection back to Galileo.
  6. If the transaction fails, Galileo reverses the debit, credits the funds back to the user, and sends the BPMT: pmt event.
  7. Galileo sends a transfer_status_change message to your system with the status COMPLETED or FAILED.

The settlement process is the same as with card purchases, where funds are settled at the end of each day.

Events API

Galileo uses the Events API to send you real-time status updates about your external account links and instant debit transfers. You must configure your system to listen for two events during this integration: external_account_status_change and transfer_status_change .

external_account_status_change

During the account linking process, Galileo sends the EAST: external_account_status_change event any time the status of the external account link changes. Galileo first triggers this event when it generates a token and sends it to you in the Create External Account Link response. Subsequent status changes also trigger this event message.

The possible values for this status are:

  • PENDING — The link to the external account is being established.
  • ACTIVE — The link to the external account has been successfully set up.
  • FAILED — The link to the external account process failed.
  • DELETED — The link to the external account has been removed.

When status: FAILED, the status_reason field is populated with "Reason: AO Validation Failed". Failures typically occur due to one of the following conditions:

  • Insufficient funds — The external bank account has a balance lower than the requested transfer amount.
  • Invalid card — The card has expired or the CVV is incorrect.
  • Network decline — The card network or issuing bank blocked the transaction due to risk or fraud limits.

transfer_status_change

During the funds transfer process, Galileo sends the TRST: transfer_status_change event any time the status of the transfer changes. Galileo first triggers this event when the transfer status transitions to a new state, such as when a pending transfer completes, fails, or is canceled.

Depending on the transfer status and payment method, the available balance may or may not change. If the balance does change, Galileo sends the BPMT: pmt event for an AFT transaction, or the BADJ: adj event for an OCT transaction.

The possible values for this status are:

  • PENDING — The transaction is being processed.
  • COMPLETED — The funds have been transferred successfully.
  • FAILED — The transaction failed at the network or bank level.
  • CANCELED — The transaction was canceled before completion.

When status: FAILED, the status_reason field is populated. Failures typically occur for one of the following reasons:

  • Insufficient funds — The external bank account has a balance lower than the requested transfer amount.
  • Invalid card — The card has expired or the CVV is incorrect.
  • Network decline — The card network or issuing bank blocked the transaction due to risk or fraud limits.

Viewing Instant Debit Transfers

Use the Payment Hub API and Program API to retrieve details about instant debit transfers and display accurate balances and transaction histories to your account holders.

Payment Hub API

Use Get Transfer to retrieve information about an existing debit transfer that was initiated by Create Transfer.

Considerations

The following considerations are specific to CARD transfers:

  • accountNo must match the Galileo account associated with the card transfer.
  • transferId must be a valid transfer identifier created through Create Transfer.
  • direction always returns OUT, as funds move out from the Galileo account to the external debit card.
  • sourceAccount always returns type: GALILEO, indicating it's a Galileo-managed account. No additional details are provided for Galileo accounts in the response.
  • railInformation always returns null.
  • paymentMethod always returns CARD.

Program API

To retrieve transaction details for your user interface, use the following endpoints:

  • Get Transaction History — Use this to display a list of all posted transactions, including Visa Direct transfers.
  • Get Account Overview — Use this to view the account holder's current balance and recent activity.

When your system calls these endpoints, Galileo returns the trans_code and description. Use this data to identify and display the corresponding transaction details to your account holders.

Reconciliation

You can track and reconcile instant debit transfers using Raw Data Files (RDFs) and the Program API. Use these resources to identify successful transfers and reversals, and verify that your internal ledger matches Galileo's records.

Use the Posted Transactions RDF to reconcile settled transfers and identify originated AFTs and OCTs for Visa Direct®. The following codes apply to instant debit transfers:

trans_codeact_typeo_type
PMVFPM — PaymentVF — Visa Direct AFT A2A (pull)
ADvFAD — Adjustmentvf — Visa Direct AFT A2A (pull) - Reversal
ADVOAD — AdjustmentVO — Visa Direct OCT A2A (push)
ADvoAD — Adjustmentvo — Visa Direct OCT A2A (push) - Reversal

Daily reconciliation flow

Galileo and Sunrise Bank manage the network-level reconciliation so you can focus on your internal ledger.

  1. Galileo receives Visa settlement summary (VSS) files from the card network daily and sends them directly to Sunrise Bank.
  2. Sunrise Bank compares the VSS data against the activity in your Posted Transactions RDF to ensure the network totals match the ledger totals.
  3. Your finance team monitors the Posted Transactions RDF to ensure your internal system matches the activity recorded by Galileo.

You do not need to process VSS files or perform manual network-level reconciliation.



© Galileo Financial Technologies, LLC 2026    Privacy Disclosure

All documentation, including but not limited to text, graphics, images, and any other content, are the exclusive property of Galileo Financial Technologies, LLC and are protected by copyright laws. These materials may not be reproduced, distributed, transmitted, displayed, or otherwise used without the prior written permission of Galileo Financial Technologies, LLC. Any unauthorized use or reproduction of these materials are expressly prohibited.