Import ACH data
When migrating ACH data from your previous processor, we can import the ACH records into Stripe using the default bank account (ba_
) object or a payment method (pm_
) object representation.
Before the first charge with ACH direct debit, a business must get permission from the customer to debit their bank account by presenting a mandate to the customer. To import ACH records as pm_
objects, we need your confirmation that you hold mandates for the bank accounts you’re importing. If you’re unsure, consult with your previous payment service provider. If you don’t hold the mandates, we import the ACH records with the ba_
object representation.
After determining mandate status for all, some, or none of the bank accounts, inform us. Based on your response, we’ll then provide instructions on the next steps you need to take.
ACH validation status![](https://b.stripecdn.com/docs-statics-srv/assets/fcc3a1c24df6fcffface6110ca4963de.svg)
You must confirm the WEB debit accounts’ validation status by choosing one of the options below:
- All WEB debit accounts were debited before the Nacha WEB Debit Account Validation Rule took effect on March 19, 2022.
- All WEB debit accounts have been validated according to Nacha’s Web Debit Account Validation rule by your previous payment service provider.
- Some WEB debit accounts were debited before Nacha’s WEB Debit Account Validation Rule became effective on March 19, 2022, or complied with the rule through your previous provider. You must provide a list of validated and non-validated records.
- None of the WEB debit accounts were processed before the effective date of the Nacha WEB Debit Account Validation Rule on March 19, 2022, nor successfully validated by your previous provider. Stripe must validate these accounts. (An instant verification fee applies per bank account validation.)
How it works![](https://b.stripecdn.com/docs-statics-srv/assets/fcc3a1c24df6fcffface6110ca4963de.svg)
![Shows the ACH record import process](https://b.stripecdn.com/docs-statics-srv/assets/dm-ach.6b9d5e4b6efa67df8e0fa76331a1e904.jpg)
ACH emails![](https://b.stripecdn.com/docs-statics-srv/assets/fcc3a1c24df6fcffface6110ca4963de.svg)
In our intake form, choose whether to import the mandates as bank account (ba_
) or payment method (pm_
) objects.
- If you choose bank accounts, we don’t notify your customers about the migration.
- If you choose payment methods and provide customer emails, we’ll automatically send your customers an email to confirm the mandate in accordance with Nacha requirements after the import. Your customers don’t need to do anything after receiving the emails.
ACH file guidance![](https://b.stripecdn.com/docs-statics-srv/assets/fcc3a1c24df6fcffface6110ca4963de.svg)
- A processor can provide a number of different fields.
- We advise your processor to provide a full export of all customer and payment method data to Stripe.
- Stripe can filter out any unnecessary fields from the previous processor’s data as needed.
- Stripe can merge multiple received files if either the old customer ID or the old source ID is present in both files.
File formatting requirements![](https://b.stripecdn.com/docs-statics-srv/assets/fcc3a1c24df6fcffface6110ca4963de.svg)
Export data files must meet the following data standards for us to proceed with an import:
- The file must be in CSV format.
- The file must be UTF-8 encoded.
- Delimit rows by a single newline character
\n
(not\r\n
). - Delimit columns by
,
- You must wrap all fields containing commas in double quotes
"
. We recommend wrapping all fields in double quotes. - Leave empty fields entirely empty (no character in between delimiters). You must not denote a missing field with
NULL
,N/A
, or any other value. - Escape any double quotes that are part of the content with another double quote per the CSV RFC. For example:
"``William
""``Bard of Avon``""
Shakespeare``"
- Fields can’t contain newline characters (
\r
or\n
) within a field. Example of what to avoid:101 1st Ave\nApt 1
- All rows must have the same number of columns.
- Columns support any order.
- You must encrypt sensitive data files with our PGP key before submitting through SFTP.
ACH data fields![](https://b.stripecdn.com/docs-statics-srv/assets/fcc3a1c24df6fcffface6110ca4963de.svg)
Field | Required | Additional info |
---|---|---|
Old customer ID | Required | We create a customer ID for each unique old customer ID provided. |
Routing number | Required | Must be 9 digits in length and include leading zeros. |
Account number | Required | Most bank account numbers have between 8 and 12 digits, though they can range from 5 to 17 digits. |
Account holder type | Required | Specifies individual or company as the type of business. |
Account type | Required | Specifies a checking or savings account. Unspecified account are imported as checking . |
Account name | Required | First and last name of account holder or company name. |
Optional* | Additional metadata *If importing ACH records as payment methods and providing customer emails, we’ll automatically send your customers an email to confirm the mandate in accordance with Nacha requirements after the import. Your customers don’t need to do anything after receiving the emails. | |
City | Optional | Additional metadata |
Postal | Optional | Additional metadata |
Country | Optional | Provide in ISO 2 letter country code format. |
Phone | Optional | Additional metadata |
Address line 1 | Optional | Additional metadata |
State | Optional | Additional metadata |
Stripe customer ID | Optional | Additional metadata |
Old source ID | Optional | Additional metadata |
Customer/ACH Metadata | Optional | Any additional metadata |