Skip to main content
POST
/
payouts
/
bulk
Request bulk payout
curl --request POST \
  --url https://api.sandbox.pawapay.io/payouts/bulk \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '[
  {
    "payoutId": "<INSERT_UUID_FOR_PAYOUT>",
    "amount": "15",
    "currency": "ZMW",
    "country": "ZMB",
    "correspondent": "MTN_MOMO_ZMB",
    "recipient": {
      "type": "MSISDN",
      "address": {
        "value": "260763456789"
      }
    },
    "customerTimestamp": "2020-02-21T17:32:28Z",
    "statementDescription": "Note of 4 to 22 chars",
    "metadata": [
      {
        "fieldName": "orderId",
        "fieldValue": "ORD-123456789"
      },
      {
        "fieldName": "customerId",
        "fieldValue": "customer@email.com",
        "isPII": true
      }
    ]
  }
]'
[
  {
    "payoutId": "f4401bd2-1568-4140-bf2d-eb77d2b2b639",
    "status": "ACCEPTED",
    "created": "2020-10-19T11:17:01Z"
  },
  {
    "payoutId": "f4401bd2-1568-4140-bf2d-eb77d2b2b639",
    "status": "DUPLICATE_IGNORED",
    "created": "2020-10-19T10:22:49Z"
  },
  {
    "payoutId": "f4401bd2-1568-4140-bf2d-eb77d2b2b639",
    "status": "REJECTED",
    "rejectionReason": {
      "rejectionCode": "AMOUNT_TOO_LARGE",
      "rejectionMessage": "Amount should not be greater than 1000"
    }
  }
]
Bulk payouts operation allows you to initiate multiple payouts for asynchronous processing. Read more about Payouts.
  • Bulk requests with more than 20 payout transactions may be rejected by pawaPay.
  • This API call is idempotent, which means it is safe to submit a request with the same payoutId multiple times.
  • Duplicate requests with the same payoutId will be ignored with the DUPLICATE_IGNORED status.
  • Since the request can be rejected, you must check the status code in the response for each submitted request. The rejectionReason in the response will contain information about the reason of the rejection.
  • Callback will be delivered separately for each payout in the bulk request as the payouts are resolved to their final status.
Each individual request can get one of the statuses on initiation:
StatusDescription
ACCEPTEDYesThe payout request has been accepted by pawaPay for processing.
ENQUEUEDYesThe payout request has been accepted, but has been enqueued for processing later. Read more about enqueued payouts.
REJECTEDNoThe payout request has been rejected. See rejectionReason for details.
DUPLICATE_IGNOREDNoThe payout request has been ignored as a duplicate of an already accepted payout request. Duplication logic relies upon payoutId.

How do i find out the final statuses of these payouts?

As the pawaPay Merchant API is an asynchronous API, you can find out the final status of the accepted payout by either:
Headers related to signatures must only be included if you have enabled “Only accept signed requests”. Read more about it from the pawaPay Dashboard documentation.

Authorizations

Authorization
string
header
required

Headers

Content-Digest
string<string>
Signature
string<string>
Signature-Input
string<string>
Accept-Signature
string<string>
Accept-Digest
string<string>

Body

application/json · object[]
payoutId
string<uuid>
required
Required string length: 36
Example:
amount
string
required
Required string length: 1 - 23
Example:
currency
string
required
Example:
correspondent
string
required
Example:
recipient
object
required
customerTimestamp
string<date-time>
required
Example:
statementDescription
string
required
Required string length: 4 - 22
Example:
country
string
Example:
metadata
object[]
Example:

Response

payoutId
string<uuid>
required
Required string length: 36
Example:
status
enum<string>
required
Available options:
ACCEPTED,
ENQUEUED,
REJECTED,
DUPLICATE_IGNORED
created
string<date-time>
Example:
rejectionReason
object