Payment gateway providers (Stripe, Moyasar, Tap, Dinero, PayPal, HyperPay)
Gateway sync providers exposed alongside BNPL in the unified providers and payments-orders APIs
Payment gateway providers
Linkit registers card and gateway payment processors in the same discovery surface as BNPL (GET /api/v1/providers). Their type is gateway_sync: they map to integration apps that pull or refresh provider data into your workspace, not to the unified paylink create/capture flow.
POST /api/v1/providers/paylinks rejects all gateway_sync IDs (stripe, moyasar, tap, dinero, paypal, hyperpay). Use POST /api/v1/payments/orders with those provider IDs (or run the integration app on a schedule) instead.
Provider IDs and app slugs
Provider id | type | Linkit app slug | Role |
|---|---|---|---|
stripe | gateway_sync | stripe-payments | List/sync Stripe PaymentIntents |
moyasar | gateway_sync | moyasar-payments | List/sync Moyasar payments |
tap | gateway_sync | tap-payments | List/sync Tap charges (POST /v2/charges/list) |
dinero | gateway_sync | dinero-payments | Status refresh for configured payment_id values |
paypal | gateway_sync | paypal-commerce | OAuth + GET /v1/reporting/transactions sync |
hyperpay | gateway_sync | hyperpay-checkout | OPPWA GET /v1/query by date range |
BNPL providers (tabby, tamara, mispay) remain type: bnpl and continue to support paylinks.
Discovery
GET /api/v1/providers
Authorization: Bearer <token>Each item includes id, name, description, type, regions, and for routing, app_slug (same value used by Payments Orders).
Provider configuration
GET /api/v1/providers/config/{provider}
Authorization: Bearer <token>For gateway providers the payload includes note, endpoints (list_providers, provider_config, payment_orders), credentials hints, and where applicable custom_params or notes (e.g. Dinero sync_payment_ids, PayPal reporting windows, HyperPay host selection).
Payments Orders (orchestration + execute)
Use the same endpoint as BNPL; include gateway provider IDs in providers (see Payments Orders):
POST /api/v1/payments/orders
Authorization: Bearer <token>
Content-Type: application/json{
"providers": ["stripe"],
"order": {
"total_amount": 0,
"currency": "SAR",
"line_items": []
}
}The response includes app_slug (e.g. stripe-payments) and triggers that organization’s installed provider integration. Install and enable the corresponding app on the organization first.
Credentials (organization app)
| Provider | api_key | api_secret |
|---|---|---|
| Stripe | Secret key sk_live_ / sk_test_ (preferred) | Same secret if api_key empty |
| Moyasar | Secret sk_live_ / sk_test_ (HTTP Basic username) | Same if needed |
| Tap | Secret sk_live_ / sk_test_ (Bearer) | Same if needed |
| Dinero | merchant_key | API password (hash signing, same role as platform DINERO_PASSWORD) |
| PayPal | REST client id | REST client secret (OAuth client credentials grant) |
| HyperPay | OPPWA entityId | Bearer access token value (no Bearer prefix required in storage) |
Base URL (app record): use PayPal sandbox host (https://api.sandbox.paypal.com) or live (https://api-m.paypal.com). For HyperPay, set the OPPWA processing host from your contract (e.g. https://eu-test.oppwa.com vs https://oppwa.com).
Dinero only: set custom_params.sync_payment_ids to a JSON array of Dinero payment_id strings. There is no merchant-wide list API.
Synced provider data
Each gateway integration persists its own transaction-shaped records (for example Stripe PaymentIntents, Moyasar payments, Tap charges, Dinero payment rows, PayPal reporting lines, HyperPay queries). Those stores are created and upgraded with your Linkit deployment; enable the matching catalog app on the organization before expecting sync to succeed.