Refunds

Refund all or part of a completed payment. Refunds are posted to the ledger and can be issued multiple times up to the paid amount.

Full refund

Omit amount to refund the entire remaining balance.

POST /v1/payments/:id/refund
curl https://api.paykh.cambobia.com/v1/payments/pay_123/refund \
  -H "Authorization: Bearer bk_test_your_key" \
  -H "Content-Type: application/json" \
  -d '{ "reason": "customer request" }'

Partial refund

Pass an amount to refund part of the payment. Repeat until the full amount is refunded.

curl
curl https://api.paykh.cambobia.com/v1/payments/pay_123/refund \
  -H "Authorization: Bearer bk_test_your_key" \
  -H "Content-Type: application/json" \
  -d '{ "amount": "5.00", "reason": "partial" }'

List a payment’s refunds:

GET /v1/payments/:id/refunds
curl https://api.paykh.cambobia.com/v1/payments/pay_123/refunds \
  -H "Authorization: Bearer bk_test_your_key"
⚠️ High-value refunds
For risk control, high-value refunds may require an Owner (not Analyst) and can be gated behind MFA. A refund larger than the remaining balance is rejected with invalid_request.

A refund moves the payment to partially_refunded or refunded and fires a payment.refunded webhook.