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

# Create a customer and account

> Create an individual customer, then open an NGN wallet account for that customer.

This tutorial creates two resources. Persist each returned ID; resource IDs are opaque and should not be reconstructed.

## Create the customer

```bash theme={null}
CUSTOMER_RESPONSE=$(curl --silent --show-error --fail-with-body \
  --request POST \
  --url "$SAKAWAVE_BASE_URL/v1/customers" \
  --header "Authorization: Bearer $SAKAWAVE_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "type": "individual",
    "jurisdiction": "NG",
    "externalReference": "customer_tutorial_001",
    "email": "ada@example.com",
    "phoneNumber": "+2348012345678",
    "address": {
      "line1": "14 Marina Road",
      "city": "Lagos",
      "state": "Lagos",
      "country": "NG"
    },
    "firstName": "Ada",
    "lastName": "Okafor"
  }')

CUSTOMER_ID=$(printf '%s' "$CUSTOMER_RESPONSE" | jq --raw-output '.id')
```

The response does not echo identity numbers. It exposes fields such as `hasBvn` and `hasNin` instead.

## Open the wallet account

```bash theme={null}
curl --request POST \
  --url "$SAKAWAVE_BASE_URL/v1/accounts" \
  --header "Authorization: Bearer $SAKAWAVE_API_KEY" \
  --header "Content-Type: application/json" \
  --data "{
    \"name\": \"Ada NGN wallet\",
    \"type\": \"operational\",
    \"currency\": \"NGN\",
    \"customerId\": \"$CUSTOMER_ID\",
    \"metadata\": { \"origin\": \"sandbox-tutorial\" }
  }"
```

Supplying `customerId` makes the account a customer wallet. Omitting it opens an account owned directly by your business. Only two types are client-selectable — `operational` and `savings` — and they behave identically. A customer wallet can only be NGN; see [currencies and funding rails](/services/accounts/currencies-and-funding-rails).

<Note>
  Store the returned account `id` for transfers. Use `balance`, the minor-unit string, for arithmetic—not `balanceFormatted`.
</Note>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.