Stripe

View as Markdown

Accept card, direct debit, and digital wallet payments through Stripe using PaymentKit. PaymentKit acts as the payment orchestrator and provides the required PCI compliance documentation used to enable Stripe’s raw card APIs.

Set up summary

To accept payments with Stripe in PaymentKit, you will need to:

  1. Request access to Stripe raw card APIs
  2. Enable raw card number processing in Stripe Dashboard
  3. Create Stripe API keys
  4. Connect Stripe to PaymentKit
  5. (Optional) Enable Apple Pay and Google Pay

Request access to Stripe raw card APIs

PaymentKit uses Stripe’s raw card APIs, which must be enabled by Stripe.

PaymentKit is PCI compliant and provides the required compliance documentation, including the Self-Assessment Questionnaire (SAQ D) and On-Site Attestation of Compliance. These documents are required when requesting access to Stripe’s raw card data APIs. You do not need to complete PCI certification separately.

Share the following documents with Stripe when submitting your request:

Submit a request through Stripe Support using the following message:

I am requesting access to Stripe’s raw card data APIs for my account. PaymentKit serves as our PCI-compliant payment orchestrator and provides the required Self-Assessment Questionnaire (SAQ D) and On-Site Attestation of Compliance, which can be accessed at the following links:

Stripe should get back to you within a few days.

Enable raw card number processing in Stripe Dashboard

Once Stripe has approved your raw card API access, you must enable the setting in your Stripe Dashboard to avoid warnings when PaymentKit processes payments.

  1. In your Stripe Dashboard, navigate to Settings > Integration
  2. Under the Advanced section, enable Allow processing of raw card numbers

For more details, see Stripe’s documentation on enabling access to raw card data APIs and Stripe’s integration security guide.

If this setting is not enabled, Stripe will display a one-time warning about full card numbers being passed to their API. This is expected behavior — PaymentKit’s secure proxy (VGS) detokenizes card aliases before forwarding them to Stripe. Enabling this setting acknowledges that your integration intentionally sends raw card data.

Create Stripe API keys

PaymentKit requires Stripe API keys to securely connect to your Stripe account.

  1. In your Stripe account, navigate to the API keys page
  2. Create a restricted API key
    • How will you use this API key: Providing this key to another website
    • 3rd party name: PaymentKit
    • 3rd party URL:http://app.paymentkit.com/
  3. Copy the following values:
    • Publishable key
    • Restricted secret key

Connect Stripe to PaymentKit

  1. Navigate to Orchestration → Payment processors
  2. Click Add Processor and select Stripe
  3. Enter your publishable key and restricted key
  4. Turn on the payment methods you want to accept payments in (for Apple Pay and Google Pay, you will need to complete the additional steps below)

Enable Apple Pay and Google Pay

Register Your Domain

A custom domain is required before digital wallets can be enabled.

  1. Register your domain in Stripe here
  2. Verify the domain

Add Apple Pay and Google Pay as accepted payment methods

After your domain is registered:

  1. Navigate to Orchestration → Payment processors

  2. Edit your Stripe processor settings

    Edit Stripe Psp
  3. Add Apple Pay and Google Pay as accepted payment methods

Notes on how wallet availability works

PaymentKit does not control whether Apple Pay or Google Pay is shown. Availability is determined entirely by Stripe based on device, browser, and wallet configuration.

Availability Summary

Apple Pay

  • Safari on macOS, iOS, and iPadOS

Google Pay

  • Android devices
  • Supported Chrome desktop browsers

For full requirements, see Stripe’s documentation here.

You can also compare expected behavior using Stripe’s demo pages here and here.

Embedding Apple/Google Pay into custom checkout

Once enabled, Apple Pay and Google Pay can be integrated directly into your custom checkout form using PaymentKit’s <ElementsForm />. Click to learn more.

Stripe Link

Stripe Link is Stripe’s one-click wallet: returning shoppers who have a Link account can pay with a saved card without re-entering their card details. In PaymentKit, Link is offered as a checkout wallet on Stripe processors, alongside Apple Pay and Google Pay.

Stripe Link is only available on Stripe processors. It is non-fungible — a Link payment is always processed by the Stripe processor that collected it and is never routed to another processor.

  1. Navigate to Orchestration → Payment processors
  2. Edit your Stripe processor
  3. In the wallet section, turn on Stripe Link

Unlike Apple Pay and Google Pay, Stripe Link does not require registering a custom domain — enabling the payment method is all that’s needed.

Link is only offered at checkout when it is enabled on the Stripe processor the checkout is routed to. If a checkout is routed to a non-Stripe processor, Link is not shown.

PaymentKit renders Link in one of two ways, chosen automatically per shopper:

  • Express button — shown when the shopper already has an authenticated Link session, letting them pay in one click near the top of the checkout.
  • Link tile — shown otherwise, as a selectable method in the checkout’s payment-method list. Selecting it mounts the same Link element so the shopper can authenticate.

As with Apple Pay and Google Pay, PaymentKit does not control Link eligibility. Whether a shopper sees Link — and which cards are available inside it — is determined by Stripe based on the shopper’s Link account, device, and browser.

Payment mode vs setup mode

A checkout session runs in one of two modes, and Link supports both:

  • Payment — charges the shopper now. The Link payment method is attached to the customer and a payment is created and confirmed.
  • Setup — saves the Link payment method for later use without charging (for example, to collect a reusable method before a trial or for future invoices).

When a checkout includes recurring line items, PaymentKit saves the Link method with an off-session mandate so future renewals can charge it. A Link method saved without that mandate is declined by Stripe on off-session renewal charges — PaymentKit handles this for you when Link is used through PaymentKit’s checkout.

Custom checkout integration

Embedding Stripe Link into custom checkout

When you build a custom checkout with PaymentKit’s <ElementsForm />, Stripe Link is included automatically once it’s enabled on your Stripe processor — no extra wiring required. Stripe.js is loaded via an external script for PCI compliance.

If you’re building a fully custom Link flow instead of using <ElementsForm />, PaymentKit.js exposes Link through a callback-driven API — initStripeLink() mounts the element and onLinkResult() delivers the outcome. Unlike Apple Pay and Google Pay, Link is not confirmed via paymentKit.submit(): Stripe renders the button and fires its own confirm event.