Skip to main content
POST
Create ACH Payment

Endpoint

Overview

Use this endpoint to process ACH payments directly from a customer’s bank account. This method does not require creating a customer account or storing payment method tokens.
ACH payments typically take 3-5 business days to settle. Funds are not immediately available.

Authentication

Request Body

object
required
Container for API data
string
UUID for idempotency. If provided, must be in valid UUID format. Optional but recommended for preventing duplicate transactions.
string
required
Must be "payments"
object
required
Container for payment attributes
string
required
Must be "ACH" for ACH payments
string
required
The merchant account identifier
string
Optional JSON string containing additional metadata like email, IP addresses, or custom data
string
required
Must be "WEB" for internet-initiated ACH transactions
object
required
Bank account information
object
required
Transaction details

Example Request

Response

Success Response (201 Created)

Contains URLs related to the resource
object
Container for response data

Example Response

Code Examples

Error Responses

Common Error Scenarios

Error: 400 Bad RequestSolution: Verify the routing number is a valid 9-digit ABA routing number. The test environment requires real routing numbers.
Error: 400 Bad RequestSolution: Ensure accountType is either “checking” or “savings” (lowercase).
Error: 400 Bad RequestSolution: Verify all required fields are present: paymentType, merchantId, StandardEntryClassCode, bank object, and transaction object.
Error: 422 Unprocessable EntitySolution: The payment was rejected by the bank. Common reasons include insufficient funds, closed account, or invalid account information.

Important Notes

Real Routing Numbers Required: Even in the test environment, you must use valid bank routing numbers. Invalid routing numbers will be rejected.
Settlement Time: ACH payments take 3-5 business days to settle. The payment will appear as “pending” during this time.
Idempotency: Use the optional requestId field with a UUID to prevent duplicate payments if your request is accidentally submitted multiple times.

Best Practices

  1. Validate Bank Information: Verify routing and account numbers before submitting to reduce failed payments
  2. Store Payment IDs: Save the returned payment ID for status checking and reconciliation
  3. Handle Async Nature: ACH is asynchronous - implement webhooks or polling to track payment status
  4. Collect Customer Consent: Ensure you have proper authorization to debit the customer’s account
  5. Use miscData Field: Store additional context like customer email, IP addresses for fraud prevention and customer support

Next Steps

Get Payment Status

Check the status of your ACH payment

Refund Payment

Learn how to refund an ACH payment