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.

ParameterAcceptsNotes
pageA number, for example 1Which page to return
limitA number, for example 20How many payouts per page
startDateAn ISO 8601 timestampOnly payouts on or after this
endDateAn ISO 8601 timestampOnly payouts on or before this
typeINSTANT, SCHEDULEDWhether the payout is sent immediately or on a schedule
payoutCategorywallet, mandate, expenseWhat 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:

JSON
{
  "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.

How is this guide?

Last updated on

On this page