Interface: PesaConfig

Defined in: packages/pesa/src/types/config.ts:38

Configuration passed to createPesa.

Only provider is required. Everything else ships with sensible defaults:

  • SQLite event store at ./pesa.db
  • No plugins
  • BORAPESA_WEBHOOK_SECRET read from environment

Example

import { createPesa } from '@borapesa/pesa';
import { SelcomPaymentProvider } from '@borapesa/selcom';
import { retryPlugin, loggingPlugin } from '@borapesa/pesa/plugins';

const pesa = createPesa({
  provider: new SelcomPaymentProvider({
    apiKey:    process.env.SELCOM_API_KEY!,
    apiSecret: process.env.SELCOM_API_SECRET!,
    vendor:    process.env.SELCOM_VENDOR!,
    env:       'sandbox',
  }),
  plugins: [
    retryPlugin({ maxAttempts: 3 }),
    loggingPlugin({ level: 'info' }),
  ],
  webhooks: {
    secret: process.env.BORAPESA_WEBHOOK_SECRET,
  },
  // Override for production:
  // db: new LibSQLAdapter({ url: process.env.TURSO_DATABASE_URL! }),
});

Properties

PropertyTypeDescriptionDefined in
db?PesaDatabaseAdapterDatabase adapter for the event store. Defaults to SQLite at ./pesa.db (zero config). Swap for LibSQLAdapter (Turso), PostgresAdapter, PrismaAdapter, or DrizzleAdapter for production deployments.packages/pesa/src/types/config.ts:77
plugins?PesaPlugin[]Plugin array. Plugins are composed in order. Built-in plugins available from @borapesa/pesa/plugins: - retryPlugin — exponential/linear/fixed backoff - idempotencyPlugin — prevents duplicate charges - loggingPlugin — structured logging with PII redaction - webhookVerifyPlugin — enforces webhook secret in productionpackages/pesa/src/types/config.ts:57
providerBasePaymentProviderThe payment provider adapter. Choose from @borapesa/selcom, @borapesa/clickpesa, @borapesa/azampay, @borapesa/dpo, @borapesa/pesapal, or use the built-in BogusPaymentProvider for local development.packages/pesa/src/types/config.ts:46
webhooks?{ secret?: string; }Webhook configuration.packages/pesa/src/types/config.ts:60
webhooks.secret?stringShared secret for HMAC verification of incoming webhooks. Falls back to process.env.BORAPESA_WEBHOOK_SECRET if not set. Required in production.packages/pesa/src/types/config.ts:67

On this page