Skip to main content
Refunds return money to customers for completed transactions. You can issue refunds from the admin UI or the API. OwnPay tracks refund statuses separately from the original transaction.

How to issue a refund

  1. Go to PaymentsTransactions.
  2. Find and open the transaction you want to refund.
  3. Click Refund.
  4. Enter the refund amount (must not exceed the original transaction amount).
  5. Optionally add an internal note explaining the reason.
  6. Click Confirm Refund.

Refund statuses

Refund rules

  • You can only refund transactions with Completed status.
  • The refund amount cannot exceed the original transaction amount.
  • Partial refunds are allowed - you can refund any amount up to the original.
  • You cannot refund a transaction that has already been fully refunded.
  • Gateway fees from the original transaction are not refunded to the customer.

Gateway-specific behavior

For gateways marked as Delayed, the refund stays in Pending status until the gateway sends a confirmation webhook. The RefundReconciliationJob runs periodically (via cron or queue worker) to sync pending refund statuses with the gateway.

Ledger impact

When a refund completes, OwnPay records a reversing double-entry in the ledger. The original credit to your merchant payable account is debited back, and the corresponding asset account is adjusted. Your ledger balance decreases by the refunded amount.
Issuing a refund reduces your ledger balance. Verify you have sufficient balance before refunding, especially large amounts.

API access

You can issue refunds programmatically with a POST request to /payments/{id}/refund. See the Merchant API reference for the full request and response schema.

Troubleshooting

Last modified on August 25, 2026