Internal Service
The Internal Service is a dedicated module within the Xfund Client API that enables direct communication with the Xfund Core application without requiring individual clients to authenticate or log in through the default client authentication flow.
The module requires a one-time authentication through a central login process. Once authenticated, the integrating application can perform portfolio subscriptions, redemptions, and other supported transaction activities on behalf of specific clients. Clients are identified using unique identifiers such as account numbers or email addresses.
The Internal Service operates independently of the default client module and must be explicitly enabled through the application configuration before it can be used.
Use Case
The Internal Service is suitable for businesses that already have an existing client-facing application with their own login and authentication mechanisms but want to make Xfund investment products available to their clients.
In this scenario, the existing application manages client authentication, while the Internal Service enables the application to interact with Xfund Core to facilitate investment activities, including portfolio subscriptions, redemptions, and other supported transactions.
Authentication
Endpoint:
/api/v1/InternalService/auth/login
Method: POST
- Account Login
Request payload
{
"username": "string",
"password": "string"
}
| Field | Description or API to call |
|---|---|
username |
xfund integration username |
password |
password |
Sample Response payload
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6IkdvZHdpbiIsInN1YiI6",
"userName": "Godwin",
"message": "Success"
}
Account creation and management
Endpoint:
/api/v1/InternalService/createclient
Method: POST
- Create new client
Request payload
{
"fullname": "string",
"clientType": "s",
"surname": "string",
"clientGroupId": 0,
"source": "string",
"clientId": 0,
"firstname": "string",
"othernames": "string",
"dateOfBirthOrIncorporation": "2026-10-23T02:08:37.947Z",
"agentCode": "string",
"emailAddress": "string",
"alternateEmailAddress": "string",
"bvn": "string",
"chn": "string",
"prospectiveClient": true,
"address1": "string",
"address2": "string",
"city": "string",
"state": "string",
"country": "str",
"zipcode": "string",
"mobileNumber": "string",
"gender": "s",
"titleCode": "string",
"maritalstatus": "s",
"nationality": "str",
"occupation": "string",
"religion": "string",
"mothersmaidenname": "string",
"placeofbirth": "string",
"identificationType": "string",
"identificationNumber": "string",
"identificationExpiry": "2026-10-23T02:08:37.947Z",
"nin": "string",
"diasporaClient": true,
"enableOnlineAccess": true,
"accountVerificationMessage": "string",
"classCode": "string",
"tier": 0,
"accountNo": "string",
"referenceNo": "string",
"registeredCompanyNumber": "string",
"contactPerson": "string",
"minorRelationshipId": 0,
"parentClientId": 0,
"referredBy": "string",
"pep": true,
"sourceOfIncomeName": "string",
"netWorth": 0,
"emailIndemnity": true,
"taxId": "string"
}
Clients on the system are identified as below;
- Individual => I
- Cooperate => C
- Minor => M
Minor clients must be registered under a parent
ClientType => I or C or M
| Field | Description or API to call |
|---|---|
clientType |
"I" or "C" or "M" |
clientGroupId" |
transId => /api/v1/getclientgroup/{clientType} |
source |
account creation channel. It defaults to xfundfront |
country |
code => /api/v1/getcountries |
gender |
value => /api/v1/getgender |
titleCode |
titleCode => /api/v1/gettitles |
maritalstatus |
value => /api/v1/getmaritalstatus |
nationality |
code => /api/v1/getcountries |
identificationType |
code => /api/v1/getidentitytypes |
pep |
political exposed person |
sample Response payload
{
"status": true,
"message": "Success",
"object": {
"fullname": "Godwin Amadii",
"clientType": "I",
"surname": "Amadii",
"clientGroupId": 1,
"source": "xfundfront",
"approved": false,
"clientId": 3972,
"firstname": "Godwin",
"othernames": null,
"contactPerson": null,
"contactPersonEmail": null,
"contactPersonPhoneNo": null,
"dateOfBirthOrIncorporation": "2000-12-12T00:00:00",
"agentCode": null,
"emailAddress": "amadigodwin774@gmail.com",
"alternateEmailAddress": null,
"bvn": null,
"chn": null,
"crmId": null,
"prospectiveClient": false,
"address1": null,
"address2": null,
"city": null,
"state": null,
"country": "NGA",
"zipcode": null,
"mobileNumber": null,
"gender": "M",
"titleCode": null,
"maritalstatus": null,
"nationality": "NGA",
"occupation": null,
"religion": null,
"mothersmaidenname": null,
"placeofbirth": null,
"identificationType": null,
"identificationNumber": null,
"nin": "10123345800",
"diasporaClient": false,
"enableOnlineAccess": true,
"onlineAccessDate": null,
"deactivated": false,
"accountVerificationMessage": null,
"houseHoldName": null,
"partnerCode": null,
"classCode": null,
"tier": null,
"identificationExpiry": null,
"accountNo": "00253767",
"referenceNo": null,
"registeredCompanyNumber": null,
"pep": false,
"referralCode": "2378c4",
"referredBy": null,
"sourceOfIncomeName": null,
"emailIndemnity": false,
"taxId": null,
"parentClientId": null,
"minorRelationshipId": null,
"netWorth": 0
}
}
Endpoint:
/api/v1/InternalService/updateclient
Method: POST
- Update client
Endpoint:
/api/v1/InternalService/getclient/{accountno}
Method: GET
- Get client using the client account number
Request query param {accountno}: client xfund account number generated after a client is onboarded onto xfund
Endpoint:
/api/v1/InternalService/getclientaccountinfo/{accountno}
Method: GET
- Get new client account info
Request query param {accountno}: client xfund account number generated after a client is onboarded onto xfund
Endpoint:
/api/v1/InternalService/getclients/{bvn}
Method: GET
- Get client info using bvn(bank verification number)
Sample response payload
[
{
"fullname": "John Chinedu Adebayo",
"bvn": "22777678901",
"accountNo": "00682201"
}
]
Endpoint:
/api/v1/InternalService/getclientsbyphonenumber/{phonenumber}
Method: GET
- returns client details
Sample response payload
[
{
"createdDate": "2022-09-16T18:43:11.597",
"accountNo": "00645399",
"fullname": "Movis Limited",
"bvn": "000000",
"approved": true
}
]
Endpoint:
/api/v1/InternalService/getclientsbycreateddate/{createddate}
Method: GET
- returns client details
Sample response payload
[
{
"createdDate": "2025-08-04T11:36:13.64",
"accountNo": "00818801",
"fullname": "ITAPMMF",
"bvn": null,
"approved": true
}
]
Endpoint:
/api/v1/InternalService/createbankaccount/{accountno}
Method: POST
Request query param {accountno}: client xfund account number generated after client is onboarded onto xfund
request payload
{
"beneficiaryCompanyId": 0,
"beneficiaryAccountNo": "string",
"currencyCode": "str",
"beneficiaryName": "string",
"beneficiarySortCode": "string",
"beneficiaryBankSwiftCode": "string",
"iban": "string",
"countryCode": "str",
"intermediaryBank": "string",
"intermediaryBankAccountNo": "string",
"intermediaryBankSwiftCode": "string",
"bankAddress": "string"
}
| Field | API to call | Description |
|---|---|---|
beneficiaryCompanyId |
companyId => /api/v1/getbanks | companyId |
beneficiaryAccountNo |
null | Account Number of beneficiary |
currencyCode |
code => /api/v1/getcurrencies | currency |
beneficiaryName |
null | Beneficiary Name |
beneficiarySortCode |
null | bank sort code |
beneficiaryBankSwiftCode |
null | bank swift code |
iban |
null | iban |
countryCode |
code => /api/v1/getcountries | country code |
intermediaryBank |
null | Intermediary bank if any |
intermediaryBankAccountNo |
null | Intermediary Bank Account No if any |
intermediaryBankSwiftCode |
null | intermediaryBankSwiftCode if Any |
bankAddress |
null | Used in foreign currency bank accounts |
Respond Payload ( 200 status Code)
{
"status": true,
"message": "Success",
"object": null
}
Endpoint:
/api/v1/InternalService/disableclientbankaccount/{accountno}/{bankaccounttransid}
Method: POST
- Disable Client Bank Account using uniqueidentifyer
Request query param {accountno}: client xfund account number generated after client is onboarded onto xfund {bankaccounttransid}: transId in => /api/v1/InternalService/getclientbankaccounts/{accountno}
Respond Payload ( 200 status Code)
{
"status": true,
"message": "Success",
"object": null
}
Endpoint:
/api/v1/InternalService/createnextofkin/{accountno}
Request query param {accountno}: client xfund account number generated after client is onboarded onto xfund
Request payload
{
"transId": 0,
"relationship": "string",
"surname": "string",
"firstname": "string",
"othernames": "string",
"titleCode": "string",
"gender": "s",
"address": "string",
"telephoneNo": "string",
"email": "string",
"state": "string",
"town": "string",
"country": "str"
}
Request Fields Further information
| Field | API to call |
|---|---|
country |
code => /api/v1/getcountries |
gender |
value => /api/v1/getgender |
titleCode |
titleCode => /api/v1/gettitles |
Endpoint:
/api/v1/InternalService/getclientbankaccounts/{accountno}
- returns client bank accounts
Request query param
{accountno}: client xfund account number generated after client is onboarded onto xfund
Endpoint:
/api/v1/InternalService/getvirtualaccounts/{accountno}
Method: GET
- returns list of client virtual accounts
Request query param
{accountno}: client xfund account number generated after client is onboarded onto xfund
Sample response payload
[
{
"virtualAccountNo": "6190052272",
"virtualAccountName": "Stephen Swash Phantom",
"virtualAccountBankName": "",
"virtualAccountCurrency": "NGN",
"portfolioId": 0,
"portfolioName": "",
"isWallet": false
}
]
Client document management
Endpoint:
/api/v1/InternalService/getclientpendingdocuments/{accountno}
Method: GET
- Get client pending documents
Request query param
{accountno}: client xfund account number generated after a client is onboarded onto xfund
Sample response payload
[
{
"document": "Account Opening Form",
"uploaded": 0,
"documentId": "85E2C5AF9E",
"clientId": 3972
},
{
"document": "Birth Cert",
"uploaded": 0,
"documentId": "11D162D32E",
"clientId": 3972
},
{
"document": "Employment Letter",
"uploaded": 0,
"documentId": "C413539CF3",
"clientId": 3972
}
]
uploaded status determines if client has uploaded specific document or not.
- when 0 => document has not been uploaded
- when 1 => document has been uploaded
Endpoint:
/api/v1/InternalService/uploadclientdocument/{accountno}
Method: POST
- Upload client document
- Maximum file size is 5mb
Request query param
{accountno}: client xfund account number generated after a client is onboarded onto xfund
Request payload
- Files: IForm File format for documents
- DocumentId: documentId in /api/v1/InternalService/getclientpendingdocuments/{accountno}
- Comment: comment
Portfolio Transaction Management
- Portfolios are exposed to the xfund client api through the xfund core system. This is configured on the Setup online portfolio page on the xfund core application.
- Once configured, the products become available on the Client API for client investment activities.
- When you call /api/v1/getclientinvestibleproducts , you get to see all products exposed to the xfund client api
Portfolios are identified with the below portfolioType integers
- Mutual Funds => 2
- Mutual Funds/Money Market funds => 3
- Fixed income and Liability => 9
- sma(separately managed accounts) => 1
API that presents all portfolioTypes is /api/v1/InternalService/getportfoliotypes
MutualFunds
Mutual funds have a portfolioType code of 2 or 3
Endpoint:
/api/v1/getclientinvestiblemutualfundproducts
Method: GET
- returns client's mutual fund investible products
- Lists all available mutual funds clients can invest into
Sample Respond Payload
[
{
"portfolioName": "RSA Fund",
"clientPortfolioCode": null,
"portfolioType": 2,
"myProduct": false,
"portfolioId": 820,
"productMandate": "Retirement Savings Account Scheme",
"portfolioTypeName": "mutualfund",
"minimumHoldingPeriod": 60,
"minimumInvestment": 0,
"minimumSubsequentInvestment": 0,
"custodianName": "iTap Custodian",
"earlyRedemptionPenaltyRate": 20,
"assetClassInfo": null,
"currency": "NGN",
"currentValue": 1944414.84,
"cost": 2294308.54,
"bidPrice": 0.86061117911538,
"offerPrice": 1.402744973031354,
"return": 5.55,
"subProducts": []
}
]
| Field | Description |
|---|---|
portfolioId |
fund unique identifier |
portfolioTypeName |
Describe the type of fund i.e mutual fund |
Subscriptions and redemptions can be processed either through a client's wallet or directly through the designated portfolio account, depending on the transaction method configured.
- Wallet-Based Transactions: For wallet-based subscriptions, the client's wallet must have sufficient funds to cover the subscription amount. Upon successful processing, the wallet is debited, and the corresponding amount is credited to the selected portfolio to complete the transaction.
- Non-Wallet-Based Transactions: For transactions that do not use the client's wallet, the client must first fund the designated portfolio collection account before proceeding with the subscription.
mutualfund subscription no wallet
Endpoint:
/api/v1/InternalService/clientmutualfundsubscriptionnowallet
Method: POST
- Mutualfund subscription
Request payload
{
"clientAccountNo": "string",
"portfolioId": 0,
"amount": 2147483647,
"uniqueTrackingReferenceNo": "string"
}
| Field | Description |
|---|---|
clientAccountNo |
client xfund account number |
portfolioId |
portfolioId => /api/v1/getclientinvestiblemutualfundproducts |
uniqueTrackingReferenceNo |
Unique tracking reference number to track duplicate entry |
amount |
amount |
Endpoint:
/api/v1/InternalService/clientmutualfundsubscriptionnowallets
Method: POST
- Handles mutual fund subscription (investment) requests submitted by clients. Captures details of new investments into a chosen portfolio with required validation rules.
Request payload
[
{
"clientAccountNo": "string",
"schemeId": 2147483647,
"amount": 2147483647,
"transDate": "2026-10-23T06:14:13.383Z",
"uniqueTrackingReferenceNo": "string"
}
]
Fields: ClientAccountNo (string, required) – Identifies the client’s account. PortfolioId (int, required) – Unique identifier of the portfolio/fund being subscribed to. Amount (decimal, required) – Amount to be invested; must be greater than zero. TransDate (DateTime, default = Today) – Transaction date. For unitized funds, this must match the processing date; for money market funds, the rule is relaxed. UniqueTrackingReferenceNo (string, required, max length 50) – A globally unique reference for tracking the subscription request.
Validation: All required fields must be provided. Amount and PortfolioId must be greater than zero. Unitized fund subscriptions will be rejected if TransDate ≠ ProcessingDate.
Usage: This DTO should be used when calling the Subscription API endpoint to initiate new investments. Ensures transactions are validated before being processed and recorded.
sample response payload { "status": true, "message": "string", "object": "string" }
mutualfund subscription from wallet
Endpoint:
/api/v1/InternalService/clientmutualfundsubscriptionfromwallet
Method: POST
- Client subscription.
- Debit wallet and credit mutualfund
- Supply the client account number and the mutualfund schemeid
request payload { "clientAccountNo": "string", "portfolioId": 0, "amount": 2147483647, "uniqueTrackingReferenceNo": "string" }
| Field | Description |
|---|---|
clientAccountNo |
client xfund account number |
portfolioId |
portfolioId => /api/v1/getclientinvestiblemutualfundproducts |
uniqueTrackingReferenceNo |
Unique tracking reference number to track duplicate entry |
amount |
amount |
review mutualfund redemption Endpoint: /api/v1/InternalService/reviewmutualfundredemption/{portfolioid}/{accountno}/{redemptionamount}
Method: GET
- Review Mutualfund redemption
Request query param
{accountno}: client xfund account number generated after a client is onboarded onto xfund
{portfolioid}: portfolioId in /api/v1/getclientinvestiblemutualfundproducts
{redemptionamount}: redemption amount
mutualfund rdemption no wallet
Endpoint:
/api/v1/InternalService/clientmutualfundredemptionnowallet
Method: POST
- Mutualfund redemption
request payload { "clientAccountNo": "string", "portfolioId": 0, "amount": 2147483647, "uniqueTrackingReferenceNo": "string" }
| Field | Description |
|---|---|
clientAccountNo |
client xfund account number |
portfolioId |
portfolioId => /api/v1/getclientinvestiblemutualfundproducts |
uniqueTrackingReferenceNo |
Unique tracking reference number to track duplicate entry |
amount |
amount |
sample response payload { "status": true, "message": "string", "object": "string" }
Endpoint: /api/v1/InternalService/clientmutualfundredemptionnowallets
Method: POST
- Handles mutual fund redemption requests submitted by clients.
- Supports both partial and full redemptions with validation rules applied.
Request payload
[
{
"clientAccountNo": "string",
"redemptionType": "s",
"schemeId": 2147483647,
"amount": 2147483647,
"transDate": "2026-10-23T06:29:04.536Z",
"uniqueTrackingReferenceNo": "string"
}
]
Fields: ClientAccountNo (string, required) – Identifies the client’s account. RedemptionType (string, required) – Specifies whether the redemption is Partial ("P") or Full ("F"). PortfolioId (int, required) – Unique identifier of the portfolio/fund being redeemed. Amount (decimal, required) – Amount to redeem; must be greater than zero. TransDate (DateTime, default = Today) – Transaction date. For unitized funds, this must match the processing date; for money market funds, the rule is relaxed. UniqueTrackingReferenceNo (string, required, max length 50) – A globally unique reference for tracking the redemption request.
Validation: All required fields must be provided. Amount and PortfolioId must be greater than zero. Unitized fund transactions will be rejected if TransDate ≠ ProcessingDate.
Usage: This DTO should be used when calling the Redemption API endpoint to initiate client redemption requests. Ensures transactions are validated before being processed.
mutualfund rdemption to wallet
Endpoint: /api/v1/InternalService/clientmutualfundredemptiontowallet
Method: POST
- Client redemption.
- Debit mutualfund and Crebit wallet
- Supply the client account number and the mutualfund schemeid
request payload
{
"clientAccountNo": "string",
"portfolioId": 0,
"amount": 2147483647,
"uniqueTrackingReferenceNo": "string"
}
| Field | Description |
|---|---|
clientAccountNo |
client xfund account number |
portfolioId |
portfolioId => /api/v1/getclientinvestiblemutualfundproducts |
uniqueTrackingReferenceNo |
Unique tracking reference number to track duplicate entry |
amount |
amount |
mutualfund portfolio dividend mandate
Endpoint:
/api/v1/InternalService/mutualfunddividendpayoutmandate
Method: POST
- Mutualfund Dividend Payout Mandate
- setup mutual fund mandate for a client portfolio
request payload { "portfolioId": 0, "accountNo": "string", "isCashPayout": true }
| Field | Description |
|---|---|
accountNo |
client xfund account number |
portfolioId |
portfolioId => /api/v1/getclientinvestiblemutualfundproducts |
isCashPayout |
mandate instruction => either true or false |
Portfolio Direct funding
Endpoint: /api/v1/InternalService/creditclientportfolio/{accountno}
Method: POST
Credit Client Portfolio
Request query param {accountno}: client xfund account number generated after a client is onboarded onto xfund
request payload
{
"amount": 1000000000000000000,
"portfolioId": 0,
"narration": "string",
"uniqueReferenceNo": "string"
}
| Field | Description |
|---|---|
amount |
amount |
portfolioId |
portfolioId => /api/v1/getclientinvestiblemutualfundproducts |
uniqueReferenceNo |
custom unique reference number |
narration |
narration |
MutualFund query APIs
Endpoint: /api/v1/InternalService/getclientmutualfundonlinebalances/{accountno}
Method: GET
- returns the client's mutualfund online balances per portfolio/product
Request query param
{accountno}: client xfund account number generated after a client is onboarded onto xfund
Endpoint: /api/v1/InternalService/getclientmutualfundonlinebalances/{portfolioid}/{accountno}
Method: GET
- returns the client's mutualfund online balances per portfolio/product
Request query param
{accountno}: client xfund account number generated after a client is onboarded onto xfund
{portfolioid}: portfolioId in /api/v1/getclientinvestiblemutualfundproducts
Endpoint:
/api/v1/InternalService/getfundlatestprice/{portfolioid}
Method: GET
- returns the mutualfund latest prices and processingdate
Request query param
{portfolioid}: portfolioId in /api/v1/getclientinvestiblemutualfundproducts
Endpoint: /api/v1/InternalService/getclientmutualfundtransactions/{portfolioid}/{accountno}/{pagenumber}/{pagesize}
Method: GET
- returns the paginated client's mutualfund transactions
Request query param
{accountno}: client xfund account number generated after a client is onboarded onto xfund
{portfolioid}: portfolioId in /api/v1/getclientinvestiblemutualfundproducts
Endpoint:
/api/v1/InternalService/getclientmutualfundtransactions/{portfolioid}/{accountno}/{historicaldays}
Method: GET
- Get N days Mutualfund Transaction History
Request query param
- {accountno}: client xfund account number generated after a client is onboarded onto xfund
- {portfolioid}: portfolioId in /api/v1/getclientinvestiblemutualfundproducts
- {historicaldays}: N number of days
Fixed income and liability
Liability products are identified with a portfolio type of 9.
Endpoint:/api/v1/getclientinvestiblefixedreturnproducts
Method: GET
- returns the client's investible fixed return products
- gets all investible liability products that clients can invest into
sample response payload
[
{
"portfolioName": "string",
"clientPortfolioCode": "string",
"portfolioType": 0,
"myProduct": true,
"portfolioId": 0,
"productMandate": "string",
"portfolioTypeName": "string",
"minimumHoldingPeriod": 0,
"minimumInvestment": 0,
"minimumSubsequentInvestment": 0,
"custodianName": "string",
"earlyRedemptionPenaltyRate": 0,
"assetClassInfo": "string",
"currency": "string",
"currentValue": 0,
"cost": 0,
"bidPrice": 0,
"offerPrice": 0,
"return": 0,
"subProducts": "string"
}
]
fixed income subscription
Endpoint:
-
/api/v1/InternalService/reviewfixedincomesubscriptionorder/{accountno}: review/preview fixed income subscription
-
/api/v1/InternalService/fixedincomesubscriptionnowallet/{accountno}
Method: POST
- Fixed Income Liability Buy Order
query param {accountno} => xfund client account number
request payload
{
"securityProductId": 0,
"portfolioId": 0,
"currency": "str",
"faceValue": 0,
"tenor": 0,
"planCode": "string",
"isStp": true
}
| Field | Description or API to call |
|---|---|
securityProductId |
securityProductId =>/api/v1/InternalService/getliabilityproducts/{portfolioid} |
portfolioId |
portfolioId => /api/v1/getclientinvestiblefixedreturnproducts |
currency |
code => /api/v1/getcurrencies |
tenor |
tenor => /api/v1/InternalService/getproducttenor/{productid} |
planCode |
custom description |
isStp |
By default straight through process is true unless when disabled or set to false |
- /api/v1/InternalService/getproducttenor/{productid} as seen in tenor => {productid} is gotten from /api/v1/InternalService/getliabilityproducts/{portfolioid}
Sample Response payload
{
"status": true,
"message": "Success",
"object": {
"direction": "BUY",
"security": "AGRIC",
"faceValue": 1000,
"settlementDate": "2026-10-22T00:00:00+01:00",
"grossInterestRate": 10.5,
"grossIncome": 8.63,
"netIncome": 7.77,
"tenor": 30,
"maturityDate": "2026-11-21T00:00:00+01:00",
"grossMaturityValue": 1008.63,
"netMaturityValue": 1007.77,
"witholdingTaxAmount": 0.86,
"preliquidationChargeRate": "0%"
}
}
Endpoint:
-
/api/v1/InternalService/reviewfixedincomeredemptionorder/{accountno}: review/preview fixed icnoem redemption
-
/api/v1/InternalService/fixedincomeredemptionnowallet/{accountno}
Method: POST
- Fixed Income Liability Sell Order
query param {accountno} => xfund client account number
request payload
{
"purchaseReferenceNo": "string",
"faceValue": 0,
"isStp": true
}
| Field | Description or API to call |
|---|---|
purchaseReferenceNo |
api/v1/InternalService/getfixedincomeproductonlinebalances/{portfolioid}/{accountno} |
isStp |
straight through process instruction. Defaults to true |
faceValue |
amount to redeem |
purchaseReferenceNo can be retrieved from either of the below apis
- /api/v1/InternalService/getfixedincomeproductbalances/{portfolioid}/{accountno} : returns the client's product balance as at the last valuation
- /api/v1/InternalService/getfixedincomeproductonlinebalances/{portfolioid}/{accountno}: returns the client's product online balance
Sample Response payload
{
"status": true,
"message": "Success",
"object": {
"faceValue": 1000,
"liquidationDate": "2026-10-22T00:00:00+01:00",
"interestRate": 10.5,
"grossIncome": 3.74,
"maturityDate": "2026-06-07T00:00:00",
"netProceeds": 1003.37,
"witholdingTaxAmount": 0.37,
"witholdingTaxRate": 10,
"preliquidationCharge": 0,
"preliquidationChargeRate": 0
}
}
Fixed income and liability query APIs
Endpoint:
/api/v1/InternalService/getliabilityproducts/{portfolioid}
Get list of liability products
Request query param
- {portfolioid}: portfolioId in /api/v1/getclientinvestiblemutualfundproducts
Endpoint:
/api/v1/InternalService/getproducttenor/{productid}
Get list of product rate and tenor for fixed income investment.
Request query param
- {productid}: productId in /api/v1/InternalService/getliabilityproducts/{portfolioid}
Endpoint:
/api/v1/InternalService/getproductrateguide/{productid}
Get product rate guide showing investment principal, rate and tenor
Request query param
- {productid}: productId in /api/v1/InternalService/getliabilityproducts/{portfolioid}
Endpoint:
/api/v1/InternalService/getfixedincomeproductbalances/{portfolioid}/{accountno}
returns the client's product balance as at the last valuation
Request query param
- {accountno}: client xfund account number generated after a client is onboarded onto xfund
- {portfolioid}: portfolioId in /api/v1/getclientinvestiblemutualfundproducts
Endpoint:
/api/v1/InternalService/getfixedincomeproductonlinebalances/{portfolioid}/{accountno}
returns the client's product online balance
Request query param
- {accountno}: client xfund account number generated after a client is onboarded onto xfund
- {portfolioid}: portfolioId in /api/v1/getclientinvestiblemutualfundproducts
Endpoint:
/api/v1/InternalService/gettransactionorderstatus/{accountno}/{orderId}
returns liability transaction status
Request query param
- {accountno}: client xfund account number generated after a client is onboarded onto xfund
- {orderId}: referenceNo in /api/v1/InternalService/getfixedincomeproductonlinebalances or /api/v1/InternalService/getfixedincomeproductbalances
Endpoint:
/api/v1/InternalService/gettotalcashinvestedinliabilityproduct/{portfolioid}/{accountno}/{startdate}/{enddate}
Get total cash invested in portfolioDto
Request query param
- {accountno}: client xfund account number generated after a client is onboarded onto xfund
- {portfolioid}: portfolioId in /api/v1/getclientinvestiblemutualfundproducts
Endpoint:
/api/v1/InternalService/gettotalcashinvestedinportfolio/{accountno}/{startdate}/{enddate}
Get total invested or withdrawn in portfolio
Request query param
- {accountno}: client xfund account number