Accepting Transactions

After a cashier scans items and finalizes an order on the POS, the system should send a transaction request using Tap's Intent APIs. This request immediately alerts the linked payment terminal, displaying the transaction details for the customer to review and complete payment.

📘

Ensure the merchant keys are used with Intent API

Prerequisites

Before starting the integration, please verify the following:

  1. The merchant has been successfully onboarded to your POS platform.
  2. Your POS platform has received the webhook events for merchant and terminal details.

Integration Steps

Step 1: Create an Intent

  1. Call the Create an Intent API.
  2. In the request, include:
    • The merchant and terminal details are obtained from the Connect webhook event.
    • The relevant order information and customer details, if the customer is enrolled in a loyalty program.
📘

If the terminal is available and not processing another transaction, it will accept the new payment request and return a successful response with an INITIATED status. However, if the terminal is already handling an active transaction, the Create Intent API will return a 400 Bad Request Error status along with a descriptive message explaining the reason.

Once the customer completes the transaction on the terminal, Tap will automatically send the final transaction status to your POS system via the configured POST webhook URL.

Step 2: Cancel an Intent

After checkout is completed and a transaction is initiated, a customer may choose to pay with cash instead, or the cashier might experience a system error or connectivity issue. In any such scenario, the POS system can cancel the transaction before its status is finalized.

When a cancellation is requested, the system notifies the linked terminal, enabling the cashier to cancel the transaction directly from the POS interface.

📘

Ensure that the Intent ID has been generated and is in the INITIATED status.

To cancel an Intent:

  1. Call the Cancel an Intent API.
  2. Pass the intent_id that was returned from the original Create Intent request.

Did this page help you?