Skip to main content

Tap

Tap Payments is a hosted checkout used across Kuwait, Saudi Arabia, the UAE, Bahrain, Qatar, Oman, Jordan and Egypt. Shoppers pay on Tap's page — cards, KNET, mada, BENEFIT, Apple Pay and the other methods enabled on your Tap account — and return to your store. Which methods appear is decided in your Tap account, not in TakeTheme.


Connecting​

Settings → Payments → Tap.

CredentialRequiredWhere to find it
Secret API KeyYesTap dashboard → goSell → API Credentials. Starts with sk_test_ or sk_live_

The key itself decides the mode: a sk_test_… key creates test charges and a sk_live_… key takes real money. There is nothing else to switch. Use the Secret key — a publishable key (pk_…) is rejected when you save.

No webhook setup is required

Orders are created when the shopper returns from Tap: TakeTheme retrieves the charge from Tap on the way back, so nothing needs to be registered for the normal flow. TakeTheme also asks Tap to send a webhook for every charge on its own, which creates the order if the shopper pays and then closes the tab. Those webhooks are signed with the same secret key, so there is no separate webhook secret to paste.


Settings​

SettingDefaultWhat it does
Checkout labelemptyCustomer-facing name at checkout (e.g. "Card, KNET or Apple Pay"). Blank shows "Tap"
Transaction feenoneFlat or percentage surcharge added to the order when this method is chosen
Payment discountnoneDiscount applied when the shopper picks this method
Send payment confirmation emailonEmails the customer when payment succeeds
Notify on payment failures (emails)emptyAlerts your team when a checkout fails

TakeTheme switches off Tap's own receipt emails and SMS, so shoppers get one confirmation, not two.


Currency​

TakeTheme creates the charge in your store currency. Which currencies work depends on your Tap account; if your store currency is not one your account accepts, checkout shows Tap's own error instead of a payment link.

If Tap reports a captured amount that differs from the order total, TakeTheme logs the difference for reconciliation but does not reject the payment.


Payment flow​

  1. Shopper picks Tap and submits the checkout.
  2. TakeTheme creates a Tap charge (tagged with an internal reference) and redirects the shopper to Tap's hosted page.
  3. Shopper pays with any method your account offers, including 3-D Secure.
  4. Tap sends the shopper back to TakeTheme (GET /v1/payment/tap/return/<reference>). TakeTheme retrieves that charge from Tap with your secret key — using the charge id it stored when it created the charge, never one from the browser — and, only if Tap reports it CAPTURED, creates the order, already Paid.
  5. The shopper lands on your store's thank-you page.

Tap also POSTs a webhook:

POST https://<your-api-host>/api/v1/payment/webhook/tap

Every delivery carries a hashstring header — an HMAC-SHA256 of the charge's key fields, keyed with your secret key. An unsigned or mismatched delivery is rejected with 403. Even a valid delivery never decides the outcome by itself: it only identifies the payment, and the status is re-read from Tap. Whichever of the return and the webhook arrives first creates the order — never both.

Failed and abandoned payments​

A declined, failed, cancelled or abandoned charge sends the shopper back to Payment Failed, where they can try again; no order is created. A charge that is still INITIATED, or that Tap reports as timed out or unknown, is treated as not decided yet — the store keeps checking rather than telling the shopper it failed.


Refunds​

Refunds are recorded in TakeTheme only — no refund call reaches Tap. Issue it in the Tap dashboard and record it here. See Refunds.


Troubleshooting​

Saving fails with "must be a Tap Secret API key". You pasted the publishable key (pk_…) or a key with extra characters. Copy the Secret key (sk_test_… or sk_live_…) from goSell → API Credentials.

Checkout says Tap rejected the secret API key. The key was revoked or belongs to the other mode. Generate a fresh one in the Tap dashboard and paste it again (masked values are ignored on save).

The shopper paid but no order appeared. Open the order's payment record: if retrieving the charge could not reach Tap, the storefront keeps checking and the order appears as soon as it can. A 403 in the webhook log means the delivery's signature didn't match your stored key — re-save the key.

A payment method is missing from the Tap page. Methods are enabled per account on Tap's side; TakeTheme sends no method filter.