Class: ClickPesaProvider
Defined in: providers/clickpesa/src/clickpesa.ts:156
Extends
BasePaymentProvider
Constructors
Constructor
new ClickPesaProvider(config): ClickPesaProvider;Defined in: providers/clickpesa/src/clickpesa.ts:172
Parameters
| Parameter | Type |
|---|---|
config | ClickPesaConfig |
Returns
ClickPesaProvider
Overrides
BasePaymentProvider.constructorProperties
| Property | Modifier | Type | Default value | Description | Overrides | Defined in |
|---|---|---|---|---|---|---|
name | readonly | ProviderName | 'clickpesa' | Unique provider identifier. | BasePaymentProvider.name | providers/clickpesa/src/clickpesa.ts:157 |
Methods
bulkCreateCustomerNumbers()
bulkCreateCustomerNumbers(controlNumbers): Promise<BillPayBulkResult>;Defined in: providers/clickpesa/src/clickpesa.ts:847
Bulk-create up to 50 customer control numbers in a single request.
Parameters
| Parameter | Type |
|---|---|
controlNumbers | Record<string, unknown>[] |
Returns
Promise<BillPayBulkResult>
bulkCreateOrderNumbers()
bulkCreateOrderNumbers(controlNumbers): Promise<BillPayBulkResult>;Defined in: providers/clickpesa/src/clickpesa.ts:834
Bulk-create up to 50 order control numbers in a single request.
Parameters
| Parameter | Type |
|---|---|
controlNumbers | Record<string, unknown>[] |
Returns
Promise<BillPayBulkResult>
cancelOrder()?
optional cancelOrder(_orderId): Promise<CancelOrderResult>;Defined in: packages/pesa/dist/providers/base.d.ts:100
Cancel a pending or in-progress order.
Parameters
| Parameter | Type |
|---|---|
_orderId | string |
Returns
Promise<CancelOrderResult>
Throws
PesaUnsupportedError — if the provider does not support cancellation.
Inherited from
BasePaymentProvider.cancelOrdercreateChecksum()
createChecksum(payload): string;Defined in: providers/clickpesa/src/clickpesa.ts:916
Internal
Create a ClickPesa-compatible HMAC-SHA256 checksum for a request body.
Algorithm (per ClickPesa docs):
- Canonicalize — recursively sort all object keys alphabetically.
- Serialize to compact JSON (no whitespace).
- Return hex digest of HMAC-SHA256(key, json_string).
Exposed for testing via the provider instance.
Parameters
| Parameter | Type |
|---|---|
payload | Record<string, unknown> |
Returns
string
createCustomerControlNumber()
createCustomerControlNumber(params): Promise<BillPayControlNumber>;Defined in: providers/clickpesa/src/clickpesa.ts:808
Generate a persistent control number tied to a specific customer.
At least one of phone or email must be supplied.
Parameters
| Parameter | Type |
|---|---|
params | { amount?: number; billReference?: string; customerName: string; description?: string; email?: string; paymentMode?: "ALLOW_PARTIAL_AND_OVER_PAYMENT" | "EXACT"; phone?: string; } |
params.amount? | number |
params.billReference? | string |
params.customerName | string |
params.description? | string |
params.email? | string |
params.paymentMode? | "ALLOW_PARTIAL_AND_OVER_PAYMENT" | "EXACT" |
params.phone? | string |
Returns
Promise<BillPayControlNumber>
createOrder()
createOrder(payload): Promise<OrderResult>;Defined in: providers/clickpesa/src/clickpesa.ts:299
Initiate a checkout / USSD push / redirect.
The SDK calls validateCreateOrderPayload() before this,
so you can assume amount > 0, reference is non-empty,
and customer.phone is in MSISDN format.
Parameters
| Parameter | Type |
|---|---|
payload | CreateOrderPayload |
Returns
Promise<OrderResult>
Overrides
BasePaymentProvider.createOrdercreateOrderControlNumber()
createOrderControlNumber(params?): Promise<BillPayControlNumber>;Defined in: providers/clickpesa/src/clickpesa.ts:787
Generate a one-time order control number.
Customers pay this number via mobile money, SIM banking, or CRDB Wakala. All fields are optional — the API auto-generates a reference if omitted.
Parameters
| Parameter | Type |
|---|---|
params? | { amount?: number; billReference?: string; description?: string; paymentMode?: "ALLOW_PARTIAL_AND_OVER_PAYMENT" | "EXACT"; } |
params.amount? | number |
params.billReference? | string |
params.description? | string |
params.paymentMode? | "ALLOW_PARTIAL_AND_OVER_PAYMENT" | "EXACT" |
Returns
Promise<BillPayControlNumber>
disburse()
disburse(payload): Promise<DisburseResult>;Defined in: providers/clickpesa/src/clickpesa.ts:466
B2C / wallet-out disbursement.
The SDK calls validateDisbursePayload() before this.
Parameters
| Parameter | Type |
|---|---|
payload | DisbursePayload |
Returns
Promise<DisburseResult>
Overrides
BasePaymentProvider.disbursegeneratePayoutLink()
generatePayoutLink(amount, orderId): Promise<string>;Defined in: providers/clickpesa/src/clickpesa.ts:644
Generate a hosted payout link.
The recipient uses the link to enter their own bank or mobile-money details — you don't need to collect them yourself. Returns a URL you redirect the recipient to.
Parameters
| Parameter | Type |
|---|---|
amount | number |
orderId | string |
Returns
Promise<string>
getAccountStatement()
getAccountStatement(
currency?,
startDate?,
endDate?): Promise<{
accountDetails: Record<string, unknown>;
transactions: Record<string, unknown>[];
}>;Defined in: providers/clickpesa/src/clickpesa.ts:691
Fetch a transaction statement for a given currency.
Parameters
| Parameter | Type | Default value | Description |
|---|---|---|---|
currency | string | 'TZS' | — "TZS" (default) or "USD". |
startDate? | Date | undefined | — Optional filter: start date. |
endDate? | Date | undefined | — Optional filter: end date. |
Returns
Promise<{
accountDetails: Record<string, unknown>;
transactions: Record<string, unknown>[];
}>
getBalance()
getBalance(): Promise<BalanceResult>;Defined in: providers/clickpesa/src/clickpesa.ts:529
Retrieve available balances across all active currencies.
Useful for dashboards, pre-disbursement checks, and wallet health monitoring. Returns per-currency balance entries with raw provider data for advanced use.
Returns
Promise<BalanceResult>
{ balances: [...] } with per-currency entries.
Throws
PesaUnsupportedError — if the provider does not expose balance data.
Since
0.2.0
Overrides
BasePaymentProvider.getBalancegetBanks()
getBanks(): Promise<{
bic: string;
name: string;
value?: string;
}[]>;Defined in: providers/clickpesa/src/clickpesa.ts:677
Returns
Promise<{
bic: string;
name: string;
value?: string;
}[]>
getBillPayDetails()
getBillPayDetails(billPayNumber): Promise<BillPayControlNumber>;Defined in: providers/clickpesa/src/clickpesa.ts:860
Query details of a specific control number.
Parameters
| Parameter | Type |
|---|---|
billPayNumber | string |
Returns
Promise<BillPayControlNumber>
getExchangeRates()
getExchangeRates(source?, target?): Promise<{
date: string;
rate: number;
source: string;
target: string;
}[]>;Defined in: providers/clickpesa/src/clickpesa.ts:664
Fetch the latest exchange rates.
Parameters
| Parameter | Type | Description |
|---|---|---|
source? | string | — ISO 4217 source currency (e.g. "USD"). All sources when omitted. |
target? | string | — ISO 4217 target currency (e.g. "TZS"). All targets when omitted. |
Returns
Promise<{
date: string;
rate: number;
source: string;
target: string;
}[]>
getNameLookup()
getNameLookup(phoneOrAccount): Promise<NameLookupResult>;Defined in: providers/clickpesa/src/clickpesa.ts:709
Resolve the account holder name for a phone or account number.
Useful for verifying recipient identity before disbursing.
Parameters
| Parameter | Type |
|---|---|
phoneOrAccount | string |
Returns
Promise<NameLookupResult>
Throws
PesaUnsupportedError — if the provider does not support name lookup.
Overrides
BasePaymentProvider.getNameLookupgetPaymentStatus()
getPaymentStatus(orderId): Promise<PaymentStatus>;Defined in: providers/clickpesa/src/clickpesa.ts:392
Poll or fetch the current payment status for an order.
Parameters
| Parameter | Type |
|---|---|
orderId | string |
Returns
Promise<PaymentStatus>
Overrides
BasePaymentProvider.getPaymentStatushandleWebhook()
handleWebhook(rawBody, headers): Promise<PaymentEvent>;Defined in: providers/clickpesa/src/clickpesa.ts:411
Parse + verify an incoming webhook.
The provider must:
- Verify its own cryptographic signature (HMAC, checksum, etc.)
- Parse the raw body into structured data
- Return a normalized PaymentEvent
The SDK handles UUID assignment, event persistence, plugin hooks, and user-registered handler emission after this method returns.
Parameters
| Parameter | Type |
|---|---|
rawBody | string | Buffer<ArrayBufferLike> |
headers | Record<string, string> |
Returns
Promise<PaymentEvent>
Overrides
BasePaymentProvider.handleWebhooklistOrders()
listOrders(params): Promise<ListOrdersResult>;Defined in: providers/clickpesa/src/clickpesa.ts:732
List payment orders for a date range.
Parameters
| Parameter | Type |
|---|---|
params | ListOrdersParams |
Returns
Promise<ListOrdersResult>
Throws
PesaUnsupportedError — if the provider does not support listing orders.
Overrides
BasePaymentProvider.listOrderspreviewDisburse()
previewDisburse(payload): Promise<PreviewResult>;Defined in: providers/clickpesa/src/clickpesa.ts:591
Preview / dry-run a disbursement before committing.
Parameters
| Parameter | Type |
|---|---|
payload | DisbursePayload |
Returns
Promise<PreviewResult>
Throws
PesaUnsupportedError — if the provider does not support preview.
Overrides
BasePaymentProvider.previewDisbursepreviewOrder()
previewOrder(payload): Promise<PreviewResult>;Defined in: providers/clickpesa/src/clickpesa.ts:544
Preview / dry-run a payment before committing.
Returns expected fees and validity without charging the customer.
Parameters
| Parameter | Type |
|---|---|
payload | CreateOrderPayload |
Returns
Promise<PreviewResult>
Throws
PesaUnsupportedError — if the provider does not support preview.
Overrides
BasePaymentProvider.previewOrderrefund()?
optional refund(_orderId, _amount?): Promise<RefundResult>;Defined in: packages/pesa/dist/providers/base.d.ts:94
Refund a completed payment.
Parameters
| Parameter | Type |
|---|---|
_orderId | string |
_amount? | number |
Returns
Promise<RefundResult>
Throws
PesaUnsupportedError — if the provider does not support refunds.
Inherited from
BasePaymentProvider.refundupdateBillPayReference()
updateBillPayReference(billPayNumber, params): Promise<BillPayControlNumber>;Defined in: providers/clickpesa/src/clickpesa.ts:870
Partially update a BillPay reference. At least one field besides
billPayNumber must be provided.
Parameters
| Parameter | Type |
|---|---|
billPayNumber | string |
params | { amount?: number; description?: string; paymentMode?: "ALLOW_PARTIAL_AND_OVER_PAYMENT" | "EXACT"; status?: "ACTIVE" | "INACTIVE"; } |
params.amount? | number |
params.description? | string |
params.paymentMode? | "ALLOW_PARTIAL_AND_OVER_PAYMENT" | "EXACT" |
params.status? | "ACTIVE" | "INACTIVE" |
Returns
Promise<BillPayControlNumber>
updateBillPayStatus()
updateBillPayStatus(billPayNumber, status): Promise<BillPayControlNumber>;Defined in: providers/clickpesa/src/clickpesa.ts:894
Activate or deactivate a control number (convenience wrapper).
Parameters
| Parameter | Type |
|---|---|
billPayNumber | string |
status | "ACTIVE" | "INACTIVE" |
Returns
Promise<BillPayControlNumber>
validateCredentials()
validateCredentials(): Promise<{
message?: string;
valid: boolean;
}>;Defined in: providers/clickpesa/src/clickpesa.ts:520
Validate that a provider config works (health check).
Useful for startup checks or /health endpoints.
Returns
Promise<{
message?: string;
valid: boolean;
}>
{ valid: true } if credentials are correct.
Throws
PesaUnsupportedError — if the provider does not support validation.
Overrides
BasePaymentProvider.validateCredentials