POST
Refund result webhook
Receive refund results at the original transaction’s
notifyUrl. Do not use the example to determine whether a field is always returned or can be null. See Webhooks for handling and Create or cancel refund for requests.Signature coverage
Request signing guideAll payload fields are included in the signature except:
sign(legacy signature value)paymentMethodwalletTypeName
Webhook payload fields
notifyTypeNotification category.
transactionIdOnerway refund transaction number. Return this value unchanged when acknowledging the notification.
paymentIdPayment Intent ID associated with this refund.
txnTypeTransaction operation type.
REFUND identifies a refund result.merchantNoMerchant number assigned by Onerway.
merchantTxnIdMerchant transaction number for the refund. Onerway generates it if omitted from the refund request.
originMerchantTxnIdMerchant transaction number of the original payment.
responseTimeTime when Onerway generated the notification result, in
yyyy-MM-dd HH:mm:ss format.txnTimeTransaction time recorded in the notification, in
yyyy-MM-dd HH:mm:ss format.txnTimeZoneTime zone offset for the transaction times in the notification.
orderAmountTransaction amount reported in this notification, expressed in
orderCurrency as a decimal string.orderCurrencyCurrency of
orderAmount.statusRefund processing result.
S means success and F means failure.cardBinCountryCountry or region associated with the card BIN.
reasonResult details encoded as a JSON string containing
respCode and respMsg. When verifying the signature, use the field value as received, without parsing or reserializing its JSON content.signLegacy body signature, excluded from the signature input. It uses only the first enabled key. Verify the notification using the signature in the
X-Rh-Signature header.paymentMethodPayment method or card brand reported in the notification. Exclude this field when calculating the signature.
walletTypeNameWallet type reported in the notification. Exclude this field when calculating the signature.
channelRequestIdPayment channel request identifier.
paymentMethodDetailsPayment method details encoded as a JSON string. When verifying the signature, use the field value as received, without parsing or reserializing its JSON content.
{
"notifyType": "TXN",
"transactionId": "demo_transactionId",
"paymentId": "demo_paymentId",
"txnType": "REFUND",
"merchantNo": "demo_merchantNo",
"merchantTxnId": "demo_merchantTxnId",
"originMerchantTxnId": "demo_originMerchantTxnId",
"responseTime": "2026-09-14 00:05:29",
"txnTime": "2026-09-14 00:05:28",
"txnTimeZone": "+08:00",
"orderAmount": "13.36",
"orderCurrency": "USD",
"status": "S",
"cardBinCountry": "US",
"reason": "{\"respCode\": \"20000\", \"respMsg\": \"Success\"}",
"sign": "replace_with_signature",
"paymentMethod": "VISA",
"walletTypeName": "ApplePay",
"channelRequestId": "demo_channelRequestId",
"paymentMethodDetails": "{\"card\": {\"checks\": null, \"holderName\": null, \"year\": null, \"month\": null, \"cardType\": \"ApplePay\", \"productCategory\": null, \"issuer\": null, \"cardBinCountry\": \"US\", \"authorizationCode\": null, \"cardNumber\": \"[REDACTED]\"}}"
}Acknowledgement
After receiving and accepting the notification, return HTTP 200 with
Content-Type: text/plain and the received transactionId unchanged in the response body. Without a successful response, Onerway retries at 30-minute intervals, up to 3 times.demo_transactionId