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

# Update Virtual Account

> Upgrade a 9PSB static virtual account by providing BVN and NIN to remove the 30k daily limit.

Upgrade a 9PSB static virtual account by providing the customer's BVN and NIN. This removes the 30,000 NGN daily receive limit.

**When to use this endpoint:**
When a customer's 9PSB static account (created without initial KYC) is about to or has exceeded the 30k daily receive limit, they must upgrade by providing their BVN and NIN. You can implement this upgrade flow on your platform using this endpoint, or merchants can upgrade directly on the PayVessel dashboard.

**Request body:**

Submit the customer's BVN (Bank Verification Number) and NIN (National Identification Number) as strings.

**Example request body:**

```json theme={null}
{
  "bvn": "22345678901",
  "nin": "12345678901"
}
```

| Field | Type   | Description                                        |
| ----- | ------ | -------------------------------------------------- |
| `bvn` | string | Customer's 11-digit Bank Verification Number       |
| `nin` | string | Customer's 11-digit National Identification Number |

**Example response:**

```json theme={null}
{
  "status": true,
  "service": "string",
  "bvn": "string",
  "business": "string",
  "errors": []
}
```

**cURL:**

```bash theme={null}
curl -X PUT "https://api.payvessel.com/pms/api/external/request/customerReservedAccount/{account_number}/" \
  -H "api-key: YOUR_API_KEY" \
  -H "api-secret: YOUR_SECRET" \
  -H "Content-Type: application/json" \
  -d '{"bvn":"22345678901","nin":"12345678901"}'
```

**Parameters:**

* **account\_number** (path, required): The virtual account number to upgrade
* **api-key** (header, required): Your API key
* **api-secret** (header, required): Your business API secret

For concepts on static vs dynamic accounts, see the [Customer Reserved Account](/accept-payment/customer-reserved-account) guide.


## OpenAPI

````yaml api-reference/openapi.json PUT /pms/api/external/request/customerReservedAccount/{account_number}/
openapi: 3.1.0
info:
  title: PayVessel API
  description: >-
    PayVessel API for accepting payments, sending money, verifying identities,
    and managing wallets
  version: 1.0.0
servers:
  - url: https://api.payvessel.com
  - url: https://sandbox.payvessel.com
security:
  - {}
paths:
  /pms/api/external/request/customerReservedAccount/{account_number}/:
    put:
      tags:
        - Virtual Accounts
      summary: Update Virtual Account
      description: >-
        Upgrade a 9PSB static virtual account by providing BVN and NIN to remove
        the 30k daily receive limit.
      parameters:
        - name: account_number
          in: path
          description: The virtual account number to upgrade
          required: true
          schema:
            type: string
        - name: api-key
          in: header
          description: Your Payvessel public API key
          required: true
          schema:
            type: string
        - name: api-secret
          in: header
          description: Your Payvessel secret
          required: true
          schema:
            type: string
        - name: Content-Type
          in: header
          description: Request content type
          required: true
          schema:
            type: string
            enum:
              - application/json
          example: application/json
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - bvn
                - nin
              properties:
                bvn:
                  type: string
                  description: Customer's 11-digit Bank Verification Number
                  example: '22345678901'
                nin:
                  type: string
                  description: Customer's 11-digit National Identification Number
                  example: '12345678901'
            examples:
              upgrade:
                summary: Upgrade 9PSB static account
                value:
                  bvn: '22345678901'
                  nin: '12345678901'
      responses:
        '200':
          description: Virtual account upgraded successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: boolean
                    description: Success status
                  service:
                    type: string
                    description: Service type
                  bvn:
                    type: string
                    description: Customer's BVN
                  business:
                    type: string
                    description: Business ID
                  errors:
                    type: array
                    description: Any errors encountered
              examples:
                success:
                  summary: Account upgraded successfully
                  value:
                    status: true
                    service: UPDATE_VIRTUAL_ACCOUNT
                    bvn: '22345678901'
                    business: 061C074E2F91F944B93993B4
                    errors: []
        '400':
          description: Invalid request payload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Virtual account not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    Error:
      required:
        - error
        - message
      type: object
      properties:
        error:
          type: integer
          format: int32
        message:
          type: string

````