Async Bulk Charges Module

This wrapper class facilitates asynchronous interaction with Paystack Bulk Charges API. The Bulk Charges API allows you to create and manage multiple recurring payments from your customers.

To access the Bulk Charges API methods, you need to call the bulk_charges instance method from AsyncPayStackBase.


class AsyncBulkChargesClientAPI(secret_key: str = None)

Paystack Bulk Charges API Reference: Bulk Charges

async fetch_bulk_charge_batch(id_or_code: str)→ PayStackResponse

Fetch a bulk charge of a specific batch

Parameters:

id_or_code (str) – An ID or code for the charge whose batches you want to retrieve.

Returns:

The response from the API.

Return type:

PayStackResponse object

async fetch_charge_bulk_batch(id_or_code: str, status: str | None = None, per_page: int | None = 50, page: int | None = 1, from_date: date | None = None, to_date: date | None = None)→ PayStackResponse

Fetch a bulk charge of a specific batch

Parameters:
  • id_or_code (str) – An ID or code for the charge whose batches you want to retrieve

  • status (str, optional) – The status of the bulk charge batch. The STATUS enum value is passed in here.

  • per_page (int, optional) – The number of records to return per page (default: 50).

  • page (int, optional) – The page to return (default: 1).

  • from_date (date, optional) – The starting date of the bulk charge batch.

  • to_date (date, optional) – The ending date of the bulk charge batch.

Returns:

The response from the API.

Return type:

PayStackResponse object

async initiate_bulk_charge(objects: BulkChargeListObject)→ PayStackResponse

Initiate a bulk charge

Parameters:

objects (BulkChargeListObject) – An array of objects with authorization, amount and reference.

Returns:

The response from the API.

Return type:

PayStackResponse object

async list_bulk_charge_batches(per_page: int | None = 50, page: int | None = 1, from_date: date | None = None, to_date: date | None = None)→ PayStackResponse

List bulk charge batches

Parameters:
  • per_page (int, optional) – The number of records to return per page (default: 50).

  • page (int, optional) – The page to return (default: 1).

  • from_date (date, optional) – The starting date of the bulk charge batch.

  • to_date (date, optional) – The ending date of the bulk charge batch.

Returns:

The response from the API.

Return type:

PayStackResponse object

async pause_bulk_charge_batch(batch_code: str)→ PayStackResponse

Pause a bulk charge of a specific batch

Parameters:

batch_code (str) – The code of the bulk charge batch you want to pause.

Returns:

The response from the API.

Return type:

PayStackResponse object

async resume_bulk_charge_batch(batch_code: str)→ PayStackResponse

Resume a bulk charge of a specific batch

Parameters:

batch_code (str) – The code of the bulk charge batch you want to resume.

Returns:

The response from the API

Return type:

PayStackResponse object

When passing the status parameter, you can pass the string value of the STATUS enum member as the type hint is a string, as seen:

>>> from paystackease import STATUS

>>> status = STATUS.PENDING.value

>>> print(status)
$ python
>>> 'pending'

In initiating a bulk charge, either use BulkChargeItem as a base pydantic data class or BulkChargeListObject class.

The attributes in BulkChargeItem are: authorization, amount and reference. The attribute in BulkChargeListObject is charges.

You can initiate multiple bulk charge at the same time also. The authorization is gotten after a successful card transaction. The reference is a unique set of characters you can create as your desired choice.

You can also check to ensure that the amount passed into is in subunit. See the documentation on Convert module.

For example

>>> import asyncio
>>> from paystackease import AsyncPayStackBase, BulkChargeListObject, BulkChargeItem

>>> valid_data = {
    "charges": [
        { "authorization": "AUTH_test1234", "amount": 10000, "reference": "test1234" },
        { "authorization": "AUTH_tester4176", "amount": 2000, "reference": "tester1234" },
    ]
}
data = BulkChargeListObject(**valid_data)

>>> async def paystack_client():
>>>     async with AsyncPayStackBase() as client:
>>>         response = await client.bulk_charges.initiate_bulk_charge(objects=data)
>>>         print(response)


>>> asyncio.run(paystack_client())