Skip to main content
Search

Submit a Refund Request

The BeneficiaryVASP calls this endpoint to request a refund from the OriginatorVASP. GTR records the request and attempts to send REFUND_REQUEST_QUERY (callbackType: 21) to the OriginatorVASP.

Required implementation role: BeneficiaryVASP

  • Your role: BeneficiaryVASP
  • Counterparty: OriginatorVASP
  • Endpoint: POST /api/verify/v3/refund/submit

Request example

curl --location --request POST '/api/verify/v3/refund/submit' \
--cert-type P12 --cert ./certificate.p12:'[CERTIFICATE_PASSWORD]' \
--header 'Authorization: Bearer [LOGIN_TOKEN]' \
--header 'Content-Type: application/json' \
--data-raw '{
"refundBasicInfo": {"requestId": "beneficiary-exchange-550e8400-e29b-41d4-a716-446655440000"},
"blockchainTransaction": {
"network": "ETH", "ticker": "USDT", "txId": "0x4ab1...91ef"
},
"refundDeclaredValue": {"amount": "125.50"},
"beneficiaryAddress": {"address": "0x8ba1f109551bD432803012645Ac136ddd64DBA72", "tag": ""},
"refundReason": {
"reasonType": "ORIGINATOR_TRAVEL_RULE_INCOMPLETE",
"reason": "Originator information could not be verified"
},
"originatorVaspInfo": {"vaspCode": "originator-vasp-code"}
}'

Parameters

FieldRequiredDescription
refundBasicInfo.requestIdYesUnique refund identifier, maximum 128 characters. For a refund with a prior GTR Travel Rule record, use the original request ID.
blockchainTransaction.networkYesNetwork of the original transfer. Use a value from the Network List.
blockchainTransaction.tickerYesAsset ticker of the original transfer. Use a value from the Ticker List.
blockchainTransaction.txIdYes for processingOriginal on-chain transaction ID. It must match the prior Travel Rule record when one exists.
refundDeclaredValue.amountYesRequested refund amount denominated in the asset specified by blockchainTransaction.ticker. Provide it as a decimal string greater than 0.
beneficiaryAddress.addressYesAddress that received the original transfer, maximum 255 characters.
beneficiaryAddress.tagNoAddress tag or memo, maximum 64 characters.
refundReason.reasonTypeYesUNIDENTIFIED_ORIGINATOR, ORIGINATOR_TRAVEL_RULE_INCOMPLETE, SCREENING_CHECK_TRIGGERED, or OTHER.
refundReason.reasonNoHuman-readable details, maximum 1,024 characters. Recommended, especially with OTHER.
originatorVaspInfo.vaspCodeYesGTR VASP code of the OriginatorVASP. Required to route a refund without a prior Travel Rule record and checked against the existing record when applicable.

For prior Travel Rule transfers, the authenticated caller must be the recorded BeneficiaryVASP, and txId, beneficiary address, and tag must match the original record.

Success response

{
"verifyStatus": 100000,
"verifyMessage": "refund request has been sent",
"data": null
}

Callback type 21 is optional for the OriginatorVASP. An unavailable callback receiver does not undo a successfully created refund request.

What happens next

After the BeneficiaryVASP submits the refund request, the OriginatorVASP receives the Refund Request Query callback and reviews the request.