ACH (Direct Debit)
Accept bank account payments directly from your customers' checking or savings accounts
ACH (Automated Clearing House) is a form of electronic payment that directly transfers funds between bank accounts. This payment method is commonly used for direct deposits, bill payments, and B2B transactions in the United States.
Key Features
| Feature | Details |
|---|---|
| Geography | United States only (both payer and payee must have US bank accounts) |
| Currency | USD exclusively |
| Integration Methods | ACH PaymentFields (client-side), Server-Side |
| Supported Transaction Types | Sale, Refund, Verify |
| Recurring Payments | Supported via multi-use tokens |
| Settlement Time | 1-3 business days |
Account Types
Preczn supports four types of bank accounts for ACH transactions:
| Account Type | Value | Use Case |
|---|---|---|
| Personal Checking | personalChecking | Individual consumer checking accounts |
| Personal Savings | personalSavings | Individual consumer savings accounts |
| Corporate Checking | corporateChecking | Business checking accounts |
| Corporate Savings | corporateSavings | Business savings accounts |
Important: Personal accounts require
firstNameandlastName. Corporate accounts requireaccountBusinessName.
Processor Capabilities
Not all processors support the same ACH transaction types. Use this matrix to understand what's available with your processor:
| Processor | Sale | Refund | Verify | Special Requirements |
|---|---|---|---|---|
| Braintree | ✅ | ✅ | ✅ | Verify required before sale. ACH mandate required. |
| Payrix | ✅ | ✅ | ✅ | — |
| Adyen | ✅ | ✅ | ✅ | — |
| Adyen for Platforms | ✅ | ✅ | ✅ | — |
| Finix | ✅ | ✅ | ✅ | — |
| Authorize.Net | ✅ | ✅ | ✅ | — |
| AffiniPay | ✅ | ✅ | ✅ | Requires separate ACH merchant ID |
Your merchant's plan must be configured with at least one of these processors to accept ACH payments.
Important - Braintree Users: When using Braintree as your processor, you must run a verify transaction before processing ACH sales. This is due to Braintree's bank account vaulting requirements. The verify step creates a vaulted token that is then used for subsequent sale transactions.
Verification Methods by Processor
Different processors use different verification approaches:
| Processor | Verification Method | Description |
|---|---|---|
| Braintree | Bank account vaulting | Vaults the account and returns a token to Preczn for future use |
| Payrix | Zero-dollar transaction | Sends $0 transaction to validate account |
| Adyen | Zero-dollar authorization | $0 auth to validate account exists |
| Finix | Zero-dollar authorization | $0 auth to validate account exists |
| Authorize.Net | Zero-dollar authorization | $0 auth to validate account exists |
| AffiniPay | Small-dollar authorization | $1.00 auth (not captured) to validate account |
Note - Payrix Verification: Payrix ACH verification sends a zero-dollar transaction to check if the bank account is valid. For enhanced verification (account holder name matching, real-time balance checks), Payrix offers GIACT integration which may require additional configuration. Test verify transactions in test mode before switching to live mode.
Transaction Types
Supported
| Type | Description | Documentation |
|---|---|---|
| Sale | Debits funds from the customer's bank account | ACH Sale Transaction |
| Refund | Returns funds to the customer's bank account (requires prior settled sale) | ACH Refund Transaction |
| Verify | Validates bank account information without transferring funds | ACH Verify Transaction |
Not Supported
| Type | Reason |
|---|---|
| Authorization | ACH does not support pre-authorization holds. Use sale instead. |
| Capture | Not applicable since authorizations aren't supported. Use sale instead. |
| Void | ACH transactions cannot be voided. Use refund after settlement instead. |
ACH Processing Flow
sequenceDiagram
participant Customer
participant Platform
participant Preczn
participant Processor
participant ACH Network
participant Bank
Customer->>Platform: 1. Enters bank details & authorizes
Platform->>Preczn: 2. Tokenize bank account
Preczn-->>Platform: 3. Returns secure token
Platform->>Preczn: 4. Submit Sale transaction
Preczn->>Processor: 5. Process ACH request
Processor->>ACH Network: 6. Submit to ACH network
ACH Network->>Bank: 7. Debit customer's account
Bank-->>ACH Network: 8. Confirm transfer
ACH Network-->>Processor: 9. Settlement confirmation
Processor-->>Preczn: 10. Transaction status update
Preczn-->>Platform: 11. Webhook notification
Processing Steps
- Customer Authorization: Customer enters bank account details and provides authorization for the ACH debit
- Tokenization: Preczn encrypts the bank account data and returns a secure token
- Transaction Request: Platform submits a Sale transaction using the token
- Processor Routing: Preczn routes the request to the appropriate ACH-enabled processor
- ACH Network Processing: The request is submitted to the ACH network
- Fund Transfer: Funds are debited from the customer's account (1-3 business days)
- Status Updates: Transaction status updates are sent via webhooks
Transaction Lifecycle
ACH transactions go through several states during processing:
| Status | Description |
|---|---|
P (Pending) | Transaction submitted, awaiting ACH network processing |
A (Approved) | Transaction successfully processed |
D (Declined) | Transaction was declined by the processor or bank |
E (Error) | An error occurred during processing |
Note: Unlike card transactions, ACH transactions may remain in
Pendingstatus for 1-3 business days while the ACH network processes the transfer.
Webhooks
Subscribe to transaction webhooks to receive real-time updates on ACH transaction status:
transaction.approved- Transaction successfully processedtransaction.declined- Transaction was declinedtransaction.pending- Transaction is being processedtransaction.errored- An error occurred
Best Practice: Always use webhooks to track ACH transaction status rather than polling, as settlement can take several days.
Testing
Use these test bank account numbers in test mode:
| Scenario | Account Number | Routing Number |
|---|---|---|
| Approved | 123456789 | 987654321 |
| Declined | 000000000 | 888888888 |
| Error | 111111111 | 999999999 |
Updated 2 days ago
