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

# Multi-Provider Requests

> Provision a virtual account on both Paga and PalmPay in one call

`POST /v1/virtual-accounts`

Pass a `banks` array instead of a single `provider` string to request accounts on multiple networks at once. Each provider is attempted independently — if one fails (e.g. PalmPay rejects a duplicate identity document), the other's account is still returned rather than the whole call failing.

<ParamField body="customer_name" type="string" required>
  Full name of the customer
</ParamField>

<ParamField body="customer_phone" type="string">
  Required if `paga` is one of the requested providers
</ParamField>

<ParamField body="customer_email" type="string">
  Required if `paga` is one of the requested providers
</ParamField>

<ParamField body="banks" type="array" required>
  Array of provider names to request, e.g. `["paga", "palmpay"]`
</ParamField>

```bash theme={null}
curl -X POST "https://api.payracle.com/api/v1/virtual-accounts" \
  -H "Authorization: Bearer sk_live_YOUR_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "customer_name": "Jane Doe",
    "customer_phone": "+2348012345678",
    "customer_email": "jane@example.com",
    "banks": ["paga", "palmpay"]
  }'
```

```json Response — all succeeded theme={null}
{
  "message": "Virtual accounts created successfully.",
  "customer_name": "Jane Doe",
  "accounts": [
    { "account_number": "0354650915", "account_name": "Jane Doe", "bank_name": "Paga", "bank_code": null },
    { "account_number": "6610371184", "account_name": "Jane Doe", "bank_name": "PalmPay", "bank_code": null }
  ],
  "errors": []
}
```

```json Response — partial failure theme={null}
{
  "message": "Virtual accounts created successfully. (palmpay failed — see errors.)",
  "customer_name": "Jane Doe",
  "accounts": [
    { "account_number": "0354650915", "account_name": "Jane Doe", "bank_name": "Paga", "bank_code": null }
  ],
  "errors": [
    { "provider": "palmpay", "message": "license number duplicate" }
  ]
}
```

<Warning>
  A `422` is only returned if **every** requested provider failed. A partial success still returns `201` — always check the `errors` array, don't assume success just because the HTTP status is 2xx.
</Warning>
