Skip to main content
npm install @paykit-sdk/medusajs @paykit-sdk/core @paykit-sdk/stripe

Setup

import { defineConfig } from '@medusajs/framework/utils';
import { stripe } from '@paykit-sdk/stripe';

export default defineConfig({
  modules: [
    {
      resolve: '@medusajs/payment',
      options: {
        providers: [
          {
            resolve: '@paykit-sdk/medusajs',
            options: {
              provider: stripe(),
              webhookSecret: process.env.STRIPE_WEBHOOK_SECRET,
              debug: process.env.NODE_ENV === 'development',
            },
          },
        ],
      },
    },
  ],
});
Swap stripe() for any PayKit provider and everything else stays the same.

Configuration Options

OptionTypeRequiredDefaultDescription
providerPayKitProviderYesA PayKit provider instance (e.g. stripe(), gopay())
webhookSecretstring | nullNonullWebhook secret used to verify incoming webhook payloads
amountToCentsMultipliernumber (≥ 1)No1Multiplies the Medusa amount before sending to the provider. Use 100 for cent-based providers
debugbooleanNofalseLogs PayKit operations to the console

amountToCentsMultiplier

Some providers (e.g. GoPay) expect amounts in the smallest currency unit — 3000 for 30 EUR. If Medusa is passing the amount in the major unit, set this option to convert automatically:
import { gopay } from '@paykit-sdk/gopay';

{
  resolve: '@paykit-sdk/medusajs',
  options: {
    provider: gopay(),
    webhookSecret: process.env.GOPAY_WEBHOOK_SECRET,
    amountToCentsMultiplier: 100, // 30 EUR → sends 3000 to GoPay
  },
}
Defaults to 1 (no conversion). Minimum value is 1.

Example

See a working Medusa + PayKit server: GitHub