---
title: "Refund a captured OAuth billing charge"
method: POST
path: "/v3/oauth/billing/refunds"
tags: ["OAuth Billing"]
---

# Refund a captured OAuth billing charge

`POST /v3/oauth/billing/refunds`

No OAuth installation scope. OAuth flow endpoint. Requires an installed-app OAuth access token that owns the original authorized-business charge. Refunds are full post-capture reversals; reservation release remains the pre-capture flow.

## Request body

- OAuthBillingRefundRequest — Either `billing_reservation_id` or `billing_charge_id` is required. If both are supplied, they must identify the same captured charge. Refunds are full post-capture reversals.
  - `billing_reservation_id` string, uuid, nullable
  - `billing_charge_id` string, uuid, nullable
  - `refund_idempotency_key` string, required
  - `reason_code` string, required
  - `reason` string, required
  - `metadata` object

## Response `200`

OAuth billing refund

- OAuthBillingRefundResponseBody
  - `refund_id` string, uuid, required
  - `billing_charge_id` string, uuid, required
  - `billing_reservation_id` string, uuid, required
  - `refund_status` 'succeeded', required
  - `amount` integer, required
  - `currency` 'IDR', required
  - `reason_code` string, required
  - `reason` string, required
  - `merchant_volt_transaction_id` string, uuid, required
  - `developer_earnings_entry_id` string, uuid, required
  - `inserted_at` string, date-time, required

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `404` — Not Found
- `409` — Conflict

---

[API](https://skmtc.net/scalev/apis/nexus-commerce-api.md) · [All operations](https://skmtc.net/scalev/apis/nexus-commerce-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/scalev/nexus-commerce-api/versions/730030bd6477/schema)
