Create Refund Request
Endpoint: POST /v2/gc/refund-requests
Description: Initiate a refund of an incoming collection order back to the original payer.
Request
Request Body Field Descriptions (JSON)
orderId
string
Yes
The orderId of the collection transaction to refund (same value delivered on the collection webhooks).
feeChargeWay
string
Yes
Party responsible for bearing the refund fee. Enum: OUR | BEN.
reason
string(256)
No
Free-text reason for the refund.
requestId
string(64)
No
Merchant-generated unique request ID for this refund, used for idempotency.
webhookUrl
string(256)
No
Merchant-hosted callback URL. See the hint on Webhook — this field is accepted by the DTO, but the actual refund-status events are delivered through the collection-transaction webhook group, not necessarily to this URL.
Request sample
Real captured example:
{
"requestId": "1785580178393",
"orderId": "785481516079000004",
"feeChargeWay": "OUR",
"reason": "refund gd",
"webhookUrl": "https://usewebhook.com/0389df097d05b25adfd90ebabbf7ff76"
}(requestId should be a merchant-generated unique value — the original capture used a client-side templated placeholder.)
Response
Response Field Descriptions
data
object
Refund request details.
message
string
Response message.
neoResponseId
string
Unique NeoX response identifier (UUID).
There is no state field in the response envelope. This response is notably thin per the backend code — it does not return an id or status field, only the four fields below. Poll Get Detail Collection Order or listen for the refund webhooks (see Webhook) to track the outcome.
data object fields:
requestId
string
Echoes the merchant-supplied requestId.
orderId
string
The collection transaction's orderId.
refundOrderId
string
NeoX identifier assigned to this refund.
feeChargeWay
string
Echoes the submitted feeChargeWay.
No real captured response sample is available yet — field names above are derived from the backend code; values below are placeholders.
Response sample
Example cURL
Notes
Requires Bearer token in the Authorization header.
The Accept-Language header can be used to specify the response language (Support: "vi", "en").
Use a unique
requestIdfor each request to avoid duplicate refund submissions.There is currently no public
GETendpoint for refund-request detail — agetRefundRequestDetailaction exists in the backend but is not exposed under/v2/gc/. Track outcomes via Get Detail Collection Order or the webhooks below.The final refund outcome is delivered asynchronously via the
TRADE_COLLECTION_REFUND_PROCESS/TRADE_COLLECTION_REFUND_SUCCESSwebhooks — see Webhook.Refund progress can also be observed by polling the related collection transaction — its
statustransitions toREFUND_PROCESSwhile the refund is underway andREFUND_SUCCESSupon completion.feeChargeWaymust be set toOURif the merchant agrees to bear the refund transfer fee, orBENif the fee is deducted from the amount returned to the payer.
Last updated
Was this helpful?