Transaction management

Prev Next

Transaction management through JSON API v2

WebPay API v2 for capture/refund/void is a REST web service and you will need a HTTP client library (like cURL - http://curl.haxx.se). All API calls are JSON documents POST-ed over HTTPS to our test server at https://ipgtest.monri.com

IMPORTANT Parametrize https://ipgtest.monri.com URL, in production mode the subdomain will be different.

An example of such call using cURL from command line may look like this:

curl -H "Content-Type: application/json" -H "Accept: application/json" -k -i -d request_json https://ipgtest.monri.com/v2/trx-management

where request_json is a JSON document that contains data necessary for transaction processing and https://ipgtest.monri.com/v2/trx-management is an URL that responds to transaction management API calls.

IMPORTANT Accept and Content-Type headers must be set to application/json for all message types.

Capture

After an authorization is successfully made, a capture call must be done to settle that authorization. Capture JSON document is POST-ed to https://ipgtest.monri.com/v2/trx-management where order_number has a value from original authorization.

Document example for capture message may look like this:

{
  "transaction": {
    "authenticity_token": "7db11ea5d4a1af32421b564c79b946d1ead3daf0",
    "order_number": "11qqaazz",
    "amount": 1000,
    "currency": "EUR",
    "transaction_type": "capture",
    "digest": "e64d4cd99367f0254ed5296d38fad6ce87d3acab"
  }
}

Digest is calculated in the following way:

digest = SHA512(key + order_number + amount + currency)

If all values pass validations at our side, transaction is sent to the bank and response is returned. That response may look like this:

HTTP status code: 201 - Created

HTTP headers:

{
   :connection=>"keep-alive",
   :date=>"Wed, 19 Feb 2026 15:43:50 GMT",
   :content_type=>"application/json; charset=utf-8",
   :cache_control=>"max-age=0, private, must-revalidate",
   :x_ua_compatible=>"IE=Edge",
   :x_runtime=>"0.390599",
   :transfer_encoding=>"chunked"
}

HTTP body:

{
  "transaction": {
    "id": 28638,
    "acquirer": "xml-sim",
    "order_number": "11qqaazz",
    "amount": 1000,
    "currency": "EUR",
    "outgoing_amount": 1000,
    "outgoing_currency": "EUR",
    "approval_code": "551484",
    "response_code": "0000",
    "response_message": "transaction approved",
    "reference_number": "886274",
    "systan": "028638",
    "eci": null,
    "xid": null,
    "acsv": null,
    "cc_type": "visa",
    "status": "approved",
    "created_at": "2026-02-19T16:43:50+01:00",
    "transaction_type": "capture",
    "enrollment": null,
    "authentication": null,
    "pan_token": null,
    "issuer": "xml-sim",
    "three_ds_version": null,
    "payment_method": null
  }
}

A client must parse a body from HTTP response and extract all values from that JSON document.

Transaction is approved only and if only status is set to approved. All other fields are standard data carried over payment networks. If issuer declines a transaction, status flag is set to declined. In a case of an error, the flag will be set to invalid.

IMPORTANT Do not rely on any output variable except status to determine success of capture.

NOTICE We highly recommend to our merchants to keep a whole response string and to save all parsed values for easier troubleshooting during the integration phase and production later on. The quality of our support depends on availability of these information.