Fund Flow
Fund your master wallet via top-up requests to MyStocks operations and repatriate surplus via payout requests. Includes the aggregate partner account summary. Both money-movement endpoints are idempotent.
Request top-ups from MyStocks operations to fund your master wallet, and submit payout requests to
repatriate surplus funds. Both endpoints are idempotent — always pass Idempotency-Key to prevent
duplicate submissions.
Top-up and payout state machines are in Order & Money Lifecycles.
Partner account
Master wallet balance plus an aggregate portfolio summary across all sub-accounts. Useful as a dashboard home-screen data source.
/account
Get partner account
Full endpoint documentationlistAccountReturns your partner profile — tier, wallet balance, API key metadata, and feature flags.
Parameters
walletContract1 | 2queryOpt in to actual currency wallets. Legacy indicative views remain unchanged.
Example: 1
Headers
AuthorizationstringRequiredBearer sk_sandbox_<your_key> for sandbox requests.
Response fields
accountIdstringbusinessNamestringemailstringwalletobjectwallet.currencystringExample: "USD"
wallet.balancenumberwalletContractVersion1 | 2walletModelUSD_LEDGER_WITH_INDICATIVE_EQUIVALENTS | NATIVE_CURRENCY_WALLETSsupportedConversionCurrenciesstring[]currencyWalletsobject[]currencyWallets[].currencystringcurrencyWallets[].balanceKindstringcurrencyWallets[].cashBalancenumbercurrencyWallets[].reservednumbercurrencyWallets[].externallyReservednumbercurrencyWallets[].totalCashnumbercurrencyWallets[].availablenumbercurrencyWallets[].withdrawablenumbercurrencyWallets[].availableForConversionnumbercurrencyWallets[].policyEligiblebooleancurrencyWallets[].internalTransferAvailablenumberTraceable available funds for internal transfers
currencyWallets[].nativeFundingEnabledbooleancurrencyWallets[].nativePayoutEnabledbooleancurrencyWallets[].conversionEnabledbooleanwalletsobject[]wallets[].balanceKindstringwallets[].indicativebooleanwallets[].spendablebooleanwallets[].currencystringExample: "KES"
wallets[].balancenumberExample: 65000
wallets[].availablenumberExample: 65000
wallets[].ledgerCurrencystringExample: "USD"
wallets[].ledgerBalancenumberExample: 500
wallets[].fxRatenumberExample: 130
wallets[].fxSourcestringExample: "MYSTOCKS_MANAGED_FX"
wallets[].fxRateAsOfstring | nullmanagedFxobjectmanagedFx.ledgerCurrencystringExample: "USD"
managedFx.sourcestringExample: "MYSTOCKS_MANAGED_FX"
managedFx.rateConventionstringExample: "local currency units per USD"
managedFx.supportedCurrenciesstring[]managedFx.asOfstring | nullportfolioValuenumberinvestedCapitalnumberrealizedGainUsdnumberenvironmentproduction | sandboxpilotobjectControlled-production policy. When enabled, production mutations fail closed unless admission, ownership, feature, limit, and reconciliation controls pass.
pilot.enabledbooleanRequiredpilot.statusNOT_APPROVED | APPROVED | PAUSED | COMPLETEDRequiredpilot.operationalOwnerunionpilot.incidentContactunionpilot.manualTreasuryReviewbooleanRequiredAlways true for a controlled pilot; master-wallet top-ups and payouts remain pending until MyStocks treasury review.
pilot.featuresobjectRequiredpilot.limitsobjectRequiredpilot.reconciliationobjectRequiredpilot.readinessobjectRequiredEvidence and approvals required before mutations may resume and before the controlled pilot may complete.
Response codes
200Partner account details.401Invalid API key.Top-up
Submit a master-wallet top-up request to MyStocks operations. When funds are credited a
wallet.credited webhook fires. Use GET to list all previous top-up requests with their status.
/topup
Request top-up
Full endpoint documentationcreateTopupNotifies MyStocks that you have sent a wire transfer to top up your master wallet. An admin confirms the wire receipt and credits your wallet (typically within 1 business day). Provide your wire transfer reference in paymentReference so we can match the incoming funds. paymentReference is unique per partner after normalization; duplicate references return 409. Sandbox: the request auto-approves instantly — the master wallet is credited in the same call and topup.confirmed fires, so the funding webhook path is fully testable. Production requests stay PENDING until the remittance is confirmed.
Parameters
This endpoint has no path or query parameters.
Headers
AuthorizationstringRequiredBearer sk_sandbox_<your_key> for sandbox requests.
Idempotency-KeystringheaderRequiredUnique string that makes write calls safe to retry on network failure. Required for money movement, trading, KYC, subscriptions, and webhook creation. Deduplicated for 24 hours -- duplicate keys return the cached response. HTTP 409 if a concurrent request with the same key is still in progress.
Example: dep_user42_1743152580
Request body
amountnumberRequiredUSD amount to top up. Must be positive.
Example: 10000
paymentReferencestringRequiredYour wire transfer reference or payment ID. Unique per partner after normalization; duplicate references return 409.
Example: "WIRE-2026-05-001"
paymentMethodstringPayment method, e.g. SWIFT wire, SEPA, ACH.
Example: "SWIFT wire"
notesstringOptional note to the MyStocks operations team.
Response fields
messagestringtopupIdstringResponse codes
201Top-up request received./topup
List top-up requests
Full endpoint documentationlistTopupReturns all master wallet top-up requests and their approval status.
Parameters
This endpoint has no path or query parameters.
Headers
AuthorizationstringRequiredBearer sk_sandbox_<your_key> for sandbox requests.
Response fields
topupsobject[]topups[].idstringtopups[].amountnumbertopups[].paymentReferencestringtopups[].statuspending | approved | rejectedtopups[].createdAtstringResponse codes
200Top-up request list.Treasury controls
GET /float is the partner treasury dashboard: master balance, pending top-ups, pending payouts,
approved credit line, credit drawn, available funding headroom, pending order exposure, and pending
credit-limit requests.
Use PATCH /float to set your minimum float, low-balance threshold, and automatic top-up reminder
recipients. The scheduled reminder worker emails those recipients and fires float.low when the
master wallet falls below the configured threshold.
Use POST /float to request a credit-limit change. MyStocks treasury approves or rejects it from the
admin queue; all credit-limit changes are written to the partner audit log.
/float
Master-account float / funding headroom
Full endpoint documentationgetFloatThe partner aggregates their end-users' deposits and remits to the master account (POST /topup); the master wallet funds sub-account deposits. This returns the funding headroom so the partner knows when to remit: masterBalanceUsd, pending top-ups, any credit line, availableToFundUsd, and a floatStatus of HEALTHY / LOW / DEPLETED / ON_CREDIT. Pair with the float.low and topup.confirmed webhooks.
Parameters
This endpoint has no path or query parameters.
Headers
AuthorizationstringRequiredBearer sk_sandbox_<your_key> for sandbox requests.
Response fields
currencystringExample: "USD"
masterBalanceUsdnumberCurrent master wallet balance (negative when drawn on the credit line).
pendingTopupsUsdnumberSum of PENDING top-up requests awaiting MyStocks confirmation.
pendingPayoutsUsdnumberSum of PENDING payout requests awaiting MyStocks processing.
creditLimitUsdnumberCredit line — how far the master balance may go negative while a remittance is in flight (MyStocks-set; 0 = pre-funded only).
outstandingCreditUsdnumberCredit currently drawn (present when masterBalanceUsd is negative).
availableToFundUsdnumbermasterBalanceUsd + creditLimitUsd — the total still available to fund sub-accounts.
lowBalanceThresholdUsdnumberMaster balance below which a float.low webhook fires (partner-set via PATCH /float).
minimumFloatUsdnumberPartner treasury policy floor for the master account.
floatStatusHEALTHY | LOW | DEPLETED | ON_CREDITtreasuryStatusHEALTHY | LOW | DEPLETED | ON_CREDIT | BELOW_MINIMUMreminderSettingsobjectreminderSettings.autoTopupReminderEnabledbooleanreminderSettings.recipientsstring[]reminderSettings.frequencyHoursintegerreminderSettings.shouldRemindNowbooleanexposureobjectPartner treasury exposure dashboard.
exposure.subAccountCountintegerexposure.pendingTopupsUsdnumberexposure.pendingPayoutsUsdnumberexposure.pendingOrderExposureUsdnumberexposure.outstandingCreditUsdnumberexposure.availableToFundUsdnumberexposure.netLiquidityUsdnumberexposure.pendingCreditLimitRequestsobject[]Response codes
200Float status./float
Update treasury float controls
Full endpoint documentationupdateFloatThresholdSets lowBalanceThresholdUsd — the master balance below which a float.low webhook fires. creditLimitUsd is set by MyStocks only.
Parameters
This endpoint has no path or query parameters.
Headers
AuthorizationstringRequiredBearer sk_sandbox_<your_key> for sandbox requests.
Idempotency-KeystringheaderRequiredUnique string that makes write calls safe to retry on network failure. Required for money movement, trading, KYC, subscriptions, and webhook creation. Deduplicated for 24 hours -- duplicate keys return the cached response. HTTP 409 if a concurrent request with the same key is still in progress.
Example: dep_user42_1743152580
Request body
lowBalanceThresholdUsdnumberExample: 500
minimumFloatUsdnumberExample: 5000
autoTopupReminderEnabledbooleanExample: true
autoTopupReminderRecipientsstring[]autoTopupReminderFrequencyHoursintegerExample: 24
Response fields
currencystringExample: "USD"
masterBalanceUsdnumberCurrent master wallet balance (negative when drawn on the credit line).
pendingTopupsUsdnumberSum of PENDING top-up requests awaiting MyStocks confirmation.
pendingPayoutsUsdnumberSum of PENDING payout requests awaiting MyStocks processing.
creditLimitUsdnumberCredit line — how far the master balance may go negative while a remittance is in flight (MyStocks-set; 0 = pre-funded only).
outstandingCreditUsdnumberCredit currently drawn (present when masterBalanceUsd is negative).
availableToFundUsdnumbermasterBalanceUsd + creditLimitUsd — the total still available to fund sub-accounts.
lowBalanceThresholdUsdnumberMaster balance below which a float.low webhook fires (partner-set via PATCH /float).
minimumFloatUsdnumberPartner treasury policy floor for the master account.
floatStatusHEALTHY | LOW | DEPLETED | ON_CREDITtreasuryStatusHEALTHY | LOW | DEPLETED | ON_CREDIT | BELOW_MINIMUMreminderSettingsobjectreminderSettings.autoTopupReminderEnabledbooleanreminderSettings.recipientsstring[]reminderSettings.frequencyHoursintegerreminderSettings.shouldRemindNowbooleanexposureobjectPartner treasury exposure dashboard.
exposure.subAccountCountintegerexposure.pendingTopupsUsdnumberexposure.pendingPayoutsUsdnumberexposure.pendingOrderExposureUsdnumberexposure.outstandingCreditUsdnumberexposure.availableToFundUsdnumberexposure.netLiquidityUsdnumberexposure.pendingCreditLimitRequestsobject[]Response codes
200Updated float status./float
Request a credit-limit change
Full endpoint documentationcreateFloatCreditLimitRequestOpens a MyStocks treasury review workflow for a partner credit-limit increase or decrease. Requires a full key and Idempotency-Key.
Parameters
This endpoint has no path or query parameters.
Headers
AuthorizationstringRequiredBearer sk_sandbox_<your_key> for sandbox requests.
Idempotency-KeystringheaderRequiredUnique string that makes write calls safe to retry on network failure. Required for money movement, trading, KYC, subscriptions, and webhook creation. Deduplicated for 24 hours -- duplicate keys return the cached response. HTTP 409 if a concurrent request with the same key is still in progress.
Example: dep_user42_1743152580
Request body
requestedCreditLimitUsdnumberRequiredExample: 25000
expectedMonthlyVolumeUsdnumberExample: 500000
reasonstringExample: "Higher expected deposit volume after launch."
Response fields
requestIdstringstatusstringExample: "PENDING"
currentCreditLimitUsdnumberrequestedCreditLimitUsdnumbermessagestringResponse codes
201Credit-limit request opened.409A credit-limit request is already pending.Payout
Submit a payout request to repatriate funds from your master wallet to your settlement account.
MyStocks operations processes and debits your master wallet on fulfilment. Use GET to list all
previous payout requests.
/payout
Request payout
Full endpoint documentationcreatePayoutRequests a cash withdrawal from your master wallet to a bank account. An admin reviews and processes payouts within 2 business days. The requested amount is reserved immediately from your wallet balance. Sandbox payout creation is unsupported and returns HTTP 422 because virtual funds cannot be paid out.
Parameters
This endpoint has no path or query parameters.
Headers
AuthorizationstringRequiredBearer sk_sandbox_<your_key> for sandbox requests.
Idempotency-KeystringheaderRequiredUnique string that makes write calls safe to retry on network failure. Required for money movement, trading, KYC, subscriptions, and webhook creation. Deduplicated for 24 hours -- duplicate keys return the cached response. HTTP 409 if a concurrent request with the same key is still in progress.
Example: dep_user42_1743152580
Request body
amountnumberRequiredUSD to withdraw. Must not exceed master wallet balance.
Example: 5000
bankDetailsobjectRequiredbankDetails.bankNamestringRequiredName of the receiving bank.
Example: "Equity Bank Kenya"
bankDetails.accountNamestringRequiredAccount holder name.
Example: "ACME Fintech Ltd"
bankDetails.accountNumberstringRequiredBank account number or IBAN.
Example: "0123456789"
bankDetails.swiftCodestringSWIFT/BIC code for international wires.
Example: "EQBLKENA"
notesstringOptional note to the MyStocks team.
Response fields
messagestringpayoutIdstringResponse codes
201Payout request submitted.400Insufficient master wallet balance.422Payout requests are not available in sandbox; no funds are moved./payout
List payout requests
Full endpoint documentationlistPayoutReturns all payout requests from your master wallet.
Parameters
This endpoint has no path or query parameters.
Headers
AuthorizationstringRequiredBearer sk_sandbox_<your_key> for sandbox requests.
Response fields
payoutsobject[]payouts[].idstringpayouts[].amountnumberpayouts[].statuspending | approved | rejectedpayouts[].createdAtstringResponse codes
200Payout request list.Was this page useful?
Your signal helps us tighten partner onboarding docs.
Last updated on