ACH Error Reference & Troubleshooting

Error response format, status codes, and troubleshooting guide for ACH transactions

ACH Error Reference & Troubleshooting

This page provides reference information for understanding ACH error responses, status codes, and troubleshooting common issues. For transaction-specific errors, see the individual documentation pages:

Error Response Format

All Preczn API errors follow this format:

{
  "message": "Human-readable error message",
  "error": "Error Type",
  "statusCode": 400
}

Single Validation Error

{
  "message": "Routing number must be exactly 9 digits",
  "error": "Bad Request",
  "statusCode": 400
}

Multiple Validation Errors

When multiple fields fail validation, message contains an array:

{
  "message": [
    "Routing number must be exactly 9 digits",
    "Account number must be between 4 and 17 digits"
  ],
  "error": "Bad Request",
  "statusCode": 400
}

Not Found Error

{
  "message": "Transaction Id Not Found",
  "error": "Not Found",
  "statusCode": 404
}

HTTP Status Codes

Status CodeErrorDescription
400Bad RequestValidation errors, invalid field values
401UnauthorizedInvalid or missing API key
403ForbiddenInsufficient permissions
404Not FoundInvalid merchant ID or transaction ID
422Unprocessable EntityValid format but business rule violation
500Internal Server ErrorInternal processing error

Transaction Status Codes

ACH transactions use single-character status codes in the authorization.status field:

CodeStatusDescription
PPendingTransaction submitted, awaiting ACH network processing
AApprovedTransaction successfully completed
DDeclinedTransaction was declined by processor or bank
EErrorAn error occurred during processing

Unsupported Transaction Types

ACH only supports sale, refund, and verify transaction types. Attempting other types returns these errors:

ErrorMessageCauseSolution
Bad RequestAuthorization is not supported for ACH transactions. Use 'sale' transaction type instead.Attempted auth transactionUse type: "sale" instead
Bad RequestCapture is not supported for ACH transactions. Use 'sale' transaction type instead.Attempted capture transactionUse type: "sale" instead
Bad RequestVoid is not supported for ACH transactions. ACH transactions can only be refunded after settlement (typically 3 business days).Attempted void transactionWait for settlement, then use type: "refund"
Bad RequestDrawdown is not supported for ACH transactions. Drawdown is only applicable for lending payment methods.Attempted drawdown transactionDrawdown is not available for ACH

ACH-Supported Processors

ACH transactions require a processor that supports ACH. The following processors are ACH-enabled:

  • Payrix
  • Adyen
  • Adyen for Platforms
  • Finix
  • Authorize.Net
  • AffiniPay
  • Braintree

If your merchant's plan doesn't include an ACH-enabled processor, you'll receive: ACH transaction not supported for this Plan

Troubleshooting Guide

Transaction Stuck in Pending

Symptoms: Transaction remains in "Pending" status for more than 3 business days.

Possible Causes:

  1. ACH network delays
  2. Bank processing delays
  3. Weekend or holiday submission

Solutions:

  1. Check for webhook notifications
  2. Contact support if pending > 5 business days
  3. Verify the transaction with GET /v1/transactions/{id}

Repeated Declines

Symptoms: Multiple transactions for the same account are declined.

Possible Causes:

  1. Incorrect account details
  2. Insufficient funds
  3. Account closed
  4. Bank restrictions

Solutions:

  1. Verify routing and account numbers with customer
  2. Request customer contact their bank
  3. Try alternative payment method

Refund Fails

Symptoms: Refund request returns an error.

Checklist:

  1. Is the original transaction settled? (Wait 1-3 business days)
  2. Does the refund amount exceed the original?
  3. Have you already refunded the full amount?
  4. Is the transaction ID correct?

Webhook Not Received

Symptoms: Transaction status changed but no webhook was received.

Solutions:

  1. Verify webhook URL is correct and accessible
  2. Check webhook subscription includes transaction events
  3. Review webhook logs in dashboard
  4. Test webhook endpoint with a simple POST request

Getting Help

If you continue to experience issues:

  1. Review the transaction-specific documentation for detailed error tables
  2. Review webhook logs in your dashboard
  3. Contact support with:
    • Transaction ID
    • Error message received
    • Request payload (with sensitive data removed)
    • Timestamp of the issue