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

FeatureDetails
GeographyUnited States only (both payer and payee must have US bank accounts)
CurrencyUSD exclusively
Integration MethodsACH PaymentFields (client-side), Server-Side
Supported Transaction TypesSale, Refund, Verify
Recurring PaymentsSupported via multi-use tokens
Settlement Time1-3 business days

Account Types

Preczn supports four types of bank accounts for ACH transactions:

Account TypeValueUse Case
Personal CheckingpersonalCheckingIndividual consumer checking accounts
Personal SavingspersonalSavingsIndividual consumer savings accounts
Corporate CheckingcorporateCheckingBusiness checking accounts
Corporate SavingscorporateSavingsBusiness savings accounts

Important: Personal accounts require firstName and lastName. Corporate accounts require accountBusinessName.

Processor Capabilities

Not all processors support the same ACH transaction types. Use this matrix to understand what's available with your processor:

ProcessorSaleRefundVerifySpecial Requirements
BraintreeVerify required before sale. ACH mandate required.
Payrix
Adyen
Adyen for Platforms
Finix
Authorize.Net
AffiniPayRequires 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:

ProcessorVerification MethodDescription
BraintreeBank account vaultingVaults the account and returns a token to Preczn for future use
PayrixZero-dollar transactionSends $0 transaction to validate account
AdyenZero-dollar authorization$0 auth to validate account exists
FinixZero-dollar authorization$0 auth to validate account exists
Authorize.NetZero-dollar authorization$0 auth to validate account exists
AffiniPaySmall-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

TypeDescriptionDocumentation
SaleDebits funds from the customer's bank accountACH Sale Transaction
RefundReturns funds to the customer's bank account (requires prior settled sale)ACH Refund Transaction
VerifyValidates bank account information without transferring fundsACH Verify Transaction

Not Supported

TypeReason
AuthorizationACH does not support pre-authorization holds. Use sale instead.
CaptureNot applicable since authorizations aren't supported. Use sale instead.
VoidACH 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

  1. Customer Authorization: Customer enters bank account details and provides authorization for the ACH debit
  2. Tokenization: Preczn encrypts the bank account data and returns a secure token
  3. Transaction Request: Platform submits a Sale transaction using the token
  4. Processor Routing: Preczn routes the request to the appropriate ACH-enabled processor
  5. ACH Network Processing: The request is submitted to the ACH network
  6. Fund Transfer: Funds are debited from the customer's account (1-3 business days)
  7. Status Updates: Transaction status updates are sent via webhooks

Transaction Lifecycle

ACH transactions go through several states during processing:

StatusDescription
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 Pending status 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 processed
  • transaction.declined - Transaction was declined
  • transaction.pending - Transaction is being processed
  • transaction.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:

ScenarioAccount NumberRouting Number
Approved123456789987654321
Declined000000000888888888
Error111111111999999999