A modern, type-safe ZarinPal checkout client for Node.js. This 1.0.0 release keeps backward-compatible method names while upgrading internals, tooling, and tests.
- ✅ TypeScript-first with bundled type definitions
- ✅ Backward-compatible APIs (
create,PaymentRequest,PaymentVerification,UnverifiedTransactions,RefreshAuthority,TokenBeautifier) - ✅ Options-based client creation with
createWithOptions - ✅ Sandbox and production mode support
- ✅ Currency support for
IRRandIRT - ✅ Configurable request timeout handling
- ✅ Fast built-in Node.js test runner
- ✅ Strict linting + type-checking workflows
- ✅ Rollup build output (ESM + CJS) with declaration bundling
- ✅ Ready-to-run examples for all public methods
# npm
npm install zarinpal-checkout
# yarn
yarn add zarinpal-checkout
# pnpm
pnpm add zarinpal-checkoutOfficial ZarinPal documentation: https://www.zarinpal.com/docs/ Project wiki: https://github.com/siamak/zarinpal-checkout/wiki
If you want a ready-to-run Express integration using this package, see:
- Repository: zarinpal-express-checkout
- Raw README: https://github.com/siamak/zarinpal-express-checkout/raw/refs/heads/main/README.md
import ZarinpalCheckout from 'zarinpal-checkout';
const zarinpal = ZarinpalCheckout.create(
'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
false,
'IRT'
);
const request = await zarinpal.PaymentRequest({
Amount: 1000,
CallbackURL: 'https://example.com/payment/callback',
Description: 'Order #123',
Email: 'user@example.com',
Mobile: '09120000000'
});
console.log(request.url);import { createWithOptions } from 'zarinpal-checkout';
const zarinpal = createWithOptions('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', {
sandbox: true,
currency: 'IRR',
timeoutMs: 8000
});The examples/ directory includes runnable examples for every public method:
examples/create-client.tsexamples/payment-request.tsexamples/payment-verification.tsexamples/unverified-transactions.tsexamples/refresh-authority.tsexamples/token-beautifier.ts
Run with your preferred TypeScript runtime (for example tsx or ts-node) after replacing the merchant ID and callback URLs.
Creates a payment authority.
Verifies a completed payment authority.
Fetches unverified authorities.
Refreshes an existing authority expiration.
Preserves previous token beautifier behavior.
# npm
npm install && npm run lint && npm run typecheck && npm test && npm run build
- Siamak Mokhtari
MIT