External Bank Transfers

Introduction

The External Bank Transfers feature provides partners with a way to enable their end users to transfer funds between their personal external bank accounts (such as Chase, Bank of America) and their Netspend accounts via ACH transfer.

The diagram below shows paths for a possible scenario where the partner allows an end user to withdraw funds from one personal external bank and deposit to another. It is presumed that steps had been taken already to link the two external banks to the customer’s Netspend account.

External Bank Transfers

Enabling Transfers

The following criteria need to be met for an account to be able to use external bank transfers:

  • Partner has worked with Netspend to:
    • Set up to external bank transfer support for their accounts
    • Establish understanding about how end user consent will be confirmed
  • The primary owner on the account has passed any eligibility activation requirements:
    • KYC (know your customer) approved
    • Email address is on file with Netspend
    • SSN is on file with Netspend
    • Bank transfer terms are accepted
    • eSign authorization is accepted
    • Bank transfers are permitted by their local state regulations
  • The external bank is supported and has been linked to the account:
    • US-based financial institution (though not all are supported)
    • A personal bank account and not a commercial or business bank account.
    • Must be only in the owner’s name and not a joint account.

Additional notes regarding account holder agreements:

  • Netspend has built-in risk controls and business rules for the external bank transfer service that can be updated at Netspend's discretion. Service terms & conditions can be updated and end users need to have access to and be able to agree to the most recent version.
  • Must be available within the partner’s application and accessible to the end user to comply with NACHA and similar compliance guidelines.
  • Must authorize Netspend to make the one-time transfer between their accounts. Sample language:
    • “By clicking Confirm Transfer, you authorize Netspend to make a one-time ACH transfer from [Account 1234] to [External Account 5678]. Once you submit this transfer, the transaction cannot be canceled. Fraud monitoring and availability of funds may delay or cancel your transfer.”

Linking an External Bank to an Account

Prior to any transfers, the end user needs to authorize and link their personal external bank account(s) to their Netspend account. Netspend leverages Plaid’s “Link” product to capture bank transfer authorization, and provides convenience methods in the Netspend SDK to launch Plaid “Link” entry screens.

Here is a sequence of screenshots showing what an end user might see in the authorization flow while, say, adding their external Bank of America bank account to their Netspend account. .

For more information about Plaid’s “Link” product, see https://plaid.com/docs/link/

External Bank Transfer State Transitions

The diagram below shows the states a transfer can be in and how transitions between those states may occur.

Communications about Transfers

When there is external bank transfer activity in the Netspend system, notification webhooks are sent to the partner and emails are sent to account holders.

ActivityCommunication
Withdrawal Initiated(none)
Withdrawal executed (and pending)Webhooks:
- account.externalbank_transfer.withdrawal.pending
-transaction.pended
Email: external bank transfer initiated
_Note: pending amount is combined amount + fees
Withdrawal completedWebhooks:
- account.externalbank_transfer.withdrawal.completed
-transaction.completed
Email: external bank transfer completed
_Note: completed amounts are itemized as amount and fees separately
Withdrawal reversedWebhook:
- account.externalbank_transfer.withdrawal.reversed
- transfer.completed
Email: external bank transfer returned
_Note: reversed amount is the transfer amount only (fees are not refunded)
Deposit initiated(none)
Deposit executed (and pending)Webhooks:
- account.externalbank_transfer.deposit.pending
- transaction.pended
Email: external bank transfer initiated
_Note: pending amount is combined amount + fees
Deposit completedWebhook:
- account.externalbank_transfer.deposit.completed
- transaction.completed
Email: external bank transfer completed
_Note: completed amounts are itemized as amount and fees separately
Deposit failedWebhook:
- account.externalbank_transfer.deposit.failed
- transfer.completed
Email: external bank transfer unsuccessful
_Note: failed amount is combined amount + fees
Deposit reveredWebhook:
- account.externalbank_transfer.deposit.reversed
- transfer.completed
Email: external bank transfer returned
_Note: reversed amount is the transfer amount only (fees are not refunded)

For more information on webhooks, see Webhook.

Additional Considerations

Some additional considerations around external bank transfers.

  • Service levels, which come with their own configurable fees, are:
    • Same-day
      • If submitted before 1PM ET, funds are available the same business day
      • If submitted after 1PM ET, funds are available the next business day
    • Standard: processing usually completes within 3 business days
  • Completed transfers can be reversed, but reversals can fail if attempted while a transfer is pending, in which case reconciling funds becomes a manual operation.
  • A single transfer may result in multiple transaction records, depending upon the path the transfer took, and some of the transaction records may be child to a top level parent transaction. For example, for a reversed transfer, there may be 3 transactions:
    • Parent, top level, original transfer transaction
    • Child transaction for the non-refundable transfer fee
    • Child transaction for the amount refunded
  • Transfer limits are calculated by choosing the lesser of two values:
    • The remaining transfer limit on the Netspend account based on configuration and known pending transactions
    • The available balance in the external bank account

Sample Flows

Linking an External Bank to an Account

It’s important to note that there are no Netspend API endpoint interactions needed to link an external bank account to a Netspend account, but the partner does need to integrate with the Netspend SDK in order to establish the link.

The illustration below shows a potential flow for linking a bank, which involves invoking the Plaid Link micro app to lead the user, here Sue, through the process. This flow also applies to and is similar to the steps for re-linking an external bank, should re-authentication be required at some point; a “bank_account_relinking_is_required” error during a transfer request will indicate the need.

Withdrawing Funds from External Bank

Here, Bob is using a newly linked external bank to fund his Netspend account.

Webhooks

Payload data type: "external_bank_deposit"

WebhookDescription
External Bank Transfer Deposit CompletedAn external bank account deposit has successfully completed
External Bank Transfer Deposit failedAn external bank account deposit attempt has failed
External Bank Transfer Deposit PendingAn external bank account deposit was set to pending status
External Bank Transfer Deposit ReversedAn external bank account deposit was reversed

Payload data type: "external_bank_transfer_withdrawal"

WebhookDescription
External Bank Withdrawal CompletedAn external bank account withdrawal has successfully completed
External Bank Withdrawal FailedAn external bank account withdrawal attempt has failed
External Bank Withdrawal PendingAn external bank account withdrawal was set to pending status
External Bank Withdrawal ReversedAn external bank account withdrawal was reversed