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

# Business registration

# Business Registration

## Register Business

`POST /business/register`

Creates a merchant, VFD account, and environment-specific API keys.
The response also includes the merchant webhook secret once at creation time, so store it securely.

### Request Body

```json theme={null}
{
  "businessName": "Nexa Stores",
  "businessEmail": "merchant@nexa.ng",
  "businessPhone": "08012345678",
  "businessType": "MERCHANT",
  "businessCategory": "FREELANCER",
  "password": "SecurePass#1",
  "ownerLegalName": "John Doe",
  "ownerBvn": "22222222222",
  "ownerDob": "1990-01-01",
  "ownerNin": "12345678901",
  "rcNumber": "1234567",
  "incorporationDate": "05 January 2021"
}
```

Notes:

* `rcNumber` and `incorporationDate` are required **only** if `businessCategory = CORPORATE`.
* `incorporationDate` must be formatted as `05 January 2021`.

### Response

```json theme={null}
{
  "success": true,
  "msg": "Business registered successfully",
  "business": {
    "id": "664b...",
    "name": "Nexa Stores",
    "email": "merchant@nexa.ng",
    "type": "MERCHANT",
    "kycStatus": "VERIFIED",
    "apiKeyProd": "nexa-prod-...",
    "apiKeyTest": "nexa-test-...",
    "webhookSecret": "..."
  }
}
```

### Environment Notes

* `apiKeyProd` is used for live transactions.
* `apiKeyTest` is used for sandbox transactions.
* `webhookSecret` is used to sign outbound NexaPay webhooks and should be stored securely.
* Test-mode transactions do not affect the live merchant wallet.
* If you miss the secret during onboarding, you can reveal or regenerate it from the merchant dashboard.

### Error Response

```json theme={null}
{
  "success": false,
  "msg": "Business already registered"
}
```

### Invalid Example (Missing Fields)

```json theme={null}
{
  "success": false,
  "msg": "Missing required fields"
}
```

### Curl Example

```bash theme={null}
curl -X POST "https://api.nexapay.ng/api/v1/business/register" \
  -H "Content-Type: application/json" \
  -d '{
    "businessName":"Nexa Stores",
    "businessEmail":"merchant@nexa.ng",
    "businessPhone":"08012345678",
    "businessType":"MERCHANT",
    "businessCategory":"FREELANCER",
    "password":"SecurePass#1",
    "ownerLegalName":"John Doe",
    "ownerBvn":"22222222222",
    "ownerDob":"1990-01-01",
    "ownerNin":"12345678901"
  }'
```
