Skip to main content

Financials

Per-cooperative aggregated financial overview and balance sheet.

Dashboard

GET /financials/dashboard/

Compact overview of revenue, expenses, payouts, and net income for one cooperative within a window.

Required scope: financials:read.

Request

curl -X GET \
"https://api.copa.rw/api/v1/financials/dashboard/?cooperative_id=73mcoo8tg&from=2026-01-01&to=2026-04-30" \
-H "Authorization: Bearer YOUR_API_KEY"

Query parameters

ParameterTypeDescription
cooperative_idstringRequired.
fromstringStart date (ISO YYYY-MM-DD). Default = start of current month.
tostringEnd date. Default = now. Max 5-year window.

Response

{
"cooperative_id": "73mcoo8tg",
"window": { "from": "2026-01-01", "to": "2026-04-30" },
"totals": {
"total_revenue": "22567527.53",
"total_returns": "22159349.00",
"net_revenue": "408178.53",
"total_expenses": "3000.00",
"member_payouts": "2392172.53",
"supplier_payouts": "21158405.00",
"total_payouts": "23550577.53",
"net_income": "-23145399.00",
"profit_margin_pct": -5670.41
},
"currency": "RWF"
}

Totals

FieldTypeNotes
total_revenuedecimal stringSum of SaleTransaction.total_amount (status COMPLETED).
total_returnsdecimal stringSum of SalesReturn.refund_amount (status PROCESSED or REFUNDED).
net_revenuedecimal stringtotal_revenue − total_returns.
total_expensesdecimal stringSum of MemberExpense.amount (status APPROVED or APPLIED_TO_PAYOUT).
member_payoutsdecimal stringSum of MemberPayout.final_payout_amount for periods inside the window.
supplier_payoutsdecimal stringSame shape, on SupplierPayout.
total_payoutsdecimal stringmember_payouts + supplier_payouts.
net_incomedecimal stringnet_revenue − total_expenses − total_payouts.
profit_margin_pctfloatnet_income ÷ net_revenue × 100, rounded to 2dp. Returns 0.0 when net_revenue ≤ 0.
currencystringAlways RWF.
info

Period-over-period growth (revenue / expense growth) is not included in this v1 endpoint. Compute it client-side by querying two consecutive windows.

Errors

StatusDescription
400Missing cooperative_id, invalid date, or to < from.
403Key does not have financials:read.
404Cooperative not found.

Balance sheet

GET /financials/balance-sheet/

Assets / liabilities / equity at a specific date.

Required scope: financials:read.

Request

curl -X GET \
"https://api.copa.rw/api/v1/financials/balance-sheet/?cooperative_id=73mcoo8tg&as_of=2026-04-30" \
-H "Authorization: Bearer YOUR_API_KEY"

Query parameters

ParameterTypeDescription
cooperative_idstringRequired.
as_ofstringISO date the snapshot should reflect. Defaults to now.

Response

{
"cooperative_id": "73mcoo8tg",
"as_of_date": "2026-04-30",
"currency": "RWF",
"assets": {
"current_assets": {
"cash": 0.0,
"inventory": 45788569.325,
"loans_receivable": 650000.0
},
"total_assets": 46438569.325
},
"liabilities": {
"member_equity": 3460.0
},
"equity": {
"retained_earnings": -3460.0
}
}

Field semantics

FieldSource
assets.current_assets.cashSum of MoMoCollection.amount where status = SUCCESSFUL.
assets.current_assets.inventorySum of quantity × unit_cost over all active StockEntry rows for the cooperative.
assets.current_assets.loans_receivableSum of Loan.amount where status = approved and not soft-deleted.
assets.total_assetsSum of the three current-asset lines.
liabilities.member_equitySum of Member.total_shares for active members.
equity.retained_earningscash − member_equity.

Errors

StatusDescription
400Missing cooperative_id, invalid as_of date, or the underlying calculation failed.
403Key does not have financials:read.
404Cooperative not found.