TZS Virtual Account

This guide provides instructions for integrating static TZS Virtual Accounts via API. Merchants can create permanent virtual accounts to receive TZS payments from customers.

Endpoint: (Allows merchants to create permanent virtual accounts denominated in TZS)

{{base_url}}/profile/virtual-accounts/requests
curl --location 'https://api.fincra.com/profile/virtual-accounts/requests' \
--header 'api-key: <Your API secret key>' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \

These Virtual Accounts can receive TZS payments from customers, which are automatically reflected in the merchant’s TZS wallet.

📘

Important

  • Requests for both Individual and corporate TZS virtual accounts are issued in real time.
  • Funds received by a virtual account are settled into the merchant’s TZS wallet.

🔐 Authentication

TypeDetails
Headerapi-key
Content-Typeapplication/json
API KeysAvailable under My Acc > Acc Settings > API Keys on your dashboard

🏦 Supported Bank

Bank NameBank CodeNotes
EcobankECOCTZTZDefault issuing institution

Note: The account will automatically be issued. As additional bank options become available, the API specification will be updated.


Settlement Reference 🕒

Payment TypeCut off TimeSettlement Time
TIPSN/AInstant
TISS5pm (Subject to initiating bank)Same day
Mobile MoneyN/AInstant

Fields for Virtual Account Creation (Corporate & Individual)

To create a virtual account, you'll need to pass information such as currency, accountType, KYCInformation, etc. Please find below the request parameters for both corporate and individual accounts.

📁 Individual Virtual Account

FieldRequiredTypeDescription
currencyYesstringMust be "TZS"
accountTypeYesstringMust be "individual"
KYCInformation.firstNameYesstringCustomer’s first name
KYCInformation.lastNameYesstringCustomer’s last name
KYCInformation.emailNostringCustomer’s email
phoneNumberNostringBusiness phone in international format (e.g. +255...)
merchantReferenceNostringUnique reference on your system

📁 Corporate Virtual Account

FieldRequiredTypeDescription
currencyYesstringMust be "TZS"
accountTypeYesstringMust be "corporate"
KYCInformation.businessNameYesstringMerchant’s business name
KYCInformation.emailNostringBusiness email
phoneNumberNostringBusiness phone in international format
merchantReferenceNostringUnique reference on your system

Request a Virtual Account

Sample Request payload (Corporate)

{
  "accountType": "individual"
   "currency": "TZS",
    "KYCInformation": {
        "firstName": "Testoma",
        "lastName": "TZS"
    },
}
{
  "accountType": "individual",
   "currency": "TZS",
    "KYCInformation": {
        "firstName": "Testoma",
        "lastName": "TZS"
    },
		"merchantReference": "004546763" //Not Mandatory
}
{
    "accountType": "corporate",
    "currency": "TZS",
    "KYCInformation": { 
      "businessName": "OmaTZS"
    },
}

If successful, you will receive a JSON snippet with the details of the newly created virtual account

Sample Response

{
    "success": true,
    "message": "A TZS virtual account has been created for you", // we use this communicate info with you 
    "data": {
        "status": "approved",
        "isActive": true,
        "accountNumber": "7*******8",
        "alternateAccountNumbers": [],
        "merchantReference": "merchant-6d78fFj0djhj45678dkkjj0djd0",
        "KYCInformation": {
            "businessName": "OmaTZS"
        },
        "accountInformation": {
            "accountNumber": "0*****8***8",
            "accountName": "OmaTZS",
            "bankName": "Eco BANK"
            "bankCode": "",
            "reference": ""
        },
        "verifiedKYCData": null,
        "note": null,
        "accountOpeningFee": 0,
        "pendingAdditionalInfoCount": 0,
        "isPermanent": true,
        "expiresAt": null,
        "isCheckoutVa": false,
        "isBankTransferVa": false,
        "isSuspended": false,
        "isPoolAccount": false,
        "reason": null,
        "monthlyVolume": null,
        "entityName": null,
        "paymentFlowDescription": null,
        "attachments": [],
        "meansOfId": [],
        "bankStatement": [],
        "utilityBill": [],
        "virtualAccountType": "main",
        "riskRating": null,
        "checklist": null,
        "riskScreening": null,
        "channelKycUpdateStatus": null,
        "channelKycUpdateResponse": null,
        "metadata": null,
      "sourceOfFunds": [],
      "leaseAgreement": [],
        "beneficialOwnershipCertificate": [],
        "articleOfIncorporation": [],
        "incorporationDocuments": [],
        "_id": "6892038f********f0012f403e9",
        "business": "64fef*******3e******83",
        "currency": "TZS",
        "accountType": "corporate",
        "entityType": "main_account",
        "currencyType": "fiat",
        "createdAt": "2025-08-05T13:13:51.728Z",
        "updatedAt": "2025-08-05T13:13:51.728Z"
    }
}




Important Notes:
_id : This is the unique Identifier for the virtual account that was just created (accountId)
business : This is your business ID.

Receive and validate webhook notification

Listen for webhook events. We will send a notification to your webhook URL that indicates the status of the virtual account creation.


Sample Webhook

Account Creation

{
"event":"virtualaccount.approved",
"data":{
"id":"68a5a7345*****011dd634568",
"business":"64f**8******f3eca573e83",
"isSubAccount":false,
"currency":"TZS",
"currencyType":"fiat",
"status":"approved",
"accountType":"corporate",
"accountInformation":{
"accountNumber":"0027**1**31",
"accountName":"Testoma Account",
"bankName":"Eco BANK",
"bankCode":""
},
"accountOpeningFee":0,
"isPermanent":true,
"virtualAccountType":"additional",
"createdAt":"2025-08-20T10:48:30.566Z",
"updatedAt":"2025-08-20T10:48:30.566Z"
}

Collection Successful


{
  "event": "collection.successful",
  "data": {
    "business": "6***********3",
    "virtualAccount": "6******8*****4",
    "virtualAccountType": "main",
    "sessionId": "I34500",
    "senderAccountName": "Sender Name",
    "senderAccountNumber": "110*******63",
    "senderBankDetails": {
      "bankName": "Eco BANK",
      "bankCode": null,
      "swiftCode": null,
      "bic": null
    },
    "sourceCurrency": "TZS",
    "destinationCurrency": "TZS",
    "sourceAmount": 3000,
    "destinationAmount": 3000,
    "description": "Hello World",
    "amountReceived": 2982,
    "fee": 18,
    "customerName": "Customer Name",
    "settlementDestination": "wallet",
    "status": "successful",
    "initiatedAt": "2025-07-02T21:56:02.945Z",
    "createdAt": "2025-07-02T21:56:02.999Z",
    "updatedAt": "2025-07-02T21:56:02.999Z",
    "reference": "48173-2ff9-4ref-85b4-2e5ed4429e3",
    "merchantReference": "2456552"
  }
}

Validate Webhooks

📂 Retrieving the details of a virtual bank account

GET

{{base_url}}/profile/virtual-accounts/<virtual_account_id>

Returns details of a single virtual account.


📃 Retrieve All Virtual Accounts

GET

{{base_url}}/profile/virtual-accounts/?currency=TZS

Returns all TZS virtual accounts you’ve created.


💳 Fund Your Virtual Account

Refer to: Funding a Virtual Account →