Single Session with Pre-Authorization

In the Pre-Authorization flow for a single vending session, payment authorization (of the highest amount the peripheral is willing to charge the consumer) is completed immediately after the card is presented- meaning before product selection takes place, and the settlement is performed once the product or service has been delivered.

This ensures the transaction is pre-approved, reducing the risk of payment failure after the consumer has selected a product. The rest of the process follows product selection, vending, and settlement, similar to the pre-selection flow.

Payment Flow

Visualize the Pre-Authorization process with the diagram below, which illustrates each step of the single vending session flow, from product selection to payment authorization and dispensing.

Below is a breakdown of the diagram:

  1. The consumer presents the card to the Nayax Device.
  2. The Nayax Device sends an authorization request to the Nayax Server.
  3. The Nayax Server forwards the authorization request to the Billing Provider.
  4. The billing Provider sends an authorization response (approved) to the Nayax Server.
  5. Nayax Server sends the authorization response (approved) back to the Nayax Device.
  6. The peripheral's SDK begins the session and triggers the "session begin" event:
    vmc_vend_event_handler_cb(vm_vend_event_on_session_begin)
    vend_callbacks(onBeginSession(funds_avail))
    vmc_vend_events()
    (via onBeginSession(funds_avail))
  7. Message to the consumer: "Please Select a Product."
  8. The consumer selects a product.
  9. The peripheral's SDK sends a "vend request" to the Nayax Device:
  10. The peripheral's SDK handles transaction data received from the Nayax Device via Transfer Data command (said data includes information about the Nayax transaction ID and the consumer's card details):
    vmc_vend_event_handler_cb(vm_vend_event_on_transaction_info)
    vend_callbacks(onTransactionInfo(data))
    vmc_vend_events()
    (via onTransactionInfo(data))
  11. The peripheral's SDK triggers the "vend approved" event:
    vmc_vend_event_handler_cb(vm_vend_event_on_vend_approved)
    vend_callbacks()
    (via onVendApproved(session))
    vmc_vend_events()
    (via onVendApproved(session))
  12. The peripheral dispenses the product/ provides the service to the consumer
  13. The SDK reports vend success:
    vmc_vend_vend_status(&session, __true)
    vmc_vend_events()
    (via onVendApproved(session) -which would return "true")
    vmc_vend_events()
    (via onVendApproved(session) -which would return "true")
    and completes the vend session:
    vmc_vend_vend_session_complete_lowlevel()
    no such function in C# or Java due to the nature of the languages
    no such function in C# or Java due to the nature of the languages
  14. Message to the consumer: "Please Take Product."
  15. Nayax Device sends a settlement request to the Nayax Server.
  16. Nayax Server forwards the settlement request to the Billing Provider.
  17. The billing Provider sends a settlement response (OK) to the Nayax Server.
  18. Nayax Server sends the settlement response (OK) back to the Nayax Device.
  19. The vending session ends.
  20. Message to Card Holder: "Thank you & Goodbye."

See Also