vrtx Docs
Core APIs
Core APIs
  • Start
  • Onboarding
  • Wallet
  • Payouts
  • Cards
  • Transactions
Closed loop APIs
Card Simulator
SDK APIs
SDK APIs
  • Coming Soon!
Core APIs
Core APIs
  • Start
  • Onboarding
  • Wallet
  • Payouts
  • Cards
  • Transactions
Closed loop APIs
Card Simulator
SDK APIs
SDK APIs
  • Coming Soon!
  1. Money Movement
vrtx Docs
  • Welcome đź‘‹
  • Get Started
  • Authentication
  • Responses
  • Pagination
  • Auth
    • Token
      POST
  • Businesses
    • List businesses
      GET
    • Create business
      POST
  • Money Movement
    • Create fund
      POST
    • Create payout
      POST
    • Get payout
      GET
    • Create refund
      POST
    • Create transfer
      POST
    • Create reversal
      POST
    • Create withdrawal
      POST
  • Labels
    • List labels
      GET
    • Create label
      POST
  • Transactions
    • List transactions
      GET
    • Get transaction
      GET
    • List wallet transactions
      GET
  • Wallets
    • List wallets
      GET
    • Create wallet
      POST
    • Lookup wallet
      GET
    • Update wallet
      PATCH
    • Get wallet
      GET
    • Get wallet balance
      GET
    • Remove label
      DELETE
    • Assign label
      PUT
  • Wallet Statements
    • Retrieve wallet statement (preview)
  • Webhooks
    • Register webhook endpoint (preview)
    • List webhook endpoints (preview)
Core APIs
Core APIs
  • Start
  • Onboarding
  • Wallet
  • Payouts
  • Cards
  • Transactions
Closed loop APIs
Card Simulator
SDK APIs
SDK APIs
  • Coming Soon!
Core APIs
Core APIs
  • Start
  • Onboarding
  • Wallet
  • Payouts
  • Cards
  • Transactions
Closed loop APIs
Card Simulator
SDK APIs
SDK APIs
  • Coming Soon!
  1. Money Movement

Create reversal

POST
https://api.staging.vrtx.sa/cl/v1/reversal
Last modified:2026-01-08 11:08:23
Creates a reversal transaction that negates the financial effect of a previously posted transaction.
This endpoint is used when an original transaction (for example: refund, fund, or payout) must be cancelled
or undone due to rejection, failure, or post-processing validation.
The reversal does not delete the original transaction. Instead, it creates a new transaction of type REVERSAL
that mirrors the original transaction’s amount and currency, while inverting the debit and credit legs
according to the original transaction type.
Each reversal can optionally reference the original transaction (by ID or external reference) to ensure full
auditability, ledger traceability, and regulatory compliance.
Provide either original_transaction_id or original_transaction_external_reference (not both).

Reversal Behavior by Transaction Type#

Original Transaction TypeReversal Effect
RefundDebits the refunded amount back from the recipient
FundCredits the amount back to the source (business) wallet
PayoutCredits the business and debits the wallet
TransferCredits the sender and debits the receiver
WithdrawalCredits the wallet/business and debits the "World" or Clearing wallet
Any supported typeDebit and credit legs are inverted

Balance Handling#

If canOverdraft = true, the reversal may cause the wallet balance to go negative.
If canOverdraft = false and the wallet lacks sufficient balance, the reversal is rejected with INSUFFICIENT_BALANCE.

Request

Authorization
JWT Bearer
Add the parameter
Authorization
to Headers
Example:
Authorization: ********************
or
Body Params application/jsonRequired

Examples
{
    "original_transaction_id": "da6d857d-0bbf-411d-9902-ec90e0e92963",
    "external_reference": "REV-1",
    "notes": "Refund invoice rejected from ZATCA"
}

Request Code Samples

Shell
JavaScript
Java
Swift
Go
PHP
Python
HTTP
C
C#
Objective-C
Ruby
OCaml
Dart
R
Request Request Example
Shell
JavaScript
Java
Swift
cURL
curl --location --request POST 'https://api.staging.vrtx.sa/cl/v1/reversal' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data-raw '{
    "original_transaction_id": "da6d857d-0bbf-411d-9902-ec90e0e92963",
    "external_reference": "REV-1",
    "notes": "Refund invoice rejected from ZATCA"
}'

Responses

🟢200
application/json
Reversal created
Body

Example
{
    "id": "4e0f5b1f-c449-4083-a408-bfe1355a3b6b",
    "total_reversed_amount": "10.00",
    "currency": "SAR",
    "original_transaction_id": "b6327558-741e-411c-866b-0eec8ea26005",
    "original_transaction_amount": "10.00",
    "original_transaction_reference": "PO-0013579",
    "sender_account_number": "054200002027",
    "receiver_account_number": "054200001011",
    "external_reference": "REV-1",
    "notes": "Refund invoice rejected from ZATCA",
    "status": "SUCCESS",
    "created_at": "2025-10-25T14:35:46.011Z"
}
đźź 400
đźź 401
đźź 403
đźź 404
đźź 422
Modified at 2026-01-08 11:08:23
Previous
Create transfer
Next
Create withdrawal
Built with