Managing Open Transactions

A sale transaction is closed when one of the following criteria is met:

  • The number of VCCs created for that Sale reaches the amount of ExpectedPayments indicated in the Sales request. In other words, if ExpectedPayments = 3 in the Sales request, we would expect 3 VCCs to be created. Once 3 VCCs are created, the Transaction would be considered Closed.
  • The VCC is issued for the full amount of the sale amount. For example, if the sale was $500 and the VCC was issued for $500, the Transaction would be considered Closed. Even if ExpectedPayments = 3 in this example, there is no additional balance to issue additional VCCs from which is why it would be considered Closed.

In the event neither scenario occurs, the transaction remains in an open status.


It is important that Open Transactions are managed properly according to the cardholder’s expectations. Just because there was no response from your API request doesn’t mean the Sale did not get processed (and therefore the cardholder was impacted). The following details the process for managing identifying, handling, and preventing inadvertent Open Transactions.

Options for Identifying Open Transactions

The simplest way (but manual) is to check the CXP Portal by looking at the Purchases > Transactions report. You can filter on Status in that report.

Another option is to pull Reporting via API. We have different ways to Search Transactions - click here to visit our Developer Portal.

Handling Open Transactions

If the Open Transactions are intentional, no action is needed.

If the Transaction should not be open you’ll want to either:

  • Void/return/cancel if you don’t plan on creating a VCC or need to give money back to the customer
  • Complete the transaction by issuing a VCC for the supplier to process

Preventing Inadvertent Open Transactions

Some Open Transactions are intentional. Others are just a result of not completing the process for one reason or another. We’ve seen many Open Transactions as a result of system issues - where either we don’t respond to the API request or the response is not received by the requester.

To eliminate this issue we recommend utilizing our SequenceNumber logic. When we receive a request that is the exact same payload and specifically includes the exact same SequenceNumber in the payload, we will either:

  • Return the same response as the original request if we’ve already seen this request (new Sale will NOT be processed and new VCC will NOT be issued since it was issued in the original request) or,

  • Process the sale or issue a new VCC and respond with those Sale or VCC details as if we’ve never seen this request before