Refunds

How to issue full or partial refunds via API or dashboard, timelines by payment method, and restrictions that apply.

Overview

Refunds return funds to a customer for a completed payment. Only payments with a paid status can be refunded.

If your upcoming payout balance is insufficient to cover a refund, the request will not go through until the balance is replenished. Refunds for already-paid-out transactions are deducted from your next payout.


Refund a payment

Via the dashboard

  1. Go to Links or Payments in your PayMongo dashboard
  2. Select the payment you want to refund
  3. Click Refund
  4. Choose full or partial refund, select a reason, and add an optional note

Via the API

You can issue a full refund by setting amount equal to the original payment amount, or a partial refund by setting it to any lesser value. Multiple partial refunds can be issued on the same payment as long as the total doesn't exceed the original.

const refund = await fetch('https://api.paymongo.com/v1/refunds', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Basic ' + btoa('sk_test_YOUR_SECRET_KEY:')
  },
  body: JSON.stringify({
    data: {
      attributes: {
        amount: 10000,
        payment_id: 'pay_xxx',
        reason: 'others',
        notes: 'Customer requested refund for order cancellation'
      }
    }
  })
}).then(r => r.json());
ParameterRequiredDescription
amountYesAmount in centavos. Must be ≤ original payment amount minus previous refunds
payment_idYesThe ID of the payment to refund
reasonYesOne of: duplicate, fraudulent, others
notesNoInternal notes for your records

Eligibility and timelines by payment method

Payment methodRefund windowPartial refundsTime to reflect
Debit / Credit Card60 daysYes (full only for installments)Up to 30 days
GCash180 daysYesWithin 24 hours
GrabPay90 daysYesWithin 24 hours
Maya12 monthsYes*Within 24 hours
ShopeePay365 daysYesWithin 24 hours
BPI Online Banking30 daysYesAt least 3 banking days
BillEase60 daysYesWithin 24 hours
BDO, Metrobank, Landbank (Brankas)30 daysYesUp to 5 banking days†
QR PhNo
UBP Online BankingNo

*Maya partial refunds: only a full refund is allowed on the same day. Partial refunds can only be filed starting 12:00 AM the following day.

Brankas refunds are deposited to the merchant's bank account. The merchant is responsible for settling directly with the customer.

QR Ph and UBP Online Banking payments cannot be refunded. If a customer paid via one of these methods, contact [email protected].


Refund errors

If a refund request fails, check the error code in the API response:

  • payment_not_found — the payment_id doesn't exist or isn't in your account
  • refund_amount_exceeds_payment — the requested amount exceeds what's available to refund
  • payment_not_refundable — the payment is in a state that doesn't allow refunds (e.g., still processing)

For a complete list of error codes, see the API Reference.