Bulk Charges

The Bulk Charges API allows you create and manage multiple recurring payments from your customers.

Initiate Bulk Charge

Send an array of objects with authorization codes and amount, using the supported currency format, so we can process transactions as a batch.

Headers

authorization
String

Set value to Bearer SECRET_KEY

content-type
String

Set value to application/json

Body Parameters

(no name )
Array

A list of charge object. Each object consists of an authorization, amount and reference

POST/bulkcharge
cURL
1#!/bin/sh
2url="https://api.paystack.co/bulkcharge"
3authorization="Authorization: Bearer YOUR_SECRET_KEY"
4content_type="Content-Type: application/json"
5data='{
6 [
7 {"authorization": "AUTH_ncx8hews93", "amount": 2500, "reference": "dam1266638dhhd"},
8 {"authorization": "AUTH_xfuz7dy4b9", "amount": 1500, "reference": "dam1266638dhhe"}
9 ]
10}'
11
12curl "$url" -H "$authorization" -H "$content_type" -d "$data" -X POST
Sample Response
200 Ok
1{
2 "status": true,
3 "message": "Charges have been queued",
4 "data": {
5 "batch_code": "BCH_rrsbgwb4ivgzst1",
6 "reference": "bulkcharge-1663150565684-p18nyoa68a",
7 "id": 66608171,
8 "integration": 463433,
9 "domain": "test",
10 "status": "active",
11 "total_charges": 2,
12 "pending_charges": 2,
13 "createdAt": "2022-09-14T10:16:05.000Z",
14 "updatedAt": "2022-09-14T10:16:05.000Z"
15 }
16}

List Bulk Charge Batches

This lists all bulk charge batches created by the integration. Statuses can be active, paused, or complete

Headers

authorization
String

Set value to Bearer SECRET_KEY

Query Parameters

perPage
Integer

Specify how many records you want to retrieve per page. If not specify we use a default value of 50.

page
Integer

Specify exactly what transfer you want to page. If not specify we use a default value of 1.

from
Datetime
optional

A timestamp from which to start listing batches e.g. 2016-09-24T00:00:05.000Z, 2016-09-21

to
Datetime
optional

A timestamp at which to stop listing batches e.g. 2016-09-24T00:00:05.000Z, 2016-09-21

GET/bulkcharge
cURL
1#!/bin/sh
2url="https://api.paystack.co/bulkcharge"
3authorization="Authorization: Bearer YOUR_SECRET_KEY"
4
5curl "$url" -H "$authorization" -X GET
Sample Response
200 Ok
1{
2 "status": true,
3 "message": "Bulk charges retrieved",
4 "data": [
5 {
6 "domain": "test",
7 "batch_code": "BCH_1nV4L1D7cayggh",
8 "status": "complete",
9 "id": 1733,
10 "createdAt": "2017-02-04T05:44:19.000Z",
11 "updatedAt": "2017-02-04T05:45:02.000Z"
12 }
13 ],
14 "meta": {
15 "total": 1,
16 "skipped": 0,
17 "perPage": 50,
18 "page": 1,
19 "pageCount": 1
20 }
21}

Fetch Bulk Charge Batch

This endpoint retrieves a specific batch code. It also returns useful information on its progress by way of the total_charges and pending_charges attributes.

Headers

authorization
String

Set value to Bearer SECRET_KEY

Path Parameters

id_or_code
String

An ID or code for the charge whose batches you want to retrieve.

GET/bulkcharge/:id_or_code
cURL
1#!/bin/sh
2url="https://api.paystack.co/bulkcharge/{id_or_code}"
3authorization="Authorization: Bearer YOUR_SECRET_KEY"
4
5curl "$url" -H "$authorization" -X GET
Sample Response
200 Ok
1{
2 "status": true,
3 "message": "Bulk charge retrieved",
4 "data": {
5 "domain": "test",
6 "batch_code": "BCH_180tl7oq7cayggh",
7 "status": "complete",
8 "id": 17,
9 "total_charges": 0,
10 "pending_charges": 0,
11 "createdAt": "2017-02-04T05:44:19.000Z",
12 "updatedAt": "2017-02-04T05:45:02.000Z"
13 }
14}

Fetch Charges in a Batch

This endpoint retrieves the charges associated with a specified batch code. Pagination parameters are available. You can also filter by status. Charge statuses can be pending, success or failed.

Headers

authorization
String

Set value to Bearer SECRET_KEY

Path Parameters

id_or_code
String

An ID or code for the batch whose charges you want to retrieve.

Query Parameters

status
String

Either one of these values: pending, success or failed

perPage
Integer

Specify how many records you want to retrieve per page. If not specify we use a default value of 50.

page
Integer

Specify exactly what transfer you want to page. If not specify we use a default value of 1.

from
Datetime
optional

A timestamp from which to start listing charges e.g. 2016-09-24T00:00:05.000Z, 2016-09-21

to
Datetime
optional

A timestamp at which to stop listing charges e.g. 2016-09-24T00:00:05.000Z, 2016-09-21

GET/bulkcharge/:id_or_code/charges
cURL
1#!/bin/sh
2url="https://api.paystack.co/bulkcharge/{id_or_code}/charges"
3authorization="Authorization: Bearer YOUR_SECRET_KEY"
4
5curl "$url" -H "$authorization" -X GET
Sample Response
200 Ok
1{
2 "status": true,
3 "message": "Bulk charge items retrieved",
4 "data": [
5 {
6 "integration": 100073,
7 "bulkcharge": 18,
8 "customer": {
9 "id": 181336,
10 "first_name": null,
11 "last_name": null,
12 "email": "test@again.com",
13 "customer_code": "CUS_dw5posshfd1i5uj",
14 "phone": null,
15 "metadata": null,
16 "risk_action": "default"
17 },
18 "authorization": {
19 "authorization_code": "AUTH_jh3cfpca",
20 "bin": "412345",
21 "last4": "1381",
22 "exp_month": "08",
23 "exp_year": "2088",
24 "channel": "card",
25 "card_type": "visa visa",
26 "bank": "TEST BANK",
27 "country_code": "NG",
28 "brand": "visa",
29 "reusable": true,
30 "account_name": "BoJack Horseman"
31 },
32 "transaction": {
33 "id": 718835,
34 "domain": "test",
35 "status": "success",
36 "reference": "2mr588n0ik9enja",
37 "amount": 20500,
38 "message": null,
39 "gateway_response": "Successful",
40 "paid_at": "2017-02-04T06:05:02.000Z",
41 "created_at": "2017-02-04T06:05:02.000Z",
42 "channel": "card",
43 "currency": "NGN",
44 "ip_address": null,
45 "metadata": "",
46 "log": null,
47 "fees": null,
48 "fees_split": null,
49 "customer": {},
50 "authorization": {},
51 "plan": {},
52 "subaccount": {},
53 "paidAt": "2017-02-04T06:05:02.000Z",
54 "createdAt": "2017-02-04T06:05:02.000Z"
55 },
56 "domain": "test",
57 "amount": 20500,
58 "currency": "NGN",
59 "status": "success",
60 "id": 15,
61 "createdAt": "2017-02-04T06:04:26.000Z",
62 "updatedAt": "2017-02-04T06:05:03.000Z"
63 },
64 {
65 "integration": 100073,
66 "bulkcharge": 18,
67 "customer": {
68 "id": 181336,
69 "first_name": null,
70 "last_name": null,
71 "email": "duummy@email.com",
72 "customer_code": "CUS_dw5posshfd1i5uj",
73 "phone": null,
74 "metadata": null,
75 "risk_action": "default"
76 },
77 "authorization": {
78 "authorization_code": "AUTH_qdyfjbl3",
79 "bin": "412345",
80 "last4": "1381",
81 "exp_month": "08",
82 "exp_year": "2018",
83 "channel": "card",
84 "card_type": "visa visa",
85 "bank": "TEST BANK",
86 "country_code": "NG",
87 "brand": "visa",
88 "reusable": true,
89 "account_name": "BoJack Horseman"
90 },
91 "transaction": {
92 "id": 718836,
93 "domain": "test",
94 "status": "success",
95 "reference": "5xkmvfe2h4065zl",
96 "amount": 11500,
97 "message": null,
98 "gateway_response": "Successful",
99 "paid_at": "2017-02-04T06:05:02.000Z",
100 "created_at": "2017-02-04T06:05:02.000Z",
101 "channel": "card",
102 "currency": "NGN",
103 "ip_address": null,
104 "metadata": "",
105 "log": null,
106 "fees": null,
107 "fees_split": null,
108 "customer": {},
109 "authorization": {},
110 "plan": {},
111 "subaccount": {},
112 "paidAt": "2017-02-04T06:05:02.000Z",
113 "createdAt": "2017-02-04T06:05:02.000Z"
114 },
115 "domain": "test",
116 "amount": 11500,
117 "currency": "NGN",
118 "status": "success",
119 "id": 16,
120 "createdAt": "2017-02-04T06:04:26.000Z",
121 "updatedAt": "2017-02-04T06:05:03.000Z"
122 }
123 ],
124 "meta": {
125 "total": 2,
126 "skipped": 0,
127 "perPage": 50,
128 "page": 1,
129 "pageCount": 1
130 }
131}

Pause Bulk Charge Batch

Use this endpoint to pause processing a batch

Headers

authorization
String

Set value to Bearer SECRET_KEY

Path Parameters

batch_code
String

The batch code for the bulk charge you want to pause

GET/bulkcharge/pause/:batch_code
cURL
1#!/bin/sh
2url="https://api.paystack.co/bulkcharge/pause/{batch_code}"
3authorization="Authorization: Bearer YOUR_SECRET_KEY"
4
5curl "$url" -H "$authorization" -X GET
Sample Response
200 Ok
1{
2 "status": true,
3 "message": "Bulk charge batch has been paused"
4}

Resume Bulk Charge Batch

Use this endpoint to resume processing a batch

Headers

authorization
String

Set value to Bearer SECRET_KEY

Path Parameters

batch_code
String

The batch code for the bulk charge you want to resume

GET/bulkcharge/resume/:batch_code
cURL
1#!/bin/sh
2url="https://api.paystack.co/bulkcharge/resume/{batch_code}"
3authorization="Authorization: Bearer YOUR_SECRET_KEY"
4
5curl "$url" -H "$authorization" -X GET
Sample Response
200 Ok
1{
2 "status": true,
3 "message": "Bulk charge batch has been resumed"
4}