Read Your Payouts
List the payouts made from your business, filter them by type, category, or date, and fetch a single payout by its id.
Payouts are the money leaving your business through Duplo Dashboard, where they are raised and approved. The API provides a way for your systems to read the resulting records back, so you can reconcile them against your own ledger or pull them into a report. It is read-only, and nothing here raises or changes a payout.
This guide assumes you already have an API key and can authenticate. If not, start with Getting Started.
Listing payouts
The Get payouts endpoint returns one page of your business's payouts.
curl --request GET \
--url 'https://dashboard.tryduplo.com/api/payouts?page=1&limit=20&payoutCategory=expense' \
--header 'Authorization: Bearer <your-api-key>'Every filter is optional. Send none of them and you get the first page of everything.
| Parameter | Accepts | Notes |
|---|---|---|
page | A number, for example 1 | Which page to return |
limit | A number, for example 20 | How many payouts per page |
startDate | An ISO 8601 timestamp | Only payouts on or after this |
endDate | An ISO 8601 timestamp | Only payouts on or before this |
type | INSTANT, SCHEDULED | Whether the payout is sent immediately or on a schedule |
payoutCategory | wallet, mandate, expense | What the payout was raised from |
As with every response on this API, the payload arrives under data in the standard envelope. The sample below shows only that payload, which carries the page of payouts in its own data array and the pagination counters in meta:
{
"data": [
{
"id": "3b1c9d77-2a44-4f2e-8c31-77bb1f0a9d21",
"businessId": "0f6b2a52-3f0b-4d1e-9a6f-1f9b6c3d5e88",
"amount": 125000,
"currency": "NGN",
"description": "Team offsite venue",
"type": "INSTANT",
"payoutCategory": "expense",
"isPayoutInitiated": true,
"isProcessable": false,
"recipient": {
"accountName": "Lagos Venues Limited",
"accountNumber": "0123456789",
"bankName": "Example Bank",
"bankCode": "058"
},
"createdAt": "2026-01-15T09:24:03.771Z"
}
],
"meta": {
"total": 87,
"page": 1,
"limit": 20,
"count": 20,
"previousPage": null,
"nextPage": 2,
"pageCount": 5,
"totalRecords": 87
}
}To walk the whole set, keep requesting the page in meta.nextPage until there is no next page.
A payout with payoutCategory of expense settles an expense, and that expense carries the payout's id in its payoutId. See Read your expenses to go the other way.
Fetching one payout
When you already have an id, Get a payout by id returns that single record in the same shape as one entry in the list.
curl --request GET \
--url https://dashboard.tryduplo.com/api/payouts/3b1c9d77-2a44-4f2e-8c31-77bb1f0a9d21 \
--header 'Authorization: Bearer <your-api-key>'Ids are scoped to your business. An id belonging to another business returns 404 with Payout not found for this business, the same as an id that does not exist at all.
Related guides
How is this guide?
Last updated on