Skip to main content
Cresora Commerce
Transaction Types

Refunds

Full and partial refunds for card and ACH payments.

A refund returns funds to a customer after a payment has been captured. Refunds differ from voids — you can only void an uncaptured authorization, while refunds apply to captured payments.

Card refunds

Full refund
curl -X POST https://sandbox-api.cresoracommerce.com/api/v1/transactions/{transactionId}/refund \
  -H "Authorization: Bearer csk_test_xxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: idem_$(uuidgen)" \
  -d '{ "payment_id": "pay_xxxxxxxxxxxx" }'
Partial refund
curl -X POST https://sandbox-api.cresoracommerce.com/api/v1/transactions/{transactionId}/refund \
  -H "Authorization: Bearer csk_test_xxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: idem_$(uuidgen)" \
  -d '{ "payment_id": "pay_xxxxxxxxxxxx", "amount": "50.00" }'

Refund rules

RuleDetail
Minimum1 cent
MaximumOriginal captured amount
Multiple partialsAllowed until cumulative equals original amount
TimingAny time after capture; up to 365 days (varies by card network)
Settlement timingCredit appears on cardholder statement in 3–7 business days

Refund response

{
  "id": "ref_xxxxxxxxxxxx",
  "payment_id": "pay_xxxxxxxxxxxx",
  "amount": "50.00",
  "currency": "USD",
  "status": "pending",
  "created_at": "2026-05-29T15:00:00Z"
}

Refunds start in pending status and move to succeeded once processed (typically same day for card refunds).

ACH refunds

For ACH payments, a refund creates a new credit ACH entry — it doesn't reverse the original debit. The customer receives the credit 1–3 business days after submission.

POST https://sandbox-api.cresoracommerce.com/api/v1/transactions/{transactionId}/refund
{ "payment_id": "pay_xxxxxxxxxxxx" }
Note

For ACH payments processed on the same business day, use POST /v1/payments/{id}/reverse instead. Reversals are faster (same-day) than refunds (1–3 days). See ACH Transactions →.

Webhook events

EventWhen
payment.refundedRefund succeeds
refund.failedRefund fails (rare — contact support)