Skip to content
Straddle Knowledge Base home
Straddle Knowledge Base home

SEC codes

SEC Code Automation | Straddle

Straddle automatically selects the correct SEC code for every ACH transaction.

You Don't Need to Specify SEC Codes

Just provide the paykey and consent_type. Straddle determines the customer type from the paykey and automatically assigns the correct SEC code (PPD, WEB, or CCD).


What are SEC Codes?

SEC (Standard Entry Class) codes are three-letter codes that identify how an ACH payment was authorized. Nacha requires the correct code for every transaction. Using the wrong code can cause returns and compliance issues.

Code Name When It's Used
PPD Prearranged Payment & Deposit Consumer payments with signed/written authorization
WEB Internet-Initiated Entry Payments authorized online (consumer or business)
CCD Corporate Credit or Debit Business-to-business payments with signed authorization

How Straddle Selects SEC Codes

Straddle uses two inputs to determine the correct SEC code:

  1. Customer type — Automatically derived from the paykey (individual or business)
  2. Consent type — You provide this: signed or internet

SEC code matrix for charges (debits)

Customer Type Consent Type SEC Code Example
Individual signed PPD Recurring bill payment via paper form
Individual internet WEB Online purchase or subscription signup
Business signed CCD B2B payment via signed contract
Business internet WEB Business onboarding through web portal

SEC code matrix for payouts (credits)

Payouts don't require consent information, so Straddle determines the SEC code from the customer type alone:

Customer Type SEC Code Example
Individual PPD Refund to consumer, gig worker payout
Business CCD Vendor payment, partner disbursement

Example: Creating a Charge

Consumer paying online → WEB
Scenario

Online subscription signup

A consumer signs up for your SaaS product and authorizes payment through your checkout flow.

API request
POST /v1/charges

{
  "paykey": "pay_abc123...",
  "amount": 4999,
  "consent_type": "internet",
  "device": {
    "ip_address": "192.168.1.100"
  }
}
Business with signed contract → CCD
Scenario

B2B invoice payment

A business customer signed an ACH authorization as part of their vendor agreement.

API request
POST /v1/charges

{
  "paykey": "pay_xyz789...",
  "amount": 250000,
  "consent_type": "signed",
  "device": {
    "ip_address": "0.0.0.0"
  }
}
Tip

Use 0.0.0.0 for the IP address when consent was obtained offline (paper form, DocuSign, etc.).


What You Need to Provide

Transaction Type Required Fields
Charges (debits) paykey + consent_type
Payouts (credits) paykey only

That's it. Straddle handles the SEC code selection automatically.


Benefits

Simpler Integration
No SEC code lookup logic in your codebase
Better Compliance
Correct codes every time, fewer returns
Faster Development
Less time on payment network rules