Skip to content
Create account
or
Sign in
The Stripe Docs logo
/
Ask AI
Create account
Sign in
Get started
Payments
Finance automation
Platforms and marketplaces
Money management
Developer tools
Get started
Payments
Finance automation
Get started
Payments
Finance automation
Platforms and marketplaces
Money management
Overview
About Stripe payments
Upgrade your integration
Payments analytics
Online payments
OverviewFind your use caseManaged Payments
Use Payment Links
Build a checkout page
Build an advanced integration
Build an in-app integration
Payment Methods
Add payment methods
    Overview
    Payment method integration options
    Manage default payment methods in the Dashboard
    Payment method types
    Cards
    Bank debits
      ACH Direct Debit
        Accept a payment
        Save bank details
        Migrating from the Charges API
        Migrating from another processor
        Blocked bank accounts
        SEC codes
      Bacs Direct Debit
      Pre-authorised debit in Canada
      Australia BECS Direct Debit
      New Zeland 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 interfaces
Payment Links
Checkout
Web Elements
In-app Elements
Payment scenarios
Custom payment flows
Flexible acquiring
Orchestration
In-person payments
Terminal
Other Stripe products
Financial Connections
Crypto
Climate
HomePaymentsAdd payment methodsBank debitsACH Direct Debit

Overview of ACH SEC codes

Learn about different types of customer authorisations for ACH Direct Debit.

Copy page

A Standard Entry Class (SEC) code is a three-letter code that describes how a customer or business authorised an ACH transaction. SEC codes are defined and maintained by Nacha, the governing body for the ACH network.

Businesses must make sure that the correct code is used when initiating debit transactions to make sure they comply with ACH Direct Debit rules and appropriate authorisation evidence in the event of a dispute. The business is responsible under the ACH Direct Debit rules for indicating the appropriate SEC code for each ACH transaction.

Stripe currently supports four types of SEC codes for ACH Debits. If you don’t specify a mandate collection method, Stripe defaults to using WEB for consumer bank accounts and CCD for business bank accounts.

The mandate requirements under ACH Direct Debit rules and applicable law vary based on the type of mandate collected. The information on this page relating to your compliance with ACH mandate requirements is for your general guidance, and isn’t legal advice. If you’re unsure of the applicable mandate requirements, consult with a professional about your obligations.

WEB (Internet Initiated/Mobile Entry)

This code is used to initiate entries to a consumer’s account when the internet or a mobile device is used to initiate the transaction. WEB is the default unless you indicate otherwise. Refunds processed for WEB transactions use the PPD SEC code.

CCD (Corporate Credit or Debit Entry)

This code is used to facilitate business-to-business payments and is applied to charges to all PaymentMethods that have account_holder_type=company, regardless of the authorisation type.

PPD (Prearranged Payment and Deposit)

This code is used to initiate entries to a consumer’s account, based on standing or single-entry authorisation from that customer in writing. Your customer’s authorisation must be in writing and signed or otherwise authenticated (that is, confirm the customer’s identity and agreement such as using a phone for a previously provided written authorisation). Authorisations need to include information required for online mandates and you must provide a copy of the authorisation to your customer.

To initiate a PPD debit, you must create a mandate with offline customer acceptance. You can do so by confirming a PaymentIntent or a SetupIntent with offline customer acceptance and providing a collection_method=paper mandate option as shown below:

Command Line
cURL
curl https://api.stripe.com/v1/payment_intents/
{{PAYMENT_INTENT_ID}}
/confirm
\ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d "mandate_data[customer_acceptance][type]"=offline \ -d "mandate_data[customer_acceptance][accepted_at]"=1647448692 \ -d "payment_method_options[us_bank_account][mandate_options][collection_method]"=paper

TEL (Telephone-Initiated Entry) Beta

This code is used to initiate debit transactions to a consumer’s account when authorisation is given over the telephone. TEL debits are currently in private beta. Contact Stripe Support if you initiate bank debits to consumer accounts over the telephone.

Requirements for Telephone-initiated payments

If your business accepts ACH payments over the telephone, Stripe supports single TEL ACH debit transactions. Don’t use a TEL entry where a standing authorisation is in place or to support a recurring transaction. TEL entries have their own Nacha requirements that you need to meet prior to accepting and processing these payments.

Existing relationship

You can only use a TEL entry if:

  • You and the customer have an existing relationship, which means that:
    • You and the customer have a written agreement in place for the provision of goods or services; or
    • Your customer has purchased goods or services from you within the past 2 years; or
  • You don’t have an existing relationship with the customer, but the customer initiated the telephone call to you.

Your customer’s pre-existing relationship with one of your affiliates is not sufficient to be an existing relationship between you and your customer.

Verifications

You must establish and implement commercially reasonable procedures to verify the identity of the customer (for example, name, address, and telephone number). Additionally, you must establish and implement commercially reasonable procedures to verify that the routing numbers provided by your customers are valid.

Authorisation requirements

Your customer’s explicit verbal authorisation is needed prior to you initiating a debit entry to their account. Authorisations need to include information required for online mandates, along with a telephone number available to your customer for enquiries.

In addition, you must capture authorisation by either an audio recording of the customer’s oral authorisation (in accordance with applicable state law regarding the recording of calls) or providing written notice to the customer of their authorisation before the first debit of their bank account.

Sample script
To confirm your payment, I understand that you, {{customer’s name}} authorise {{business name}} to debit you on {{debit date}} for the amount of {{amount}} for {{service provided}}. The account information you’ve provided me is as follows: Bank Name: {{bank name}}. Bank ABA Routing Number: {{routing number}}. Bank Account Type: {{checking/savings}}. Bank Account Number: {{account number}}. Is this information correct? As of today’s date, {{date}}, this debit authorisation is valid and will remain in effect until you, {{customer name}}, notify {{business name}} of its cancellation by calling {{customer support phone number}}
Copy

For single TEL entries, if you provide a written notice instead of audio recording the authorisation, you should indicate how you will provide that notice (for example, emails and mailed letters).

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