SMARTTERMINAL_REQUEST and TRANSACTION / SMARTTERMINAL_TRANSACTION Webhook Differences

WEBHOOK SUBSCRIPTIONS ARE LIMITED TO 5 PER PJMID
For more information on PayJunction account structures, see the PayJunction Account Structures guide.

There are three similar webhook event types that you can subscribe to for updates when transactions are processed on the Smart Terminal:

  • TRANSACTION
  • SMARTTERMINAL_TRANSACTION
  • SMARTTERMINAL_REQUEST

Although you can use either one, they serve two distinct purposes.

TRANSACTION

This event type is only sent once for any transaction, after the payment authorization stage is complete. This is best used for transaction logging applications. An example of this would be an application that passively records transactions and saves the data into a database or external service, such as Quickbooks, Salesforce, a shopping cart using Hosted Payments, or third party payment ledger integrated with PayJunction directly (CRMs and EMRs).

SMARTTERINAL_TRANSACTION

The same as TRANSACTION above, however these are only sent for Smart Terminal transactions that occur within a PayJunction account and includes additional details related to Smart Terminal transactions explicitly, such as requestPaymentId and smartTerminalId values.

SMARTTERMINAL_REQUEST

For examples of the data sent to the subscriber for the SMARTTERMINAL_REQUEST event type, please see the SMARTTERMINAL_REQUEST Webhook API document

This event type has been designed for integrators that wish to provide a better UI experience. Instead of only sending a single notification when a Smart Terminal transaction is approved, this event type sends notifications to indicate the Smart Terminal is still being connected to (CONNECTING), already in use and thus unavailable (BUSY), transaction in progress (IN_PROGRESS), and finally when the transaction has been completed (COMPLETE).

To prevent interruption of requests already in progress when using API versions prior to 2018-06-19 you must send interruptBusyTerminal=false in the body of the request.

For more information see the Testing for Busy or Offline Smart Terminal article.