ACH Refund Transaction

Return funds to customers via ACH refund transactions

ACH Refund

An ACH Refund transaction returns funds to a customer's bank account by reversing a previously settled ACH Sale transaction.

Key Requirements

  • The original ACH Sale transaction must be settled before a refund can be processed
  • Settlement typically occurs 1-3 business days after the original transaction
  • Refunds cannot exceed the original transaction amount

Important: Unlike card transactions, ACH transactions cannot be voided. If you need to cancel an ACH transaction before settlement, you must wait for it to settle and then issue a refund.

Endpoint

POST /v1/transactions

Request Format

{
  "type": "refund",
  "transactionId": "txn_original_sale_id",
  "amount": 5000,
  "currency": "USD"
}

Request Fields

FieldTypeRequiredDescription
typestringYesMust be "refund"
transactionIdstringYesID of the original settled ACH Sale transaction
amountintegerNoRefund amount in cents. If not specified, refunds the full amount.
currencystringYesMust be "USD"

Full Refund Example

Refund the entire amount of the original transaction:

{
  "type": "refund",
  "transactionId": "txn_01abc123def456",
  "currency": "USD"
}

Partial Refund Example

Refund a portion of the original transaction:

{
  "type": "refund",
  "transactionId": "txn_01abc123def456",
  "amount": 2500,
  "currency": "USD"
}

Response Format

{
  "id": "txn_refund_xyz789",
  "type": "refund",
  "amount": 5000,
  "fee": 0,
  "currency": "USD",
  "merchantId": "mid_abc123",
  "transactionId": "txn_01abc123def456",
  "authorization": {
    "status": "P",
    "processorCode": "00",
    "processorMessage": "ACH refund submitted",
    "approvedAmount": 0
  },
  "payment": {
    "type": "personalChecking",
    "last4": "6789",
    "bin": "987654321"
  },
  "processor": {
    "id": "pfmCon_xyz789",
    "name": "Payrix",
    "routingSource": "plan"
  },
  "createdOn": "2024-01-18T14:30:00Z"
}

Transaction Statuses

StatusCodeDescription
PendingPRefund submitted to ACH network
ApprovedARefund successfully processed, funds returned
DeclinedDRefund was declined
ErrorEAn error occurred

Timing Considerations

Settlement Timeline

Day 1: Original ACH Sale submitted (status: Pending)
Day 2-3: ACH network processes the sale
Day 3-4: Sale settles (status: Approved)
Day 4+: Refund can now be submitted

Refund submitted: (status: Pending)
1-3 days later: Refund settles (status: Approved)

When to Use Refund vs. Void

ScenarioAction
Transaction is pendingWait for settlement, then refund
Transaction is settledSubmit a refund
Need immediate reversalNot possible with ACH - must wait for settlement

Note: ACH does not support void transactions. The error "Void is not supported for ACH transactions" will be returned if attempted.

Multiple Partial Refunds

You can issue multiple partial refunds against a single transaction, as long as the total refunded amount does not exceed the original transaction amount.

Example: Original sale of $100.00

Refund 1: $25.00 ✓
Refund 2: $30.00 ✓
Refund 3: $50.00 ✗ (exceeds remaining $45.00)
Refund 3: $45.00 ✓

Error Messages

These are Preczn API errors returned when a request fails validation or processing. The error and message fields correspond to the API response format documented in the ACH Error Reference.

Refund Errors

ErrorMessageCauseSolution
Not FoundTransaction Id Not FoundInvalid transactionIdVerify the transaction ID is correct
Bad RequestAmount to refund should be equal or less than the original transactionRefund amount exceeds original or remaining balanceReduce the refund amount
Bad RequestTransaction type does not support refundOriginal transaction type doesn't support refundsOnly sale transactions can be refunded

For a complete list of errors, see the ACH Error Reference.

Webhooks

Subscribe to webhook events to track refund status:

EventDescription
transaction.pendingRefund submitted to ACH network
transaction.approvedRefund settled, funds returned to customer
transaction.declinedRefund was declined
transaction.erroredAn error occurred

Best Practices

  1. Wait for settlement - Always verify the original transaction has settled before attempting a refund
  2. Track refund totals - Keep track of partial refunds to avoid exceeding the original amount
  3. Use webhooks - Monitor refund status via webhooks rather than polling
  4. Communicate with customers - Set expectations that ACH refunds take 1-3 business days