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.
Activity | Communication |
---|---|
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 completed | Webhooks: - account.externalbank_transfer.withdrawal.completed -transaction.completed Email: external bank transfer completed _Note: completed amounts are itemized as amount and fees separately |
Withdrawal reversed | Webhook: - 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 completed | Webhook: - account.externalbank_transfer.deposit.completed - transaction.completed Email: external bank transfer completed _Note: completed amounts are itemized as amount and fees separately |
Deposit failed | Webhook: - account.externalbank_transfer.deposit.failed - transfer.completed Email: external bank transfer unsuccessful _Note: failed amount is combined amount + fees |
Deposit revered | Webhook: - 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
- Same-day
- 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"
Webhook | Description |
---|---|
External Bank Transfer Deposit Completed | An external bank account deposit has successfully completed |
External Bank Transfer Deposit failed | An external bank account deposit attempt has failed |
External Bank Transfer Deposit Pending | An external bank account deposit was set to pending status |
External Bank Transfer Deposit Reversed | An external bank account deposit was reversed |
Payload data type: "external_bank_transfer_withdrawal"
Webhook | Description |
---|---|
External Bank Withdrawal Completed | An external bank account withdrawal has successfully completed |
External Bank Withdrawal Failed | An external bank account withdrawal attempt has failed |
External Bank Withdrawal Pending | An external bank account withdrawal was set to pending status |
External Bank Withdrawal Reversed | An external bank account withdrawal was reversed |