Linkit

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 idtypeLinkit app slugRole
stripegateway_syncstripe-paymentsList/sync Stripe PaymentIntents
moyasargateway_syncmoyasar-paymentsList/sync Moyasar payments
tapgateway_synctap-paymentsList/sync Tap charges (POST /v2/charges/list)
dinerogateway_syncdinero-paymentsStatus refresh for configured payment_id values
paypalgateway_syncpaypal-commerceOAuth + GET /v1/reporting/transactions sync
hyperpaygateway_synchyperpay-checkoutOPPWA 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)

Providerapi_keyapi_secret
StripeSecret key sk_live_ / sk_test_ (preferred)Same secret if api_key empty
MoyasarSecret sk_live_ / sk_test_ (HTTP Basic username)Same if needed
TapSecret sk_live_ / sk_test_ (Bearer)Same if needed
Dineromerchant_keyAPI password (hash signing, same role as platform DINERO_PASSWORD)
PayPalREST client idREST client secret (OAuth client credentials grant)
HyperPayOPPWA entityIdBearer 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.