Introduction
Teyra Pay is one API for accepting KNET, mada, cards, Apple Pay and other Gulf payment methods through a hosted checkout.
Teyra Pay lets your business accept online payments across the GCC with one integration. You create a payment from your server, send the customer to a secure Teyra Pay checkout page, and receive a signed webhook when the payment settles. You never handle card data.
What you can build
- Online checkout for your website or app, using hosted checkout.
- Payment links you share by WhatsApp, SMS or email, with no code at all. See Payment links.
- Store plugins for Shopify and WooCommerce.
- Refunds, full or partial, from the API or the dashboard. See Refunds.
Payment methods
| Method | payment_method value | Typical markets |
|---|---|---|
| KNET | knet | Kuwait |
| mada | mada | Saudi Arabia |
| Visa, Mastercard, American Express | card | All markets |
| Apple Pay | apple_pay | All markets |
| Google Pay | google_pay | All markets |
| Benefit | benefit | Bahrain |
| STC Pay | stc_pay | Saudi Arabia |
Which methods the customer sees depends on the currency, the customer's device and your account: cards, Apple Pay and Google Pay are available on every account, while KNET, mada, Benefit and STC Pay are available on accounts that support them. See Payment methods and your account.
How it works
Create a payment
Your server calls POST /v1/payments with the amount in minor units, the currency and a return_url. Teyra Pay returns a Payment with a checkout_url.
Redirect the customer
Send the customer's browser to checkout_url. They choose a method and pay on a page hosted by Teyra Pay, in Arabic or English.
Customer returns
The customer comes back to your return_url with payment_id and status in the query string.
Confirm and fulfil
Confirm the result with GET /v1/payments/:id or a verified payment.succeeded webhook, then fulfil the order.
The API at a glance
| Topic | Details |
|---|---|
| Base URL | https://api.teyra.co |
| Version | /v1 in every path |
| Authentication | Authorization: Bearer sk_test_… or sk_live_…. See Authentication |
| Format | JSON in and out, snake_case field names |
| Money | Integers in minor units plus an ISO currency code |
| IDs | Prefixed strings: pay_, re_, plink_, evt_, we_, dep_ |
| Timestamps | ISO 8601 in UTC, for example 2026-10-28T14:07:00.000Z |
| Safe retries | Idempotency-Key header on every POST. See Idempotency |
| Lists | Cursor pagination. See Pagination |