---
title: "Create an account"
description: "Create a new internal account for a customer."
protocol: rest
method: POST
endpoint: "/v1/accounts"
baseUrl: "https://api.gravv.xyz"
group: "Accounts"
auth:
  label: "Api-Key"
  name: "Api-Key"
  in: header
---

# Create an account

<Endpoint method="POST" path="/v1/accounts" />

Create a new internal account for a customer.

For sandbox and testing integrations, we recommend using `polygon` as the `blockchain_network`.

## Headers

<ParamField name="Idempotency-Key" header="Idempotency-Key" type="string" required>
  Required for POST requests. Reuse the key only when retrying the same operation with an identical payload.
</ParamField>

## Request Body

<ParamField name="currency" body="currency" type="string" required>
  Currency code for the account

  Possible values: `USD`, `EUR`, `MXN`, `NGN`
</ParamField>

<ParamField name="type" body="type" type="string" required>
  Type of account

  Possible values: `regular`, `savings`
</ParamField>

<ParamField name="label" body="label" type="string" required>
  Label for the account
</ParamField>

<ParamField name="customer_id" body="customer_id" type="string" required>
  ID of the customer who owns this account
</ParamField>

<ParamField name="blockchain_network" body="blockchain_network" type="string" required>
  Blockchain network for the account

  Possible values: `polygon`, `stellar`, `ethereum`, `solana`, `avalanche`
</ParamField>

<ParamField name="wallet_address" body="wallet_address" type="string">
  Blockchain wallet address to associate with the account.
</ParamField>

### Request Examples

<RequestExample>

```json title="RegularAccount"
{
  "currency": "USD",
  "type": "regular",
  "label": "ops",
  "customer_id": "550e8400-e29b-41d4-a716-446655440178",
  "blockchain_network": "polygon"
}
```

```json title="RegularAccountWithWallet"
{
  "currency": "USD",
  "type": "regular",
  "label": "ops",
  "customer_id": "550e8400-e29b-41d4-a716-446655440178",
  "blockchain_network": "polygon",
  "wallet_address": "0x25a4c9853e761753ae18d6871731e305b8b0b2a4"
}
```

</RequestExample>

## Responses

| Status | Description |
| --- | --- |
| `200` | Account created |
| `400` | Request failed. All gateway errors are returned as HTTP 400 with this envelope. |

### 200 response

<ResponseField name="data" type="object" required>

  <Expandable title="properties">
    <ResponseField name="id" type="string">
    </ResponseField>

    <ResponseField name="label" type="string">
    </ResponseField>

    <ResponseField name="date_created" type="string">
    </ResponseField>

    <ResponseField name="wallet_address" type="string">
    </ResponseField>

    <ResponseField name="blockchain_network" type="string">
    </ResponseField>

    <ResponseField name="type" type="string">
      Account kind.
    </ResponseField>

    <ResponseField name="customer_id" type="string">
    </ResponseField>

    <ResponseField name="capabilities" type="string[]">
    </ResponseField>

    <ResponseField name="currency" type="string">
    </ResponseField>

    <ResponseField name="virtual_account_id" type="string">
    </ResponseField>

    <ResponseField name="tenant_name" type="string">
    </ResponseField>

    <ResponseField name="tenant_id" type="string">
    </ResponseField>

    <ResponseField name="tier" type="string">
    </ResponseField>

    <ResponseField name="status" type="string">

      Possible values: `active`, `frozen`, `deleted`, `pending`
    </ResponseField>

    <ResponseField name="category" type="string">
    </ResponseField>

    <ResponseField name="balance" type="string">
    </ResponseField>

    <ResponseField name="is_tokenized" type="boolean">
    </ResponseField>

    <ResponseField name="inflow_behavior" type="string">
    </ResponseField>

    <ResponseField name="virtual_account_bank_name" type="string">
    </ResponseField>

    <ResponseField name="virtual_account_bank_address" type="string">
    </ResponseField>

    <ResponseField name="virtual_account_bank_beneficiary_address" type="string">
    </ResponseField>

    <ResponseField name="virtual_account_bank_beneficiary_name" type="string">
    </ResponseField>

    <ResponseField name="virtual_account_bank_account_number" type="string">
    </ResponseField>

    <ResponseField name="virtual_account_bank_routing_number" type="string">
    </ResponseField>

    <ResponseField name="assets" type="object[]">

      <Expandable title="properties">
        <ResponseField name="balance" type="string">
        </ResponseField>

        <ResponseField name="decimals" type="integer">
        </ResponseField>

        <ResponseField name="symbol" type="string">
        </ResponseField>

      </Expandable>
    </ResponseField>

    <ResponseField name="metadata" type="object">
    </ResponseField>

  </Expandable>
</ResponseField>

<ResponseField name="error" type="null" required>
</ResponseField>

### 400 response

<ResponseField name="data" type="null" required>
</ResponseField>

<ResponseField name="error" type="string" required>
  Human-readable error message.
</ResponseField>

## Authorization

- **ApiKeyAuth**
