Markdown

Reversal (CCREVERSE)

Reverse or void an authorization before it settles, with an option to auto-reroute to a credit if it already has.

Merchants may request to reverse or void the original authorization before it is settled.

POSThttps://api.inoviopay.com/payment/pmt_service.cfm

Request Parameters

Parameter Description
REQUEST_ACTION Required Must be set to CCREVERSE.
REQUEST_REF_PO_ID Required Reference Order ID (PO_ID) of the original transaction.
CREDIT_ON_FAIL Optional If set to 1, the system will automatically attempt to credit the transaction if the reversal request fails (e.g., if it already settled).

Handling the Response

Monitor the response to verify the authorization was successfully voided before settlement.

Field Name Description
TRANS_STATUS_NAME Check this to ensure the reversal was APPROVED.
TRANS_VALUE The approved reversal amount. Similar to credits, this will return as a negative value (e.g., -25.00).
TRANS_ID The unique Transaction ID assigned specifically to this reversal event.
PO_ID The original Purchase Order ID linking this void back to the initial authorization.
curl -X POST "https://api.inoviopay.com/payment/pmt_service.cfm" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "request_action=CCREVERSE&req_username=api_user&req_password=P%40ssw0rd%21&site_id=12345&request_api_version=4.14&request_response_format=JSON&request_ref_po_id=18103630&credit_on_fail=1"

Reverse or credit in one call: CREDIT_ON_FAIL

CCREVERSE reverses the original authorization; CCREVERSECAP reverses a successful CCCAPTURE transaction instead. Both actions accept CREDIT_ON_FAIL.

Setting CREDIT_ON_FAIL=1 on CCREVERSE (or CCREVERSECAP) tells the gateway that if the order is already settled, and therefore cannot be reversed, the gateway itself re-routes the request to CCCREDIT instead of just failing. You send one request and the gateway decides whether a reversal or a credit is the correct operation for the order's current state.

Verified against the gateway

This re-route behavior was verified against the gateway directly, not just claimed in the spec. The response for a re-routed request comes back with REQUEST_ACTION equal to CCCREDIT, not CCREVERSE. Check REQUEST_ACTION in the response, not just TRANS_STATUS_NAME, if you need to know server-side whether the re-route happened.

Without CREDIT_ON_FAIL, attempting to reverse an already-settled order returns gateway service code 515 (a decline) instead of succeeding.

Because the re-route is transparent, do not write your own settlement pre-check before deciding whether to call CCREVERSE or CCCREDIT. Send CCREVERSE with CREDIT_ON_FAIL=1 and read REQUEST_ACTION off the response to see which operation the gateway actually performed.