> ## Documentation Index
> Fetch the complete documentation index at: https://docs.interstellas.stellas.africa/llms.txt
> Use this file to discover all available pages before exploring further.

# Create permanent virtual account

> Generate a multi-use virtual account for collecting payments.

Multi-use virtual accounts can accept multiple incoming payments. Use them when you need a persistent collection account for a customer or use case.

## Endpoint

```
POST /clients/business/virtual-accounts
```

## Headers

<ParamField header="Authorization" type="string" required>
  `Bearer YOUR_ACCESS_TOKEN`
</ParamField>

<ParamField header="SECRET_KEY" type="string" required>
  Your API secret key.
</ParamField>

<ParamField header="businessId" type="string" required>
  Your business ID.
</ParamField>

## Request body

<ParamField body="firstName" type="string" required>
  First name to assign to the virtual account holder.
</ParamField>

<ParamField body="lastName" type="string" required>
  Last name to assign to the virtual account holder.
</ParamField>

<ParamField body="type" type="string" required>
  Account duration type. Accepted values: `"temporal"` or `"permanent"`.
</ParamField>

<ParamField body="reference" type="string" required>
  A unique reference string you generate to identify this account in your system. Must be unique per account.
</ParamField>

## Response

Returns `201 Created` on success.

<ResponseField name="status" type="boolean">
  `true` on success.
</ResponseField>

<ResponseField name="message" type="string">
  Confirmation message, e.g. `"Account generated successfully"`.
</ResponseField>

<ResponseField name="data.accountNumber" type="string">
  The NUBAN account number generated for this virtual account.
</ResponseField>

<ResponseField name="data.accountName" type="string">
  The name on the account, derived from the `firstName` and `lastName` provided.
</ResponseField>

<ResponseField name="data.clientRef" type="string">
  The `reference` you supplied, echoed back for confirmation.
</ResponseField>

<ResponseField name="data.systemRef" type="string">
  A unique reference generated by Interstellas for this account.
</ResponseField>

## Example response

```json theme={null}
{
  "status": true,
  "message": "Account generated successfully",
  "data": {
    "accountNumber": "9000081483",
    "accountName": "Tola Wuyi",
    "clientRef": "Bu90037366fcMn",
    "systemRef": "STL|jYcphJZcT73yjv"
  }
}
```

## Code examples

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://sandbox.stellasbank.com/api/v1/clients/business/virtual-accounts \
    -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
    -H "SECRET_KEY: YOUR_SECRET_KEY" \
    -H "businessId: YOUR_BUSINESS_ID" \
    -H "Content-Type: application/json" \
    -d '{
      "firstName": "Ada",
      "lastName": "Lovelace",
      "type": "permanent",
      "reference": "ref_unique_001"
    }'
  ```

  ```js Node.js theme={null}
  const res = await fetch(
    "https://sandbox.stellasbank.com/api/v1/clients/business/virtual-accounts",
    {
      method: "POST",
      headers: {
        Authorization: "Bearer YOUR_ACCESS_TOKEN",
        SECRET_KEY: "YOUR_SECRET_KEY",
        businessId: "YOUR_BUSINESS_ID",
        "Content-Type": "application/json",
      },
      body: JSON.stringify({
        firstName: "Ada",
        lastName: "Lovelace",
        type: "permanent",
        reference: "ref_unique_001",
      }),
    }
  );
  const { data } = await res.json();
  ```

  ```python Python theme={null}
  import requests

  res = requests.post(
      "https://sandbox.stellasbank.com/api/v1/clients/business/virtual-accounts",
      headers={
          "Authorization": "Bearer YOUR_ACCESS_TOKEN",
          "SECRET_KEY": "YOUR_SECRET_KEY",
          "businessId": "YOUR_BUSINESS_ID",
      },
      json={
          "firstName": "Ada",
          "lastName": "Lovelace",
          "type": "permanent",
          "reference": "ref_unique_001",
      },
  )
  print(res.json())
  ```
</CodeGroup>
