Creates a Payment for one plan. Whether it is an initial investment or a top-up is decided from the customer’s holdings. For BANK_TRANSFER, the bank details to pay into are provided in the response, and the payment reference is required as the memo (narration) on the transfer; for MPESA, an STK push goes to phoneNumber. Resend a timed-out request with the same Idempotency-Key: you get the original Payment back, never a second one. After a FAILED Payment, use a new key.
Generate one per intended investment (a UUID is recommended) and resend it on retries. The same key with the same body returns the original Payment; with a different body, 409.
Where to send a bank transfer. Only while a BANK_TRANSFER Payment is PENDING
Show child attributes
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Ndovu Partner API","colors":{"primary":"#0F6E51","light":"#1A9C74","dark":"#0A4F3A"},"logo":{"light":"https://mintcdn.com/ndovu/NqoBhPeP1X8H54z0/logo/light.png?fit=max\u0026auto=format\u0026n=NqoBhPeP1X8H54z0\u0026q=85\u0026s=7cc6189bd88dcb34814d6af230d7a030","dark":"https://mintcdn.com/ndovu/NqoBhPeP1X8H54z0/logo/dark.png?fit=max\u0026auto=format\u0026n=NqoBhPeP1X8H54z0\u0026q=85\u0026s=7a3fad3a61941fa1a52c4d2c391c82bb","href":"https://ndovu.co"},"favicon":{"light":"https://mintcdn.com/ndovu/NqoBhPeP1X8H54z0/favicon-light.png?fit=max\u0026auto=format\u0026n=NqoBhPeP1X8H54z0\u0026q=85\u0026s=9047896074476a6796bc110d72cdbdcd","dark":"https://mintcdn.com/ndovu/NqoBhPeP1X8H54z0/favicon-dark.png?fit=max\u0026auto=format\u0026n=NqoBhPeP1X8H54z0\u0026q=85\u0026s=5575822372baca5aba98b6b7637f272f"},"navbar":{"links":[{"href":"mailto:support@ndovu.co","label":"Support"}]},"footer":{"socials":{"website":"https://ndovu.co"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"ndovu","hasAudioNarration":false,"actualSubdomain":"ndovu","customDomains":["docs.ndovu.co"],"gitSource":{"type":"github","owner":"ndovu-inc","repo":"ndovu-partner-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"collectionId":"318313c0-94c2-4585-9f66-77b624d826ff","liveDeploymentHistoryId":"6adb1023e1194c58a457d839","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6adb1023e1194c58a457d839"},"entitlements":{},"buildId":"6adb1023e1194c58a457d839","clientVersion":"0.0.3990","searchFilterCounts":[{"language":"default","tag":"API Reference","count":16},{"language":"default","tag":"Endpoints","count":16},{"language":"default","tag":"partners","count":16},{"language":"default","tag":"Documentation","count":12},{"language":"default","tag":"Get Started","count":4},{"language":"default","tag":"Investing","count":4},{"language":"default","tag":"Reference","count":2},{"language":"default","tag":"Customers","count":2}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/partners/invest-for-a-customer","slug":"/api-reference/partners/invest-for-a-customer","pageMetadata":{"title":"Invest for a customer","description":"Creates a Payment for one plan. Whether it is an initial investment or a top-up is decided from the customer's holdings. For BANK_TRANSFER, the bank details to pay into are provided in the response, and the payment reference is required as the memo (narration) on the transfer; for MPESA, an STK push goes to phoneNumber. Resend a timed-out request with the same Idempotency-Key: you get the original Payment back, never a second one. After a FAILED Payment, use a new key.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v3/partners/{shortName}/customers/{externalUserId}/invest","href":"/api-reference/partners/invest-for-a-customer","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Creates a Payment for one plan. Whether it is an initial investment or a top-up is decided from the customer’s holdings. For BANK_TRANSFER, the bank details to pay into are provided in the response, and the payment reference is required as the memo (narration) on the transfer; for MPESA, an STK push goes to phoneNumber. Resend a timed-out request with the same Idempotency-Key: you get the original Payment back, never a second one. After a FAILED Payment, use a new key.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Invest for a customer","description":"Creates a Payment for one plan. Whether it is an initial investment or a top-up is decided from the customer's holdings. For BANK_TRANSFER, the bank details to pay into are provided in the response, and the payment reference is required as the memo (narration) on the transfer; for MPESA, an STK push goes to phoneNumber. Resend a timed-out request with the same Idempotency-Key: you get the original Payment back, never a second one. After a FAILED Payment, use a new key.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v3/partners/{shortName}/customers/{externalUserId}/invest","href":"/api-reference/partners/invest-for-a-customer","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"description":"Creates a Payment for one plan. Whether it is an initial investment or a top-up is decided from the customer's holdings. For BANK_TRANSFER, the bank details to pay into are provided in the response, and the payment reference is required as the memo (narration) on the transfer; for MPESA, an STK push goes to phoneNumber. Resend a timed-out request with the same Idempotency-Key: you get the original Payment back, never a second one. After a FAILED Payment, use a new key.","operationId":"PartnerMoneyController_invest_v3","parameters":["396af65a-99ba-4049-9162-2dcb47b6ce09","6f614d0a-6221-4510-a6be-d79a11a79506","c975b4b8-8ebe-4a56-9512-da2da1e35594"],"requestBody":"912ef39b-aa2e-441d-9a78-8183b3f6aab8","responses":{"200":"7b3db36d-0c05-4d89-8c22-909e39272f68","201":"c48335be-ecc9-4875-9e04-a8aa3eebf06e","400":"f1fbe4a8-e01e-4641-bff0-5b405bf5a84b","403":"e06698c3-6117-4c13-9a43-c76875f87a35","404":"d75be255-707a-4efa-8358-edf019dbc5fe","409":"deb370f7-e6f9-47dc-97eb-b3576e314b08","422":"197548c7-be75-41c7-b34c-5c35c3435bc6"},"security":["76de873b-f6b0-414c-81e6-b602217c401a"],"summary":"Invest for a customer","tags":["partners"],"method":"post","type":"path","servers":["4e6a34ba-14a9-4d05-a8a5-4d5314bbadbc"],"path":"/api/v3/partners/{shortName}/customers/{externalUserId}/invest","baseUrlOptions":["https://be-dev-1.dev.ndovu.co"],"title":"Invest for a customer","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"396af65a-99ba-4049-9162-2dcb47b6ce09":{"name":"shortName","required":true,"in":"path","description":"Your partner short name","schema":{"type":"string","isRequired":true,"description":"Your partner short name","uniqueKey":"","typeLabel":"string"}},"6f614d0a-6221-4510-a6be-d79a11a79506":{"name":"externalUserId","required":true,"in":"path","description":"Your own ID for the customer","schema":{"type":"string","isRequired":true,"description":"Your own ID for the customer","uniqueKey":"","typeLabel":"string"}},"c975b4b8-8ebe-4a56-9512-da2da1e35594":{"name":"Idempotency-Key","in":"header","description":"Generate one per intended investment (a UUID is recommended) and resend it on retries. The same key with the same body returns the original Payment; with a different body, 409.","required":true,"schema":{"type":"string","isRequired":true,"description":"Generate one per intended investment (a UUID is recommended) and resend it on retries. The same key with the same body returns the original Payment; with a different body, 409.","uniqueKey":"","typeLabel":"string"}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"planId":{"type":"number","example":12,"description":"A plan id from GET plans","isRequired":true,"uniqueKey":"planId","typeLabel":"number"},"amount":{"type":"number","minimum":1,"example":5000,"isRequired":true,"uniqueKey":"amount","typeLabel":"number"},"currency":{"enum":["KES","USD","RWF","TZS","EUR","GBP"],"type":"string","example":"KES","isRequired":true,"uniqueKey":"currency","typeLabel":"enum\u003cstring>"},"channel":{"enum":["MPESA","BANK_TRANSFER"],"type":"string","example":"BANK_TRANSFER","isRequired":true,"uniqueKey":"channel","typeLabel":"enum\u003cstring>"},"phoneNumber":{"type":"string","example":"+254712345678","description":"Required for MPESA: the number that receives the STK push. Any valid number; it need not be the customer's own","uniqueKey":"phoneNumber","typeLabel":"string"}},"required":["planId","amount","currency","channel"],"uniqueKey":"","typeLabel":"object"},"examples":{"BANK_TRANSFER":{"title":"BANK_TRANSFER","value":{"planId":12,"amount":5000,"currency":"KES","channel":"BANK_TRANSFER"}},"MPESA":{"title":"MPESA","value":{"planId":12,"amount":5000,"currency":"KES","channel":"MPESA","phoneNumber":"+254712345678"}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"7b3db36d-0c05-4d89-8c22-909e39272f68":{"description":"Payment already created with this Idempotency-Key","content":{"application/json":{"schema":{"type":"object","properties":{"reference":{"type":"string","example":"NDV7F3K9Q","description":"The PaymentReference. For a bank transfer, quote it as the transfer memo","isRequired":true,"uniqueKey":"reference","typeLabel":"string"},"channel":{"type":"string","enum":["MPESA","BANK_TRANSFER"],"isRequired":true,"uniqueKey":"channel","typeLabel":"enum\u003cstring>"},"amount":{"type":"number","example":5000,"isRequired":true,"uniqueKey":"amount","typeLabel":"number"},"finalAmount":{"type":"number","example":5000,"description":"The amount to pay","isRequired":true,"uniqueKey":"finalAmount","typeLabel":"number"},"currency":{"type":"string","example":"KES","isRequired":true,"uniqueKey":"currency","typeLabel":"string"},"status":{"enum":["PENDING","COMPLETED","FAILED"],"type":"string","isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"createdAt":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"createdAt","typeLabel":"string\u003cdate-time>"},"fee":{"type":"number","example":50,"description":"The deposit fee this investment will be charged","isRequired":true,"uniqueKey":"fee","typeLabel":"number"},"mnoReference":{"oneOf":[{"type":"string","description":"The M-Pesa receipt","uniqueKey":"mnoReference.oneOf.0","typeLabel":"string"},{"type":"null","description":"The M-Pesa receipt","uniqueKey":"mnoReference.oneOf.1","typeLabel":"null"}],"uniqueKey":"mnoReference","typeLabel":"string | null"},"bankReference":{"oneOf":[{"type":"string","description":"The bank's own transaction id, once reconciled","uniqueKey":"bankReference.oneOf.0","typeLabel":"string"},{"type":"null","description":"The bank's own transaction id, once reconciled","uniqueKey":"bankReference.oneOf.1","typeLabel":"null"}],"uniqueKey":"bankReference","typeLabel":"string | null"},"phoneNumber":{"oneOf":[{"type":"string","example":"+2547...5678","description":"The paying number, redacted (M-Pesa)","uniqueKey":"phoneNumber.oneOf.0","typeLabel":"string"},{"type":"null","example":"+2547...5678","description":"The paying number, redacted (M-Pesa)","uniqueKey":"phoneNumber.oneOf.1","typeLabel":"null"}],"uniqueKey":"phoneNumber","typeLabel":"string | null"},"plan":{"oneOf":[{"type":"object","required":["id","name"],"properties":{"id":{"type":"number","example":12,"isRequired":true,"uniqueKey":"plan.oneOf.0.id","typeLabel":"number"},"name":{"type":"string","example":"Ndovu Money Market Fund","isRequired":true,"uniqueKey":"plan.oneOf.0.name","typeLabel":"string"}},"uniqueKey":"plan.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"plan.oneOf.1","typeLabel":"null"}],"uniqueKey":"plan","typeLabel":"object | null"},"transactionId":{"oneOf":[{"type":"number","description":"The Transaction this Payment funds. Null until the Payment is COMPLETED, when the Transaction is created","uniqueKey":"transactionId.oneOf.0","typeLabel":"number"},{"type":"null","description":"The Transaction this Payment funds. Null until the Payment is COMPLETED, when the Transaction is created","uniqueKey":"transactionId.oneOf.1","typeLabel":"null"}],"uniqueKey":"transactionId","typeLabel":"number | null"},"completedAt":{"oneOf":[{"format":"date-time","type":"string","uniqueKey":"completedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","uniqueKey":"completedAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"completedAt","typeLabel":"string\u003cdate-time> | null"},"bankDetails":{"oneOf":[{"type":"object","description":"Where to send a bank transfer. Only while a BANK_TRANSFER Payment is PENDING","required":["bankName","bankBranch","accountName","accountNumber"],"properties":{"bankName":{"type":"string","isRequired":true,"uniqueKey":"bankDetails.oneOf.0.bankName","typeLabel":"string"},"bankBranch":{"type":"string","isRequired":true,"uniqueKey":"bankDetails.oneOf.0.bankBranch","typeLabel":"string"},"accountName":{"type":"string","isRequired":true,"uniqueKey":"bankDetails.oneOf.0.accountName","typeLabel":"string"},"accountNumber":{"type":"string","isRequired":true,"uniqueKey":"bankDetails.oneOf.0.accountNumber","typeLabel":"string"},"swiftCode":{"oneOf":[{"type":"string","uniqueKey":"bankDetails.oneOf.0.swiftCode.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"bankDetails.oneOf.0.swiftCode.oneOf.1","typeLabel":"null"}],"uniqueKey":"bankDetails.oneOf.0.swiftCode","typeLabel":"string | null"}},"uniqueKey":"bankDetails.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"bankDetails.oneOf.1","typeLabel":"null"}],"uniqueKey":"bankDetails","typeLabel":"object | null"}},"required":["reference","channel","amount","finalAmount","currency","status","createdAt","fee"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"reference":"NDV7F3K9Q","channel":"MPESA","amount":5000,"finalAmount":5000,"currency":"KES","status":"PENDING","createdAt":"2023-11-07T05:31:56Z","fee":50,"mnoReference":"\u003cstring>","bankReference":"\u003cstring>","phoneNumber":"+2547...5678","plan":{"id":12,"name":"Ndovu Money Market Fund"},"transactionId":123,"completedAt":"2023-11-07T05:31:56Z","bankDetails":{"bankName":"\u003cstring>","bankBranch":"\u003cstring>","accountName":"\u003cstring>","accountNumber":"\u003cstring>","swiftCode":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"c48335be-ecc9-4875-9e04-a8aa3eebf06e":{"description":"Payment created","content":{"application/json":{"schema":{"type":"object","properties":{"reference":{"type":"string","example":"NDV7F3K9Q","description":"The PaymentReference. For a bank transfer, quote it as the transfer memo","isRequired":true,"uniqueKey":"reference","typeLabel":"string"},"channel":{"type":"string","enum":["MPESA","BANK_TRANSFER"],"isRequired":true,"uniqueKey":"channel","typeLabel":"enum\u003cstring>"},"amount":{"type":"number","example":5000,"isRequired":true,"uniqueKey":"amount","typeLabel":"number"},"finalAmount":{"type":"number","example":5000,"description":"The amount to pay","isRequired":true,"uniqueKey":"finalAmount","typeLabel":"number"},"currency":{"type":"string","example":"KES","isRequired":true,"uniqueKey":"currency","typeLabel":"string"},"status":{"enum":["PENDING","COMPLETED","FAILED"],"type":"string","isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"createdAt":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"createdAt","typeLabel":"string\u003cdate-time>"},"fee":{"type":"number","example":50,"description":"The deposit fee this investment will be charged","isRequired":true,"uniqueKey":"fee","typeLabel":"number"},"mnoReference":{"oneOf":[{"type":"string","description":"The M-Pesa receipt","uniqueKey":"mnoReference.oneOf.0","typeLabel":"string"},{"type":"null","description":"The M-Pesa receipt","uniqueKey":"mnoReference.oneOf.1","typeLabel":"null"}],"uniqueKey":"mnoReference","typeLabel":"string | null"},"bankReference":{"oneOf":[{"type":"string","description":"The bank's own transaction id, once reconciled","uniqueKey":"bankReference.oneOf.0","typeLabel":"string"},{"type":"null","description":"The bank's own transaction id, once reconciled","uniqueKey":"bankReference.oneOf.1","typeLabel":"null"}],"uniqueKey":"bankReference","typeLabel":"string | null"},"phoneNumber":{"oneOf":[{"type":"string","example":"+2547...5678","description":"The paying number, redacted (M-Pesa)","uniqueKey":"phoneNumber.oneOf.0","typeLabel":"string"},{"type":"null","example":"+2547...5678","description":"The paying number, redacted (M-Pesa)","uniqueKey":"phoneNumber.oneOf.1","typeLabel":"null"}],"uniqueKey":"phoneNumber","typeLabel":"string | null"},"plan":{"oneOf":[{"type":"object","required":["id","name"],"properties":{"id":{"type":"number","example":12,"isRequired":true,"uniqueKey":"plan.oneOf.0.id","typeLabel":"number"},"name":{"type":"string","example":"Ndovu Money Market Fund","isRequired":true,"uniqueKey":"plan.oneOf.0.name","typeLabel":"string"}},"uniqueKey":"plan.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"plan.oneOf.1","typeLabel":"null"}],"uniqueKey":"plan","typeLabel":"object | null"},"transactionId":{"oneOf":[{"type":"number","description":"The Transaction this Payment funds. Null until the Payment is COMPLETED, when the Transaction is created","uniqueKey":"transactionId.oneOf.0","typeLabel":"number"},{"type":"null","description":"The Transaction this Payment funds. Null until the Payment is COMPLETED, when the Transaction is created","uniqueKey":"transactionId.oneOf.1","typeLabel":"null"}],"uniqueKey":"transactionId","typeLabel":"number | null"},"completedAt":{"oneOf":[{"format":"date-time","type":"string","uniqueKey":"completedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"format":"date-time","type":"null","uniqueKey":"completedAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"completedAt","typeLabel":"string\u003cdate-time> | null"},"bankDetails":{"oneOf":[{"type":"object","description":"Where to send a bank transfer. Only while a BANK_TRANSFER Payment is PENDING","required":["bankName","bankBranch","accountName","accountNumber"],"properties":{"bankName":{"type":"string","isRequired":true,"uniqueKey":"bankDetails.oneOf.0.bankName","typeLabel":"string"},"bankBranch":{"type":"string","isRequired":true,"uniqueKey":"bankDetails.oneOf.0.bankBranch","typeLabel":"string"},"accountName":{"type":"string","isRequired":true,"uniqueKey":"bankDetails.oneOf.0.accountName","typeLabel":"string"},"accountNumber":{"type":"string","isRequired":true,"uniqueKey":"bankDetails.oneOf.0.accountNumber","typeLabel":"string"},"swiftCode":{"oneOf":[{"type":"string","uniqueKey":"bankDetails.oneOf.0.swiftCode.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"bankDetails.oneOf.0.swiftCode.oneOf.1","typeLabel":"null"}],"uniqueKey":"bankDetails.oneOf.0.swiftCode","typeLabel":"string | null"}},"uniqueKey":"bankDetails.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"bankDetails.oneOf.1","typeLabel":"null"}],"uniqueKey":"bankDetails","typeLabel":"object | null"}},"required":["reference","channel","amount","finalAmount","currency","status","createdAt","fee"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"reference":"NDV7F3K9Q","channel":"MPESA","amount":5000,"finalAmount":5000,"currency":"KES","status":"PENDING","createdAt":"2023-11-07T05:31:56Z","fee":50,"mnoReference":"\u003cstring>","bankReference":"\u003cstring>","phoneNumber":"+2547...5678","plan":{"id":12,"name":"Ndovu Money Market Fund"},"transactionId":123,"completedAt":"2023-11-07T05:31:56Z","bankDetails":{"bankName":"\u003cstring>","bankBranch":"\u003cstring>","accountName":"\u003cstring>","accountNumber":"\u003cstring>","swiftCode":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"f1fbe4a8-e01e-4641-bff0-5b405bf5a84b":{"description":"IDEMPOTENCY_KEY_REQUIRED, or the amount is below the plan minimum for this currency","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"e06698c3-6117-4c13-9a43-c76875f87a35":{"description":"FUNDING_METHOD_NOT_ENABLED or PARTNER_DISABLED","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"d75be255-707a-4efa-8358-edf019dbc5fe":{"description":"CUSTOMER_NOT_FOUND or PLAN_NOT_FOUND","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"deb370f7-e6f9-47dc-97eb-b3576e314b08":{"description":"IDEMPOTENCY_KEY_REUSED","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"197548c7-be75-41c7-b34c-5c35c3435bc6":{"description":"PLAN_NOT_INVESTABLE","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}}},"security":{"76de873b-f6b0-414c-81e6-b602217c401a":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http","scopes":[],"schemeName":"bearer"}}},"servers":{"4e6a34ba-14a9-4d05-a8a5-4d5314bbadbc":{"url":"https://be-dev-1.dev.ndovu.co","description":"Development"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"scheme":"bearer","bearerFormat":"JWT","type":"http","scopes":[],"schemeName":"bearer"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer authentication header of the form `Bearer \u003ctoken>`, where `\u003ctoken>` is your auth token.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearer","name":"Authorization"}],"title":"bearer"}]},"originalFileLocation":"api-reference/openapi.json"},"subdomain":"ndovu","siteName":"Ndovu Partner API","title":"Invest for a customer - Ndovu Partner API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-23T07:43:35.047Z","originalFileLocation":"api-reference/partners/invest-for-a-customer.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Creates a Payment for one plan. Whether it is an initial investment or a top-up is decided from the customer\u0026#x27;s holdings. For BANK_TRANSFER, the bank details to pay into are provided in the response, and the payment reference is required as the memo (narration) on the transfer; for MPESA, an STK push goes to phoneNumber. Resend a timed-out request with the same Idempotency-Key: you get the original Payment back, never a second one. After a FAILED Payment, use a new key.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Ndovu Partner API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/ndovu/h3DibWqUzDapH_xM/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/ndovu/h3DibWqUzDapH_xM/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/ndovu/h3DibWqUzDapH_xM/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/ndovu/h3DibWqUzDapH_xM/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/ndovu/h3DibWqUzDapH_xM/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/ndovu/h3DibWqUzDapH_xM/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/ndovu/h3DibWqUzDapH_xM/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/ndovu/h3DibWqUzDapH_xM/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/ndovu/h3DibWqUzDapH_xM/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Invest for a customer - Ndovu Partner API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Creates a Payment for one plan. Whether it is an initial investment or a top-up is decided from the customer\u0026#x27;s holdings. For BANK_TRANSFER, the bank details to pay into are provided in the response, and the payment reference is required as the memo (narration) on the transfer; for MPESA, an STK push goes to phoneNumber. Resend a timed-out request with the same Idempotency-Key: you get the original Payment back, never a second one. After a FAILED Payment, use a new key.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Ndovu Partner API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.ndovu.co/api-reference/partners/invest-for-a-customer\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://ndovu.mintlify.app/_mintlify/api/og/v2?division=partners\u0026amp;title=Invest+for+a+customer\u0026amp;description=Creates+a+Payment+for+one+plan.+Whether+it+is+an+initial+investment+or+a+top-up+is+decided+from+the+customer%27s+holdings.+For+BANK_TRANSFER%2C+the+bank+details+to+\u0026amp;theme=61142669db4ef57176e5c489\u0026amp;signature=ae5e8002db2df07ae4f39e604b4b8c6a383eccb4be81c0808529cac171ac80bb\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Invest for a customer - Ndovu Partner API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Creates a Payment for one plan. Whether it is an initial investment or a top-up is decided from the customer\u0026#x27;s holdings. For BANK_TRANSFER, the bank details to pay into are provided in the response, and the payment reference is required as the memo (narration) on the transfer; for MPESA, an STK push goes to phoneNumber. Resend a timed-out request with the same Idempotency-Key: you get the original Payment back, never a second one. After a FAILED Payment, use a new key.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://ndovu.mintlify.app/_mintlify/api/og/v2?division=partners\u0026amp;title=Invest+for+a+customer\u0026amp;description=Creates+a+Payment+for+one+plan.+Whether+it+is+an+initial+investment+or+a+top-up+is+decided+from+the+customer%27s+holdings.+For+BANK_TRANSFER%2C+the+bank+details+to+\u0026amp;theme=61142669db4ef57176e5c489\u0026amp;signature=ae5e8002db2df07ae4f39e604b4b8c6a383eccb4be81c0808529cac171ac80bb\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/ndovu/h3DibWqUzDapH_xM/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Ndovu Partner API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0F6E51\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.ndovu.co/api-reference/partners/invest-for-a-customer\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/partners/invest-for-a-customer.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.ndovu.co/#organization\",\"name\":\"Ndovu Partner API\",\"url\":\"https://docs.ndovu.co\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/ndovu/NqoBhPeP1X8H54z0/logo/light.png?fit=max\u0026auto=format\u0026n=NqoBhPeP1X8H54z0\u0026q=85\u0026s=7cc6189bd88dcb34814d6af230d7a030\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.ndovu.co#website\",\"name\":\"Ndovu Partner API\",\"url\":\"https://docs.ndovu.co\",\"publisher\":{\"@id\":\"https://docs.ndovu.co/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.ndovu.co/api-reference/partners/invest-for-a-customer#webpage\",\"url\":\"https://docs.ndovu.co/api-reference/partners/invest-for-a-customer\",\"name\":\"Invest for a customer\",\"description\":\"Creates a Payment for one plan. Whether it is an initial investment or a top-up is decided from the customer's holdings. For BANK_TRANSFER, the bank details to pay into are provided in the response, and the payment reference is required as the memo (narration) on the transfer; for MPESA, an STK push goes to phoneNumber. Resend a timed-out request with the same Idempotency-Key: you get the original Payment back, never a second one. After a FAILED Payment, use a new key.\",\"dateModified\":\"2026-10-23T07:43:35.047Z\",\"isPartOf\":{\"@id\":\"https://docs.ndovu.co#website\"},\"breadcrumb\":{\"@id\":\"https://docs.ndovu.co/api-reference/partners/invest-for-a-customer#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.ndovu.co/api-reference/partners/invest-for-a-customer#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.ndovu.co/api-reference/partners/issue-a-partner-access-token\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"partners\",\"item\":\"https://docs.ndovu.co/api-reference/partners/issue-a-partner-access-token\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Invest for a customer\",\"item\":\"https://docs.ndovu.co/api-reference/partners/invest-for-a-customer\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.ndovu.co/api-reference/partners/invest-for-a-customer#apireference\",\"headline\":\"Invest for a customer\",\"name\":\"Invest for a customer\",\"description\":\"Creates a Payment for one plan. Whether it is an initial investment or a top-up is decided from the customer's holdings. For BANK_TRANSFER, the bank details to pay into are provided in the response, and the payment reference is required as the memo (narration) on the transfer; for MPESA, an STK push goes to phoneNumber. Resend a timed-out request with the same Idempotency-Key: you get the original Payment back, never a second one. After a FAILED Payment, use a new key.\",\"url\":\"https://docs.ndovu.co/api-reference/partners/invest-for-a-customer\",\"mainEntityOfPage\":{\"@id\":\"https://docs.ndovu.co/api-reference/partners/invest-for-a-customer#webpage\"},\"dateModified\":\"2026-10-23T07:43:35.047Z\",\"publisher\":{\"@id\":\"https://docs.ndovu.co/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.ndovu.co#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Ndovu Partner API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Ndovu Partner API","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":""}]},{"tab":"API Reference","groups":[{"group":"Endpoints","pages":[{"group":"partners","pages":[{"title":"Issue a partner access token","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v3/partners/auth","href":"/api-reference/partners/issue-a-partner-access-token"},{"title":"Get all plans for a partner","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /api/v3/partners/{shortName}/plans","href":"/api-reference/partners/get-all-plans-for-a-partner"},{"title":"Get social proof stats","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /api/v3/partners/social-proof","href":"/api-reference/partners/get-social-proof-stats"},{"title":"Get your partner configuration: country, currency, status and limits","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /api/v3/partners/{shortName}","href":"/api-reference/partners/get-your-partner-configuration:-country-currency-status-and-limits"},{"title":"List the document types you can upload for your customers","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /api/v3/partners/{shortName}/document-types","href":"/api-reference/partners/list-the-document-types-you-can-upload-for-your-customers"},{"title":"List your customers","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /api/v3/partners/{shortName}/customers","href":"/api-reference/partners/list-your-customers"},{"title":"Onboard a customer","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v3/partners/{shortName}/customers","href":"/api-reference/partners/onboard-a-customer"},{"title":"Get a customer","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /api/v3/partners/{shortName}/customers/{externalUserId}","href":"/api-reference/partners/get-a-customer"},{"title":"Update a customer","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /api/v3/partners/{shortName}/customers/{externalUserId}","href":"/api-reference/partners/update-a-customer"},{"title":"Upload one of a customer's documents","description":"One file per call. Uploading again for the same type and side replaces the earlier file. Only for a SHARED identityPolicy.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /api/v3/partners/{shortName}/customers/{externalUserId}/documents/{documentType}","href":"/api-reference/partners/upload-one-of-a-customers-documents"},{"title":"Invest for a customer","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v3/partners/{shortName}/customers/{externalUserId}/invest","href":"/api-reference/partners/invest-for-a-customer"},{"title":"Get a customer's portfolio","description":"Holdings, and totals per currency (never summed across currencies).","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /api/v3/partners/{shortName}/customers/{externalUserId}/portfolio","href":"/api-reference/partners/get-a-customers-portfolio"},{"title":"List a customer's transactions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /api/v3/partners/{shortName}/customers/{externalUserId}/portfolio/transactions","href":"/api-reference/partners/list-a-customers-transactions"},{"title":"Get one of a customer's transactions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /api/v3/partners/{shortName}/customers/{externalUserId}/portfolio/transactions/{transactionId}","href":"/api-reference/partners/get-one-of-a-customers-transactions"},{"title":"List a customer's payments","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /api/v3/partners/{shortName}/customers/{externalUserId}/payments","href":"/api-reference/partners/list-a-customers-payments"},{"title":"Get one of a customer's payments","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /api/v3/partners/{shortName}/customers/{externalUserId}/payments/{reference}","href":"/api-reference/partners/get-one-of-a-customers-payments"}]}]}]}]},"title":"Invest for a customer - Ndovu Partner API","buildId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","deploymentId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-WRhTSUDL.js","utils-ChMov4Kr.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-_REmC2bI.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Bp6nVRCu.js","snippetPresets-DZadmXoU.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CY2WdoTl.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-DwYG-Q4l.js","shallow-BXQIGwv4.js","getApiPlaygroundDisplay-CK5nK5B9.js","CodeSnippet-TH4a2aGW.js","CodeSnippets-DwsQiOFS.js","Page-R3M_BF4L.js","getPastedJson-DD7kUzi_.js","icon-holE3QoJ.js","MethodPill-DUW0T8us.js","DuplicateIcon-CI_p4be-.js","createIcon-BdbRvavb.js","DynamicMarkdown-DN96a4Ur.js","SectionHeading-SCu36A9d.js","axios-vUo_bRtp.js","Markdown-CCeGv-zI.js","clsx-BGBGWFTt.js","lib--scc4DXi.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-Cv_O2fky.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-2C5OB2eV.js"]}