Money

Wallets, the double-entry ledger, payment intents, payouts and settlements.

58 endpoints

POST /v3/app/pay/wallet #
bearer driver_app beneficiary_app money.adjust device idempotency credential

Request body

FieldTypeConstraints
wallet_idstring (uuid)required
amount_minorintegerrequiredmin 1 · max 100000000
currencystringrequiredmin length 3 · max length 3
notestring | nulloptionalmax length 200
pinstring | nulloptionalmax length 12
categorystring | nulloptionalmax length 64
itemsobject[]optionalmax items 50

Response

Returns { "data": WalletChargeReceipt }.

FieldTypeConstraints
transaction_idstring (uuid)required
typestringrequired
statestringrequired
customeranyrequired
amountMoneyFormattedrequired
balance_afteranyrequired
POST /v3/app/pos-category #
bearer driver_app beneficiary_app device credential

Request body

FieldTypeConstraints
idstring | nulloptional
namestringrequiredmax length 120
activeboolean | nulloptional
colorstring | nulloptional

Response

Returns { "data": PosCategoryWrite }.

FieldTypeConstraints
idstring (uuid)required
namestringrequired
activebooleanrequired
colorstring | nullrequired
POST /v3/app/pos-item #
bearer driver_app beneficiary_app device credential

Request body

FieldTypeConstraints
idstring | nulloptional
namestringrequiredmax length 120
amount_minorintegerrequiredmin 1 · max 100000000
currencystringrequiredmin length 3 · max length 3
activeboolean | nulloptional
category_idstring | nulloptional
min_order_qtyinteger | nulloptionalmin 1 · max 10000
skustring | nulloptionalmax length 64

Response

Returns { "data": PosItemWrite }.

FieldTypeConstraints
idstring (uuid)required
namestringrequired
skustring | nullrequired
activebooleanrequired
category_idstring | nullrequired
beneficiary_wallet_idstring | nullrequired
priceMoneyFormattedrequired
min_order_qtyintegerrequired
GET /v3/app/spending-profile #
bearer beneficiary_app parent_app device credential

Response

Returns { "data": [SpendingProfile] } with meta.next_cursor for the next page.

FieldTypeConstraints
idstring (uuid)required
namestringrequired
descriptionstring | nulloptional
daily_limitanyoptional
weekly_limitanyoptional
per_txn_limitanyoptional
allowed_zone_kindsstring[]optional
time_windowsobject[]optional
POST /v3/app/transfer #
bearer beneficiary_app parent_app device idempotency credential

Request body

FieldTypeConstraints
from_wallet_idstring (uuid)required
to_wallet_idstring (uuid)required
amount_minorintegerrequiredmin 1 · max -9223372036854775808
currencystringrequiredmin length 3 · max length 3
notestring | nulloptionalmax length 255

Response

Returns { "data": … }; this endpoint's payload is not yet pinned to a named shape.

POST /v3/app/voucher/redeem #
bearer beneficiary_app parent_app device credential

Request body

FieldTypeConstraints
codestringrequiredmax length 32

Response

Returns { "data": … }; this endpoint's payload is not yet pinned to a named shape.

GET /v3/invoice #
bearer beneficiary_app parent_app device credential

Query parameters

NameTypeConstraints
statusstring | nulloptionaldraft open paid partially_paid overdue void

Response

Returns { "data": … }; this endpoint's payload is not yet pinned to a named shape.

POST /v3/invoice/{id}/pay #
bearer beneficiary_app parent_app device idempotency credential

Path parameters

NameTypeNotes
idstring

Request body

FieldTypeConstraints
gatewaystringrequiredmpesa kasapay pawapay infinity pesapal bank cash internal +1 more
msisdnstringrequiredmax length 20

Response

Returns { "data": … }; this endpoint's payload is not yet pinned to a named shape.

POST /v3/pay #
bearer driver_app beneficiary_app pass_app money.adjust device idempotency credential

Request body

FieldTypeConstraints
band_serialstringrequiredmax length 64
amount_minorintegerrequiredmin 1 · max 100000000
currencystringrequiredmin length 3 · max length 3
device_idstring (uuid)required
notestring | nulloptionalmax length 200
pinstring | nulloptionalmax length 12
categorystring | nulloptionalmax length 64
itemsobject[]optionalmax items 50

Response

Returns { "data": PayReceipt }.

FieldTypeConstraints
transaction_idstring (uuid)required
typestringrequired
statestringrequired
studentanyrequired
balance_afteranyrequired
GET /v3/payment-intent/{id} #
bearer beneficiary_app parent_app device credential

Path parameters

NameTypeNotes
idstring

Response

Returns { "data": PaymentIntentDetail }.

FieldTypeConstraints
payment_intent_idstring (uuid)required
statestringrequired
gatewaystringrequired
amountobjectrequired
amount.amount_minorintegerrequired
amount.currencystringrequiredmin length 3 · max length 3
transaction_idstring | nullrequired
provider_refstring | nullrequired
failure_reasonstring | nullrequired
GET /v3/portal/account/{account}/wallet #
bearer admin_web device credential

the parent profile's Wallet tab (§11.14).

Path parameters

NameTypeNotes
accountstring

Response

Returns { "data": WebAccountWallet }.

FieldTypeConstraints
accountobjectrequired
account.idstring (uuid)required
account.namestringrequired
walletsobject[]required
childrenobject[]required
recent_transactionsWebTransaction[]required
GET /v3/portal/charge-rule #
bearer admin_web device credential

Response

Returns { "data": [ChargeRule] } with meta.next_cursor for the next page.

FieldTypeConstraints
idstring (uuid)required
namestringrequired
notestring | nullrequired
frequencystringrequired
amountMoneyrequired
destination_wallet_idstring (uuid)required
subject_scopestringrequired
subjectsobject[]required
statusstringrequired
last_processed_atstring | nullrequired
POST /v3/portal/charge-rule #
bearer admin_web money.adjust device credential

Request body

FieldTypeConstraints
namestringrequiredmin length 2 · max length 120
notestring | nulloptionalmax length 300
frequencystringrequiredhourly daily weekly monthly yearly
amount_minorintegerrequiredmin 1 · max 100000000
currencystringrequiredmin length 3 · max length 3
destination_wallet_idstring (uuid)required
subject_scopestringrequiredall custom

Response

Returns { "data": … }; this endpoint's payload is not yet pinned to a named shape.

DELETE /v3/portal/charge-rule/{id} #
bearer admin_web money.adjust device credential

Path parameters

NameTypeNotes
idstring

Response

Returns { "data": … }; this endpoint's payload is not yet pinned to a named shape.

PATCH /v3/portal/charge-rule/{id} #
bearer admin_web money.adjust device credential

Path parameters

NameTypeNotes
idstring

Request body

FieldTypeConstraints
namestringoptionalmin length 2 · max length 120
notestring | nulloptionalmax length 300
frequencystringoptionalhourly daily weekly monthly yearly
amount_minorintegeroptionalmin 1 · max 100000000
statusstringoptionalactive suspended
subject_scopestringoptionalall custom

Response

Returns { "data": … }; this endpoint's payload is not yet pinned to a named shape.

PUT /v3/portal/charge-rule/{id}/subjects #
bearer admin_web money.adjust device credential

Replace the rule's custom-subject set wholesale (PUT semantics).

Path parameters

NameTypeNotes
idstring

Request body

FieldTypeConstraints
subjectsobject[]requiredmax items 500

Response

Returns { "data": … }; this endpoint's payload is not yet pinned to a named shape.

GET /v3/portal/credits #
bearer admin_web device credential

Response

Returns { "data": Credits }.

FieldTypeConstraints
wallet_idstring (uuid)required
balanceMoneyrequired
usedMoneyrequired
POST /v3/portal/credits/topup #
bearer admin_web money.credit device credential

Request body

FieldTypeConstraints
amount_minorintegerrequiredmin 100 · max 100000000
currencystringrequiredmin length 3 · max length 3
msisdnstringrequired

Response

Returns { "data": … }; this endpoint's payload is not yet pinned to a named shape.

GET /v3/portal/loan #
bearer admin_web device credential

Response

Returns { "data": [WebLoan] } with meta.next_cursor for the next page.

FieldTypeConstraints
idstring (uuid)required
wallet_idstring (uuid)required
borrowerstring | nullrequired
principalMoneyrequired
outstandingMoneyrequired
interest_rate_bpsintegerrequired
penalty_rate_bpsintegerrequired
interest_periodstringrequired
statusstringrequired
term_ends_onstring | nullrequired
next_accrual_atstring | nullrequired
paid_atstring | nullrequired
POST /v3/portal/loan #
bearer admin_web money.credit device credential

Request body

FieldTypeConstraints
wallet_idstring (uuid)required
principal_minorintegerrequiredmin 1 · max 100000000
currencystringrequiredmin length 3 · max length 3
interest_rate_bpsintegerrequiredmin 0 · max 10000
penalty_rate_bpsinteger | nulloptionalmin 0 · max 10000
interest_periodstring | nulloptional1 day 1 week 1 month 1 year
term_ends_onstring | nulloptional

Response

Returns { "data": Written }.

FieldTypeConstraints
idstring (uuid)required
POST /v3/portal/loan/{id}/repay #
bearer admin_web money.adjust device credential

Path parameters

NameTypeNotes
idstring

Request body

FieldTypeConstraints
amount_minorintegerrequiredmin 1 · max 100000000
currencystringrequiredmin length 3 · max length 3

Response

Returns { "data": … }; this endpoint's payload is not yet pinned to a named shape.

GET /v3/portal/payout #
bearer admin_web device credential

Query parameters

NameTypeConstraints
fromstringrequired
tostringrequired
statestring | nulloptionalcreated processing succeeded failed expired reversed
cursorstring | nulloptionalmax length 200
per_pageinteger | nulloptionalmin 1 · max 500

Response

Returns { "data": … }; this endpoint's payload is not yet pinned to a named shape.

POST /v3/portal/payout #
bearer admin_web money.payout device credential

Request body

FieldTypeConstraints
wallet_idstring (uuid)required
amount_minorintegerrequiredmin 1 · max 100000000
currencystringrequiredmin length 3 · max length 3
msisdnstringrequired
gatewaystringrequiredmpesa kasapay pawapay infinity pesapal bank cash internal +1 more

Response

Returns { "data": … }; this endpoint's payload is not yet pinned to a named shape.

GET /v3/portal/payout/{id} #
bearer admin_web device credential

Path parameters

NameTypeNotes
idstring

Response

Returns { "data": … }; this endpoint's payload is not yet pinned to a named shape.

DELETE /v3/portal/pos-category/{id} #
bearer admin_web settings.manage device credential

Path parameters

NameTypeNotes
idstring

Response

Returns { "data": PosCategoryAdmin }.

FieldTypeConstraints
idstring (uuid)required
namestringrequired
activebooleanrequired
colorstring | nullrequired
photoanyrequired
created_atstring (date-time)required
updated_atstring (date-time)required
POST /v3/portal/pos-item/copy #
bearer admin_web settings.manage device credential

PCE-2b: copy items onto other beneficiaries — an upsert per (item, target).

Request body

FieldTypeConstraints
item_idsstring (uuid)[]requiredmin items 1 · max items 200
beneficiary_wallet_idsstring (uuid)[]requiredmin items 1 · max items 50

Response

Returns { "data": PosItemCopyReceipt }.

FieldTypeConstraints
targetsintegerrequired
createdintegerrequired
updatedintegerrequired
GET /v3/portal/spending-profile #
bearer admin_web device credential

Response

Returns { "data": [WebSpendingProfile] } with meta.next_cursor for the next page.

FieldTypeConstraints
idstring (uuid)required
namestringrequired
descriptionstring | nullrequired
daily_limit_minorinteger | nullrequired
weekly_limit_minorinteger | nullrequired
per_txn_limit_minorinteger | nullrequired
daily_txn_limitinteger | nullrequired
weekly_txn_limitinteger | nullrequired
allowed_zone_kindsarray | nullrequired
time_windowsarrayrequired
walletsintegerrequired
POST /v3/portal/spending-profile #
bearer admin_web money.adjust device credential

Request body

FieldTypeConstraints
namestringrequiredmin length 2 · max length 80
descriptionstring | nulloptionalmax length 300
daily_limit_minorinteger | nulloptionalmin 0
weekly_limit_minorinteger | nulloptionalmin 0
per_txn_limit_minorinteger | nulloptionalmin 0
allowed_zone_kindsarray | nulloptionalmax items 10
time_windowsobject[]optionalmax items 10

Response

Returns { "data": … }; this endpoint's payload is not yet pinned to a named shape.

DELETE /v3/portal/spending-profile/{id} #
bearer admin_web money.adjust device credential

Path parameters

NameTypeNotes
idstring

Response

Returns { "data": … }; this endpoint's payload is not yet pinned to a named shape.

PATCH /v3/portal/spending-profile/{id} #
bearer admin_web money.adjust device credential

Path parameters

NameTypeNotes
idstring

Request body

FieldTypeConstraints
namestringoptionalmin length 2 · max length 80
descriptionstring | nulloptionalmax length 300
daily_limit_minorinteger | nulloptionalmin 0
weekly_limit_minorinteger | nulloptionalmin 0
per_txn_limit_minorinteger | nulloptionalmin 0
allowed_zone_kindsarray | nulloptionalmax items 10
time_windowsobject[]optionalmax items 10

Response

Returns { "data": … }; this endpoint's payload is not yet pinned to a named shape.

GET /v3/portal/transaction #
bearer admin_web device credential

Query parameters

NameTypeConstraints
fromstringrequired
tostringrequired
typestring | nulloptionalmax length 40
wallet_idstring | nulloptional
cursorstring | nulloptionalmax length 200
per_pageinteger | nulloptionalmin 1 · max 500

Response

Returns { "data": [WebTransaction] } with meta.next_cursor for the next page.

FieldTypeConstraints
idstring (uuid)required
typestringrequired
statestringrequired
amountMoneyrequired
descriptionstring | nullrequired
reverses_transaction_idstring | nullrequired
school_idstring | nullrequired
school_namestring | nullrequired
created_atstring (date-time)required
POST /v3/portal/transaction/{id}/refund #
bearer admin_web money.refund device credential

Path parameters

NameTypeNotes
idstring

Response

Returns { "data": … }; this endpoint's payload is not yet pinned to a named shape.

GET /v3/portal/voucher #
bearer admin_web device credential

Query parameters

NameTypeConstraints
statusstring | nulloptionalactive redeemed voided expired
cursorstring | nulloptionalmax length 200
per_pageinteger | nulloptionalmin 1 · max 500

Response

Returns { "data": [WebVoucher] } with meta.next_cursor for the next page.

FieldTypeConstraints
idstring (uuid)required
codestringrequired
amountMoneyrequired
statusstringrequired
statestringrequired
merchant_wallet_idstring (uuid)required
issued_to_wallet_idstring | nullrequired
issued_toanyrequired
redeemedbooleanrequired
expires_atstring (date-time)required
created_atstring (date-time)required
POST /v3/portal/voucher #
bearer admin_web money.adjust device credential

Request body

FieldTypeConstraints
amount_minorintegerrequiredmin 1 · max 100000000
currencystringrequiredmin length 3 · max length 3
merchant_wallet_idstring (uuid)required
issued_to_wallet_idstring | nulloptional
expires_atstring (date-time)required
countinteger | nulloptionalmin 1 · max 1000

Response

Returns { "data": VoucherCodes }.

FieldTypeConstraints
codesstring[]required
POST /v3/portal/voucher/{id}/void #
bearer admin_web money.void device credential

Path parameters

NameTypeNotes
idstring

Response

Returns { "data": … }; this endpoint's payload is not yet pinned to a named shape.

GET /v3/portal/wallet-type #
bearer admin_web device credential

Response

Returns { "data": [WalletType] } with meta.next_cursor for the next page.

FieldTypeConstraints
idstring (uuid)required
namestringrequired
kindstringrequired
currencystringrequired
is_defaultbooleanrequired
allow_negativebooleanrequired
statusstringrequired
walletsintegerrequired
GET /v3/portal/wallet/{id} #
bearer admin_web device credential

Path parameters

NameTypeNotes
idstring

Response

Returns { "data": WebWalletDetail }.

FieldTypeConstraints
idstring (uuid)required
holderstringrequired
typeobjectrequired
type.idstring (uuid)required
type.namestringrequired
type.kindstringrequired
balanceMoneyrequired
statusstringrequired
studentanyrequired
accountanyrequired
spending_profileanyrequired
created_atstring (date-time)required
POST /v3/portal/wallet/{id}/charge #
bearer admin_web money.adjust device credential

Path parameters

NameTypeNotes
idstring

Request body

FieldTypeConstraints
amount_minorintegerrequiredmin 1 · max 100000000
currencystringrequiredmin length 3 · max length 3
reasonstringrequiredmin length 3 · max length 200

Response

Returns { "data": … }; this endpoint's payload is not yet pinned to a named shape.

GET /v3/pos-category #
bearer pass_web admin_web device credential

Response

Returns { "data": [PosCategoryAdmin] } with meta.next_cursor for the next page.

FieldTypeConstraints
idstring (uuid)required
namestringrequired
activebooleanrequired
colorstring | nullrequired
photoanyrequired
created_atstring (date-time)required
updated_atstring (date-time)required
POST /v3/pos-category #
bearer pass_web admin_web settings.manage device credential

Request body

FieldTypeConstraints
namestringrequiredmax length 120
activeboolean | nulloptional
colorstring | nulloptional

Response

Returns { "data": PosCategoryAdmin }.

FieldTypeConstraints
idstring (uuid)required
namestringrequired
activebooleanrequired
colorstring | nullrequired
photoanyrequired
created_atstring (date-time)required
updated_atstring (date-time)required
PATCH /v3/pos-category/{id} #
bearer pass_web admin_web settings.manage device credential

Path parameters

NameTypeNotes
idstring

Request body

FieldTypeConstraints
namestringoptionalmax length 120
activebooleanoptional
colorstring | nulloptional

Response

Returns { "data": PosCategoryAdmin }.

FieldTypeConstraints
idstring (uuid)required
namestringrequired
activebooleanrequired
colorstring | nullrequired
photoanyrequired
created_atstring (date-time)required
updated_atstring (date-time)required
GET /v3/pos-item #
bearer pass_web admin_web device credential

Query parameters

NameTypeConstraints
activestring | nulloptionaltrue false
beneficiarystring | nulloptionalmax length 64
cursorstring | nulloptionalmax length 200
per_pageinteger | nulloptionalmin 1 · max 500

Response

Returns { "data": [PosItemAdmin] } with meta.next_cursor for the next page.

FieldTypeConstraints
idstring (uuid)required
namestringrequired
skustring | nullrequired
activebooleanrequired
category_idstring | nullrequired
beneficiary_wallet_idstring | nullrequired
priceMoneyFormattedrequired
min_order_qtyintegerrequired
cost_priceanyrequired
photoanyrequired
created_atstring (date-time)required
updated_atstring (date-time)required
POST /v3/pos-item #
bearer pass_web admin_web settings.manage device credential

Request body

FieldTypeConstraints
namestringrequiredmax length 120
amount_minorintegerrequiredmin 1 · max 100000000
cost_price_minorinteger | nulloptionalmin 1 · max 100000000
currencystringrequiredmin length 3 · max length 3
activeboolean | nulloptional
category_idstring | nulloptional
min_order_qtyinteger | nulloptionalmin 1 · max 10000
beneficiary_wallet_idstring | nulloptional
skustring | nulloptionalmax length 64

Response

Returns { "data": PosItemAdmin }.

FieldTypeConstraints
idstring (uuid)required
namestringrequired
skustring | nullrequired
activebooleanrequired
category_idstring | nullrequired
beneficiary_wallet_idstring | nullrequired
priceMoneyFormattedrequired
min_order_qtyintegerrequired
cost_priceanyrequired
photoanyrequired
created_atstring (date-time)required
updated_atstring (date-time)required
DELETE /v3/pos-item/{id} #
bearer pass_web admin_web settings.manage device credential

Path parameters

NameTypeNotes
idstring

Response

Returns { "data": PosItemAdmin }.

FieldTypeConstraints
idstring (uuid)required
namestringrequired
skustring | nullrequired
activebooleanrequired
category_idstring | nullrequired
beneficiary_wallet_idstring | nullrequired
priceMoneyFormattedrequired
min_order_qtyintegerrequired
cost_priceanyrequired
photoanyrequired
created_atstring (date-time)required
updated_atstring (date-time)required
PATCH /v3/pos-item/{id} #
bearer pass_web admin_web settings.manage device credential

Path parameters

NameTypeNotes
idstring

Request body

FieldTypeConstraints
namestringoptionalmax length 120
amount_minorintegeroptionalmin 1 · max 100000000
cost_price_minorinteger | nulloptionalmin 1 · max 100000000
activebooleanoptional
min_order_qtyintegeroptionalmin 1 · max 10000
beneficiary_wallet_idstring | nulloptional
skustring | nulloptionalmax length 64
category_idstring | nulloptional

Response

Returns { "data": PosItemAdmin }.

FieldTypeConstraints
idstring (uuid)required
namestringrequired
skustring | nullrequired
activebooleanrequired
category_idstring | nullrequired
beneficiary_wallet_idstring | nullrequired
priceMoneyFormattedrequired
min_order_qtyintegerrequired
cost_priceanyrequired
photoanyrequired
created_atstring (date-time)required
updated_atstring (date-time)required
POST /v3/topup #
bearer beneficiary_app parent_app device idempotency credential

Request body

FieldTypeConstraints
wallet_idstring (uuid)required
amount_minorintegerrequiredmin 1 · max -9223372036854775808
currencystringrequiredmin length 3 · max length 3
gatewaystringrequired
msisdnstringrequiredmax length 20

Response

Returns { "data": PaymentIntent }.

FieldTypeConstraints
payment_intent_idstring (uuid)required
statestringrequired
gatewaystringrequired
amountobjectrequired
amount.amount_minorintegerrequired
amount.currencystringrequiredmin length 3 · max length 3
instructionsstringoptional
GET /v3/waas/pos-item #
public credential

Query parameters

NameTypeConstraints
activestring | nulloptionaltrue false
beneficiarystring | nulloptionalmax length 64
cursorstring | nulloptionalmax length 200
per_pageinteger | nulloptionalmin 1 · max 500

Response

Returns { "data": … }; this endpoint's payload is not yet pinned to a named shape.

POST /v3/waas/pos-item #
public credential

Request body

FieldTypeConstraints
namestringrequiredmax length 120
amount_minorintegerrequiredmin 1 · max 100000000
cost_price_minorinteger | nulloptionalmin 1 · max 100000000
currencystringrequiredmin length 3 · max length 3
activeboolean | nulloptional
category_idstring | nulloptional
min_order_qtyinteger | nulloptionalmin 1 · max 10000
beneficiary_wallet_idstring | nulloptional
skustring | nulloptionalmax length 64

Response

Returns { "data": … }; this endpoint's payload is not yet pinned to a named shape.

POST /v3/waas/pos-item/copy #
public credential

PCE-2b: copy items onto other beneficiaries — an upsert per (item, target).

Request body

FieldTypeConstraints
item_idsstring (uuid)[]requiredmin items 1 · max items 200
beneficiary_wallet_idsstring (uuid)[]requiredmin items 1 · max items 50

Response

Returns { "data": … }; this endpoint's payload is not yet pinned to a named shape.

DELETE /v3/waas/pos-item/{id} #
public credential

Path parameters

NameTypeNotes
idstring

Response

Returns { "data": … }; this endpoint's payload is not yet pinned to a named shape.

PATCH /v3/waas/pos-item/{id} #
public credential

Path parameters

NameTypeNotes
idstring

Request body

FieldTypeConstraints
namestringoptionalmax length 120
amount_minorintegeroptionalmin 1 · max 100000000
cost_price_minorinteger | nulloptionalmin 1 · max 100000000
activebooleanoptional
min_order_qtyintegeroptionalmin 1 · max 10000
beneficiary_wallet_idstring | nulloptional
skustring | nulloptionalmax length 64
category_idstring | nulloptional

Response

Returns { "data": … }; this endpoint's payload is not yet pinned to a named shape.

GET /v3/wallet #
bearer pass_web admin_web device credential

the tenant's wallet register, whichever console (lego L1b). The pass console's flat twin merged into this richer read: indexed search arms, typed Money, joined student/account names, plus the phone and wallet age the help desk was already reading on the pass side.

Query parameters

NameTypeConstraints
holderstring | nulloptionalaccount student zone tenant agent system
qstring | nulloptionalmax length 120

Response

Returns { "data": [WebWallet] } with meta.next_cursor for the next page.

FieldTypeConstraints
idstring (uuid)required
holderstringrequired
typeobjectrequired
type.namestringrequired
type.kindstringrequired
balanceMoneyrequired
statusstringrequired
studentanyrequired
accountanyrequired
spending_profile_idstring | nullrequired
holder_phonestring | nullrequired
created_atstring (date-time)required
GET /v3/wallet/{id}/balance #
bearer beneficiary_app parent_app pass_web admin_web device credential

Path parameters

NameTypeNotes
idstring

Response

Returns { "data": WalletBalance }.

FieldTypeConstraints
wallet_idstring (uuid)required
balanceMoneyFormattedrequired
PATCH /v3/wallet/{id}/spending-profile #
bearer beneficiary_app parent_app device credential

Path parameters

NameTypeNotes
idstring

Request body

FieldTypeConstraints
spending_profile_idstring | nulloptional

Response

Returns { "data": SpendingProfileAssignment }.

FieldTypeConstraints
wallet_idstring (uuid)required
spending_profile_idstring | nullrequired
GET /v3/wallet/{id}/statement #
bearer beneficiary_app parent_app pass_web admin_web device credential

Path parameters

NameTypeNotes
idstring

Query parameters

NameTypeConstraints
fromstring | nulloptional
tostring | nulloptional

Response

Returns { "data": [WalletStatementRow] } with meta.next_cursor for the next page.

FieldTypeConstraints
idstring (uuid)required
typestringrequired
statestringrequired
directionstring | nulloptional
amountMoneyFormattedrequired
balance_afterMoneyFormattedrequired
descriptionstring | nulloptional
studentanyoptional
created_atstring (date-time)required
GET /v3/wallet/{id}/statement/summary #
bearer beneficiary_app parent_app pass_web admin_web device credential

Path parameters

NameTypeNotes
idstring

Query parameters

NameTypeConstraints
fromstringrequired
tostringrequired

Response

Returns { "data": WalletStatementSummary }.

FieldTypeConstraints
currencystringrequired
totalsobjectrequired
net_minorintegerrequired
opening_minorintegerrequired
closing_minorintegerrequired
POST /v3/wallet/{id}/topup #
bearer pass_web admin_web money.adjust device credential

Path parameters

NameTypeNotes
idstring

Request body

FieldTypeConstraints
amount_minorintegerrequiredmin 1 · max 100000000
currencystringrequiredmin length 3 · max length 3
reasonstringrequiredmin length 3 · max length 200

Response

Returns { "data": … }; this endpoint's payload is not yet pinned to a named shape.

POST /v3/webhook/payment/{gateway} #
public 120,1

Path parameters

NameTypeNotes
gatewaystring

Response

Returns { "data": … }; this endpoint's payload is not yet pinned to a named shape.