Cowdidocs
API ReferenceInstallments

List repayment transactions for an account

GET
/v1/accounts/{accountId}/installments/transactions

Retrieves immutable repayment allocations as recorded when each payment was applied to the account's installments. Later reversals and waivers are separate transaction events; this list never changes retroactively. Requires an authenticated user. Returns 404 when the account does not exist or is not the caller's. Supports keyset pagination through the size, after, and before query parameters.

AuthorizationBearer <token>

Create a client with POST /v1/oauth/clients, then exchange its credentials for an access token. AUTHORIZATION_CODE clients act on behalf of a signed-in user and always use PKCE; CLIENT_CREDENTIALS clients act as themselves. A client may only be granted scopes its creator already holds — read the grantable list from GET /v1/oauth/clients/scopes.

In: header

Path Parameters

accountId*string

Unique identifier of the account.

Formatuuid

Query Parameters

size?integer

Maximum number of transactions to return.

Range0 < value
Default20
after?string

Opaque cursor for the page after this one. Omit for the first page.

before?string

Opaque cursor for the page before this one. Omit for the first page.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/v1/accounts/550e8400-e29b-41d4-a716-446655440000/installments/transactions?size=20&after=eyJhcHBsaWNhdGlvbl9hdCI6IjIwMjYtMDEtMTVUMDk6MzA6MDBaIiwidHJhbnNhY3Rpb25faWQiOiIwMTk4YzFjMi00ZjFlLTdhM2ItOWMyZC02ZjBhMWIyYzNkNGUifQ%3D%3D&before=eyJhcHBsaWNhdGlvbl9hdCI6IjIwMjYtMDEtMTBUMDk6MzA6MDBaIiwidHJhbnNhY3Rpb25faWQiOiIwMTk4YzFjMi00ZjFlLTdhM2ItOWMyZC02ZjBhMWIyYzNkNGQifQ%3D%3D"
{  "data": [    {      "transaction": {        "id": "01a11715-7b0d-7e3f-9c2a-4d5e6f708192",        "resource_id": "trx_01m4bhayrdfrzsrajdbsqq10cj",        "mpesa_transaction_id": "ABCDE12345",        "amount": {          "value": 100000,          "currency": "KES"        },        "fee_amount": {          "value": 5000,          "currency": "KES"        },        "status": "COMPLETED",        "failure_reason": null,        "transacted_at": "2026-01-20T10:30:00Z",        "confirmed_at": "2026-01-20T10:30:05Z",        "posted_at": "2026-01-20T10:30:10Z",        "failed_at": null,        "details": {          "type": "BUY_GOODS",          "till_number": "12345"        }      },      "installments": [        {          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",          "balance_id": "6ba7b810-9dad-11d1-80b4-00c04fd430c9",          "cycle_id": "4657c0f7-0ec5-4c38-8330-8d4bbac49451",          "position": 1,          "allocated_amount": 80000,          "principal_amount": 60000,          "interest_amount": 20000,          "arrears_amount": 0,          "allocated_at": "2026-01-15T09:30:00Z",          "effect": "OBLIGATION_SETTLED",          "source": "LIVE"        }      ]    }  ],  "links": {    "next": "/v1/payees?after=eyJpZCI6MX0",    "prev": "/v1/payees?before=eyJpZCI6MX0"  }}
{  "code": "BAD_REQUEST",  "description": "Bad Request"}
{  "code": "UNAUTHORISED",  "description": "Unauthorised"}
{  "code": "FORBIDDEN",  "description": "Forbidden"}
{  "code": "BAD_REQUEST",  "description": "Invalid input"}
{  "code": "RATE_LIMIT_EXCEEDED",  "description": "Too Many Requests"}
{  "code": "INTERNAL_ERROR",  "description": "Internal Server Error"}