SEC codes
Straddle automatically selects the correct SEC code for every ACH transaction.
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:
- Customer type — Automatically derived from the
paykey(individual or business) - Consent type — You provide this:
signedorinternet
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
Online subscription signup
A consumer signs up for your SaaS product and authorizes payment through your checkout flow.
POST /v1/charges
{
"paykey": "pay_abc123...",
"amount": 4999,
"consent_type": "internet",
"device": {
"ip_address": "192.168.1.100"
}
}
B2B invoice payment
A business customer signed an ACH authorization as part of their vendor agreement.
POST /v1/charges
{
"paykey": "pay_xyz789...",
"amount": 250000,
"consent_type": "signed",
"device": {
"ip_address": "0.0.0.0"
}
}
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.