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_SECRETread 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
| Property | Type | Description | Defined in |
|---|---|---|---|
db? | PesaDatabaseAdapter | Database 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 production | packages/pesa/src/types/config.ts:57 |
provider | BasePaymentProvider | The 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? | string | Shared 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 |