In regard to Session Files, the LitleXML Reference Guide (9.11) states the following:
- A Batch should not exceed 20,000 transactions. If the number of transaction for a single merchant exceeds 20,000, you should create multiple batches for the same merchant, each batch containing not more than 20,000 transactions.
- A Batch should not contain only one transaction, unless the merchant has only one transaction for the day.
There's some uncertainty on what to do in the circumstances that may cause there to be one transaction for a batchRequest.
For example, what if there are 20,001 transactions for the day. If we put 20,000 in one batch (which is the max limit), and the remaining transaction in another batch, this technically violates that specified rule to not put one transactions in a batch. However, does it not make sense to do so in this case?
Or imagine the case where we have an in-house rule that only places 10,000 transactions in a batch (due to throttling and sizing), and likewise, there are 10,001 transactions to process, leaving that one transaction in its own batch. Does this violate the rule?
I'm curious how stringent the rule is that prevents one transaction from being in a batch, and how much complexity we have to put into our code to deal with this. Is this a guideline to prevent abuse (i.e. creating hundreds of batches for a single submerchant with one transaction each), or is this a hard-stop rule, that if the Vantiv processor sees this, it will reject the transaction?
Ideally, we'd be able to have one transaction in a batch if the limit would be surpassed.
We could do some extra complexity in our code to handle this if the "Batch should not contain only one transaction" is a hard and fast rule. For example, we could try to split off transactions into a minimum of 2 transactions. e.g. If there are 20,001 txns, put 19,999 in one batch, and 2 in another. I'd really like to avoid adding logic like this if possible.