Copyright 2015-2026, Circumtec
Cashless is the service layer that handles card-based, app-based, and credit-card vending transactions for VMMS. It covers sell/xsell APIs, card validation, refunds, top-up and revalue flows, vend persistence, and downstream integrations with DynamoDB, Lambda, webhooks, and related vending services.
Cashless 4.x
Version: 4.0.06
Release Date: 10/06/2025
Removed usages of vmmscore.DynamoDBTool and switched DynamoDB operations to API-based calls.
VendService no longer calls vendFinish(); processing now waits for a successful DynamoDB insert to trigger Lambda.
XsellAction and SellAction no longer call forwardToWebhook(); downstream handling now starts from the DynamoDB-triggered Lambda flow.
Version: 4.0.05
Release Date: 20/03/2025
Refund records now set vendCount = -1 in Vend.toRefundRecord().
Fixed incorrect server_id values when syncing vend records to DynamoDB.
Improved membership-card lookup so the newest generated card is returned first.
Version: 4.0.04
Release Date: 27/02/2025
Changed vend.realVendTime from Date to Timestamp.
Version: 4.0.03
Release Date: 13/01/2025
Aligned webhook newvend output fields with the VMMS API cardvends output.
Version: 4.0.02
Release Date: 25/11/2024
Recovered vend-fail records now prefix the product name with the recovered vend timestamp.
Fixed SQL issues caused by MySQL 8 reserved keywords.
Version: 4.0.01
Release Date: 16/11/2024
Upgraded the JDBC driver to MariaDB 3.4.1.
Added support for Java 17 and MySQL 8.
Added Gradle support and related build/runtime upgrades.
Cashless 3.x
Version: 3.4.7
Release Date: 09/10/2024
Added DynamoDB l_new_vends error_code values for duplicate vend, MySQL errors, Java errors, invalid params, and sync failures.
Added required refundTxnId and txnId validation for xsell refunds.
Allowed getCardByNo to match cards stored with a company-id prefix.
Fixed Lambda action-path resolution in Cashless.java.
Version: 3.4.6
Release Date: 05/07/2024
Added order_id to t_card_vends.
Added order_id request parameters to xsell and sell APIs.
Version: 3.4.5
Release Date: 24/11/2023
Added country_code to Xsell/Sell requests with fallback from machine params to company params, defaulting to AU.
Fixed invalid-card handling for certain App Credit cards with company id 3.
Version: 3.4.4
Release Date: 07/09/2023
During credit-card top-up in xsell, vend_id is now written back to t_card_transactions.
Version: 3.4.3
Release Date: 13/01/2023
For recover=1 in xsell, the product name timestamp now uses the real transaction time submitted by the client.
Version: 3.4.2
Release Date: 03/11/2022
Set the default vend type for Sell action to 2 (RFID).
Version: 3.4.1
Release Date: 17/08/2022
Added vend_year, vend_month, vend_date, card_no_6, and card_no_4 when saving vend records to DynamoDB.
Version: 3.4.0
Release Date: 14/06/2022
Added CircumPay-specific vend type handling based on token and carduser role.
Added Lambda notifications for CircumPay balance, membership-card, and payment-method transactions.
Version: 3.3.9
Release Date: 09/12/2021
Updated timezone handling.
Refined cardAction company/IMEI validation rules for shared and company-bound cards.
Version: 3.3.8
Release Date: 09/12/2021
Added imgUrl to VendInfo and saved it into DynamoDB t_card_vends.
Version: 3.3.7
Release Date: 10/11/2021
Added product_name query parameter to XSellAction and SellAction so product lookup can be skipped when supplied.
Version: 3.3.6
Release Date: 25/08/2021
CardService now returns invalid card when the card state is not enabled.
Removed the @Test suppression from testCardServlet.
Version: 3.3.5
Release Date: 25/06/2021
Stopped sending SQS after creating card vend records; records are now saved directly to DynamoDB t_card_vends.
Updated l_new_vends status and error fields after DynamoDB save, including new_vend_id handling.
Version: 3.3.4
Release Date: 28/05/2021
Added token input support for sell.
Version: 3.3.3
Release Date: 11/05/2021
Added order_no support in sell/xsell card_vends writes.
Added no_surcharge support for xsell.
Version: 3.3.2
Release Date: 17/02/2021
Changed agent-fee parameter lookup so AGENT_CHARGE_INCLUDED is read from the current company and other agent fee settings from the parent company.
Version: 3.3.1
Release Date: 22/12/2020
Fixed Circumpay My Credit vends not being counted as credit-card vends.
Version: 3.3
Release Date: 05/08/2020
Added dual servlet/Lambda dispatch for the full action set defined in web.xml.
Version: 3.2
Release Date: 29/07/2020
Added dual servlet/Lambda support for sell.
Version: 3.1
Release Date: 29/07/2020
Added dual servlet/Lambda support for xsell.
Version: 3.0
Release Date: 21/07/2020
Rebuilt the project with Maven.
Cashless 2.x
Version: 2.50
Release Date: 15/07/2020
Added cached in-memory loading for system, company, and machine params.
Added configurable parameter refresh interval with read-through refresh logic.
Version: 2.49
Release Date: 14/07/2020
Simplified charge handling by reusing existing fail/refund fee parameters.
Updated gateway_charge calculation to ser_charge - agent_charge - preauth_charge - system_charge.
Version: 2.48
Release Date: 06/05/2020
Added AWS SQS messaging in VendService.insert() and VendService.update() to help keep MySQL and DynamoDB in sync.
Version: 2.48
Release Date: 04/02/2020
Introduced agent fee support, related database fields, and surcharge calculation rules.
Documented system_charge, agent_charge, preauth_charge, ser_charge, and gateway_charge behavior.
Version: 2.47
Release Date: 28/01/2020
Improved recover-mode product naming for normal, refund, and refund-fee vend records.
Version: 2.46
Release Date: 15/01/2020
Added xsell handling for cardNo=paypal.
Version: 2.45
Release Date: 13/01/2020
Added return_vend_id handling so successful new vends can return JSON with vend_id.
Version: 2.44
Release Date: 23/12/2019
Improved xsell credit-card detection when generating or matching cards.
Added is_recover support to prefix recovered vend product names with the real vend time.
Version: 2.43
Release Date: 06/12/2019
Added vend lookup helpers by txnId / imei / cardNo and refund helpers in VendDAO / VendService.
Extended xsell support for action=1 with vendId.
Changed vend matching to use txnId + imei + cardNo63.
Version: 2.42
Release Date: 04/11/2019
Fixed new credit-card transactions being counted as normal-card transactions.
Version: 2.41
Release Date: 28/10/2019
Fixed new credit cards failing to upload vend records.
Version: 2.40
Release Date: 08/10/2019
Added topup_amount support in ExtensiveVendServlet and VendServlet for CircumPay top-up flows.
Version: 2.39
Release Date: 02/10/2019
Added is_credit to t_card_vends and distinguished credit flows from normal vend flows.
Version: 2.38
Release Date: 12/08/2019
Added token and carduser_id parameters to ExtensiveVendServlet.
Updated SQL and AddCard handling for company-aware card creation.
Version: 2.37
Release Date: 13/07/2019
Added aid, auth_code, and contact/contactless fields for selected terminal uploads.
Version: 2.36
Release Date: 13/06/2019
Added PayPal transaction support in ExtensiveVendSell.
Version: 2.35
Release Date: 15/05/2019
Added revalueCard support in ExtensiveVendServlet for CircumPay top-up.
Version: 2.34
Release Date: 30/04/2019
Added automatic refund support based on card auto_refund_flag.
Disabled promo application when auto refund is enabled.
Fixed missing company id, card type, and holder id in auto-refund records.
Version: 2.33
Release Date: 24/04/2019
Added multi-vend support.
Version: 2.32
Release Date: 18/02/2019
Added support for additional cards that consume balance from a primary card.
Added optional webhook forwarding for new vend events when company API and webhook settings are enabled.
Added BaseDAO and hourly company-param caching.
Version: 2.31
Release Date: 16/07/2018
Stopped saving empty error_msg values for failed vend records.
Fixed incorrect vend_id values in auto-refund records.
Version: 2.30
Release Date: 03/07/2018
Added storage for declined and auto-refund credit-card transaction records.
Added report_all_vends support in GetParamServlet for newer DTU firmware.
Returned existing vend_id on duplicate vend detection.
Version: 2.29
Release Date: 11/12/2017
Fixed maxPrice precision handling in DTU parameter responses.
Saved jobNo for credit-card vend records and recover tracking.
Version: 2.28
Release Date: 02/11/2017
Added WEBHOOK_TRIGGER_URL and forwarded vend records after a vend happens.
Version: 2.27
Release Date: 08/09/2017
Added expiry_date, reference, and real_vend_time fields for credit-card vend records.
Fixed gettime returning London time.
Used jobno for recover flag tracking in credit-card transactions.
Version: 2.26
Release Date: 23/05/2017
Fixed DTU parameter database read errors.
Started recording update notes in whatsnew.txt.
Version: 2.25
Release Date: 17/02/2017
ParamServlet now returns machine and machine-type related parameters, with machine-level values overriding machine-type values.
Version: 2.24
Release Date: 06/10/2016
ParamServlet now returns records from t_dtu_params.
Version: 2.23
Release Date: 06/06/2016
Added duplicate txn_id protection when generating vend records.
Added pre-authorization fee handling and xsell preauth parameter logic.
Version: 2.22
Release Date: 04/03/2016
Improved VMMS card credit calculation when a daily limit is configured.
Version: 2.21
Release Date: 03/03/2016
Added RFID auto-refund rules based on company parameters and transaction order within the day.
Version: 2.20
Release Date: 18/02/2016
Revised agent surcharge and gateway charge calculations for parent-company agent scenarios.
Version: 2.19
Release Date: 18/02/2016
Extended charge parameter lookup to fall back through parent-company settings.
Version: 2.18
Release Date: 28/10/2015
Fixed a null last-credit issue that could cause server-side exceptions for newly issued VMMS cards.
Version: 2.17
Release Date: 07/10/2015
Formalized parameter lookup precedence across machine, company, and system levels.
Version: 2.16
Release Date: 30/09/2015
Tightened RFID card validity rules based on machine ownership and company matching.
Version: 2.15
Release Date: 25/09/2015
Added more fault-tolerant servlet validation and logging to avoid oversized DTU error responses.
Version: 2.14
Release Date: 26/08/2015
Added PRINT_INVOICE controls from machine/company params and returned invoice data to DTU when enabled.
Version: 2.13
Release Date: 20/08/2015
Added itemno_rule=4 with static key-value based item number mapping.
Version: 2.13
Release Date: 17/08/2015
Limited card lookup by card_no to one record when duplicates exist.
Version: 2.12
Release Date: 07/08/2015
Saved coil_no into t_card_vends using t_coils, t_coil_mapping, or item_no fallback rules.
Version: 2.11
Release Date: 06/08/2015
Machine-level itemno_rule now overrides machine-type itemno_rule when present.
Version: 2.11
Release Date: 30/07/2015
Updated itemNo calculation rules from DTU realNo values and stopped relying on server-provided VMC code.
Version: 2.10
Release Date: 29/07/2015
Moved MINIMUM_CREDITCARD_TRANSACTION and max_credit lookup to machine params first, then machine type.
Stored DTU realno in t_card_vends.
Version: 2.09
Release Date: 10/07/2015
Added minimum credit-card transaction handling.
Cashless 1.x
Cashless 1.x covers the earliest foundation stage of the Cashless service before the detailed version-by-version release history recorded in the current repository.
It established the original cashless vending transaction flow used by VMMS.
It laid the groundwork for card validation, vend recording, refund handling, and machine-facing transaction APIs.
