Skip to content
Create account or Sign in
The Stripe Docs logo
/
Ask AI
Create accountSign in
Get started
Payments
Revenue
Platforms and marketplaces
Money management
Developer resources
APIs & SDKsHelp
OverviewAccept a paymentUpgrade your integration
Online payments
OverviewFind your use case
Use Payment Links
Use a prebuilt checkout page
Build a custom integration with Elements
Build an in-app integration
Use Managed Payments
Recurring payments
In-person payments
Terminal
Payment methods
Add payment methods
    Overview
    Payment method integration options
    Manage default payment methods in the Dashboard
    Payment method types
    Cards
    Pay with Stripe balance
    Stablecoin payments
    Bank debits
      ACH Direct Debit
        Accept a payment
        Save bank details
        Migrating ACH Direct Debit from Charges to newer APIs
        Migrating from another processor
        Blocked bank accounts
        SEC codes
        Nacha rule for consumer e-commerce purchases
      Bacs Direct Debit
      Pre-authorized debit in Canada
      Australia BECS Direct Debit
      New Zealand BECS Direct Debit
      SEPA Direct Debit
    Bank redirects
    Bank transfers
    Credit transfers (Sources)
    Buy now, pay later
    Real-time payments
    Vouchers
    Wallets
    Enable local payment methods by country
    Custom payment methods
Manage payment methods
Faster checkout with Link
Payment operations
Analytics
Balances and settlement time
Compliance and security
Currencies
Declines
Disputes
Fraud prevention
Radar fraud protection
Payouts
ReceiptsRefunds and cancellations
Advanced integrations
Custom payment flows
Flexible acquiring
Off-Session Payments
Multiprocessor orchestration
Beyond payments
Incorporate your company
Crypto
Agentic commerce
Machine payments
Financial Connections
Climate
Verify identities
United States
English (United States)
HomePaymentsAdd payment methodsBank debitsACH Direct Debit

Nacha compliance for online consumer purchases

Learn how to classify ACH Direct Debit transactions.

Effective March 20, 2026, the National Automated Clearing House Association (Nacha) requires you to label e-commerce purchases made through ACH debits by including PURCHASE in the Company Entry Description.

An ACH debit transaction qualifies as an e-commerce purchase when it meets both of the following conditions:

  • A consumer authorizes it for the online purchase of physical or digital goods.
  • It uses the SEC code WEB or TEL.

This requirement doesn’t apply to purchases of services, donations, or bill payments.

Implementation guidance

Configure how Stripe classifies your ACH debit transactions in either of the following ways:

  • Stripe Dashboard setting: Configure your classification setting in the Stripe Dashboard. Choose between automatically classifying transactions, classifying all transactions as goods, or not classifying any transactions as goods.
  • API configuration: If you use the Payment Intents API, control classification per transaction through the transaction_purpose field. For details, see the API documentation.

Stripe Dashboard setting

Stripe provides a Stripe Dashboard setting to configure how your ACH Direct Debit transactions are classified.

Classification option

  • Automatically classify transactions: Stripe determines whether each transaction represents a purchase of goods based on available signals such as business information and transaction details.
  • Classify all transactions as goods: Use this option if you exclusively sell physical or digital products. Stripe classifies all your ACH transactions as purchases of goods.
  • Don’t classify any transactions as goods: Use this option if you provide services, accept donations, or collect bill payments instead of selling goods.

Configure transaction classification

For ACH Direct Debit:

  1. Navigate to Settings → Payment methods → ACH Direct Debit.
  2. Locate ACH classification.
  3. Select a classification option.

Configure transaction classification for Connect platform

If you use Connect, configure the same options in your payment method settings. When you configure your ACH classification setting in the Stripe Dashboard, that setting applies to direct charges on your platform account and to destination charges and separate charges and transfers that don’t set on_behalf_of.

Configure a transaction through the API

Use transaction_purpose in payment_method_options.us_bank_account on the Payment Intents API for transaction-level classification.

To classify an individual transaction as an e-commerce purchase, set transaction_purpose to goods.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/payment_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount=100 \ -d currency=usd \ -d customer={{CUSTOMER_ID}} \ -d "payment_method_types[]"=us_bank_account \ -d "payment_method_data[type]"=us_bank_account \ -d "payment_method_data[us_bank_account][account_number]"=000123456789 \ -d "payment_method_data[us_bank_account][routing_number]"=110000000 \ -d "payment_method_data[us_bank_account][account_type]"=checking \ -d "payment_method_data[us_bank_account][account_holder_type]"=individual \ -d "payment_method_data[billing_details][name]"={{CUSTOMER_NAME}} \ -d "payment_method_options[us_bank_account][verification_method]"=microdeposits \ -d "payment_method_options[us_bank_account][transaction_purpose]"=goods

Transactions with this transaction_purpose include PURCHASE in the company entry description.

To classify a transaction as a purchase of services or as something other than goods, set transaction_purpose to services or other.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/payment_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount=100 \ -d currency=usd \ -d customer={{CUSTOMER_ID}} \ -d "payment_method_types[]"=us_bank_account \ -d "payment_method_data[type]"=us_bank_account \ -d "payment_method_data[us_bank_account][account_number]"=000123456789 \ -d "payment_method_data[us_bank_account][routing_number]"=110000000 \ -d "payment_method_data[us_bank_account][account_type]"=checking \ -d "payment_method_data[us_bank_account][account_holder_type]"=individual \ -d "payment_method_data[billing_details][name]"={{CUSTOMER_NAME}} \ -d "payment_method_options[us_bank_account][verification_method]"=microdeposits \ -d "payment_method_options[us_bank_account][transaction_purpose]"=services

Transactions with either transaction_purpose don’t include PURCHASE in the company entry description.

This field is optional. If you don’t provide a value, Stripe uses your ACH classification setting in the Stripe Dashboard. If you don’t configure a Stripe Dashboard setting, Stripe classifies transactions automatically based on available signals such as business information and transaction details.

For more information, see the API documentation.

Was this page helpful?
YesNo
  • Need help? Contact Support.
  • Check out our changelog.
  • Questions? Contact Sales.
  • LLM? Read llms.txt.
  • Powered by Markdoc