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

# Company sign-up

> Register your company in the Kravata Stack test environment, configure it yourself and get your API credentials without waiting for a manual review.

In the **test environment** you can set up your company yourself, in three steps:

1. **Sign up**: confirm your email and complete the registration form.
2. **Configure your environment**: once your company is approved, choose your trading pairs, custody network, widget modules and security options.
3. **Get your credentials**: after your first configuration, generate your API credentials and get your `x-integration-register` value.

<Info>
  Self-service sign-up is available in **test** only. In **production**, Kravata registers and configures your company during the onboarding and compliance review. Contact your Kravata point of contact.
</Info>

## 1. Sign up

<Steps>
  <Step title="Request your sign-up link">
    Open the sign-up page, enter your company email and complete the reCAPTCHA:

    `https://test-api-kore.kravata.co/api/v1/client/signup/request`

    Kravata sends a **single-use link** to that address. The link expires in **30 minutes**, and you can request up to 3 links per hour for the same email.
  </Step>

  <Step title="Complete the registration form">
    Open the link from your email and fill in:

    | Section | Fields |
    | - | - |
    | Company | Person type (legal or natural), identification type, identification number, verification digit (NIT only), legal name, trade name (optional), phone. |
    | Main contact | First and last names. |
    | Access | Username and password. |

    Your account is created with the email the link was sent to, so you don't enter it again. **Keep your username and password**: you use them to configure your environment.
  </Step>

  <Step title="Wait for approval">
    In test, your company is approved automatically and Kravata creates your environment, which usually takes a few minutes. When it is ready, you receive the email **"Your Kravata account was approved: configure your environment"**.
  </Step>
</Steps>

### Form rules

| Field | Rule |
| - | - |
| Identification type | `NIT`, foreign NIT, citizenship ID (`CC`), foreign ID, or passport. |
| Identification number | 3 to 30 letters or digits. Dots, spaces and hyphens are removed. |
| Verification digit | One digit. Only for NIT. |
| Phone | 7 to 15 digits, with an optional leading `+`. |
| Username | 3 to 30 characters: lowercase letters, digits or hyphens, starting with a letter. It identifies your company in Kravata and **cannot be changed**. Some names are reserved. |
| Password | 12 to 128 characters, with uppercase letters, lowercase letters and digits. |

### What to expect

* **The request page always shows the same message**, whether or not the email can be used. If the email already belongs to a Kravata account, you receive an email saying so, with a link to request your credentials instead of a sign-up link.
* **Opening the link does not use it up.** The link is used only when you submit the form, so email security scanners can't invalidate it.
* **If the form is rejected, you can fix it and submit again with the same link** until it expires. This happens, for example, when the username is taken or a field is invalid.

## 2. Configure your environment

Open the link from the approval email, or go directly to:

`https://test-api-kore.kravata.co/api/v1/client/setup`

Log in with the **username and password** you chose at sign-up and complete the reCAPTCHA. Your session lasts **60 minutes**; after that, log in again.

| Section | What you choose |
| - | - |
| Pairs | The trading pairs you will operate (`COP → USDC`, `COP → USDT`, `COP → COPM`, `COP → USD` and, in test, `COP → TESTCOMP`) and which one is the **default**. The default pair must be one of the selected pairs. |
| Custody | The **custody network** where Kravata creates your main wallet: Polygon, Avalanche, Base or Ethereum (custody with Circle), or Stellar (custody with BitGo). Also, whether each user's wallet is created automatically when their KYC is approved, and whether blockchain features are enabled (external wallets, transaction hashes and addresses). |
| Widget modules | Balance, Top-up, Withdrawals, Help and Earn, plus the home page (Balance or Top-up) and whether the side menu is visible. |
| Security | Whether deposits and withdrawals require an OTP, whether withdrawals and account creation require a PIN, and how the OTP is delivered: by Kravata (SMS and WhatsApp to the user's phone, or email if the user has no phone) or to your company's webhook. |
| Products that require Kravata | Earn, USD account, BitGo Go Network and Bre-B keys per user. Kravata reviews these requests and enables them for you. |

Click **Save configuration**. Kravata then:

* Activates your pairs and sets the default one.
* Creates your **main wallet** on the custody network. This can take up to a minute.
* Enables the widget modules and security options.
* Copies the default terms and conditions and generates your order prefixes.
* Creates your **user registration integration** and shows its id, the `x-integration-register` value.

The page shows the `x-integration-register` value and your main wallet address.

### Rules

* Enable at least **Balance** or **Top-up**. **Earn** requires Balance, and choosing the Earn module also sends the Earn request to Kravata.
* **The custody network can't be changed once your main wallet exists.** Your users can still operate on several networks; the custody network is only where your wallets are held.
* **You can come back and change the rest at any time**: pairs, default pair, modules and security. Save again to apply the changes.
* If a step fails (for example, creating the main wallet), the rest of the configuration is still saved and the page tells you which step failed. Save again: steps that already succeeded are not repeated.

## 3. Get your credentials

When your configuration is saved **completely for the first time** (no failed steps), you receive a second email with a single-use link to generate your `apiKey` and `secretKey`. The credentials page also shows your `x-integration-register` value. See [Get your credentials](/stack/authentication#get-your-credentials).

Saving the configuration again later does not send a new credentials email. If you need new credentials, request them from the [credentials page](/stack/authentication#get-your-credentials).

With your credentials and the `x-integration-register` value you can [register your users](/stack/users).

## 4. Test your integration

Test environments created with self-service sign-up are ready to test end to end without real payments or real identity documents.

### Users

[Register your users](/stack/users) with your `x-integration-register` value. In a sandbox environment their KYC is **approved automatically**, so you can use test data. If you enabled automatic wallets, each user gets a custody wallet on your custody network a few seconds after approval: list it with **GET /api/v1/admin/wallets/\{user\_id}**.

### Sandbox deposits

Use the payment method `SANDBOX` to simulate a paid deposit. It exists only in the test environment.

1. Quote it with **POST /api/v1/admin/operations/custodian-quote** and `"paymentMethod": "SANDBOX"`. It is priced like a PSE deposit.
2. Create it with **POST /api/v1/admin/operation/\{user\_id}/deposit**, `"paymentMethod": "SANDBOX"`, and `accountId` set to the **`walletId`** field of the user's wallet (not its `id`).
3. The deposit is created as already paid (`CASHINSUCCESSFUL`). In about a minute Kravata sends the tokens from your main wallet to the user's wallet, and the operation ends as `COMPLETED`. You can see the transfer on the public testnet explorer of your custody network.

<Warning>
  A sandbox deposit can deliver at most **5 USDC**: larger amounts are rejected. The tokens really move on the testnet, from your main wallet, so keep each test small; if your main wallet runs out of testnet USDC, contact your Kravata point of contact.
</Warning>

## Errors

### Sign-up

| Status | Message | What to do |
| - | - | - |
| 400 | reCAPTCHA verification failed | Complete the reCAPTCHA again. |
| 410 | The link is invalid, expired or already used | Request a new link. |
| 409 | Username not available, email already registered, or the company could not be registered with that identification | Choose another username, or, if your company already has an account, request your credentials. |
| 422 | Validation error | Check the field shown in the message. |

### Configuration

| Status | Message | What to do |
| - | - | - |
| 400 | reCAPTCHA verification failed | Complete the reCAPTCHA again. |
| 401 | Invalid username or password / Your session expired | Check your sign-up username and password, or log in again. |
| 403, 409 | Your company is not approved yet | Wait for the approval email. |
| 422 | The configuration is not valid | Fix what the message says, for example a default pair that isn't selected, a network that isn't available, or a module that needs another one. |
| 502 | The configuration could not be applied | Save again. Steps that already succeeded are not repeated. |

### Sandbox deposits

| Status | Message | What to do |
| - | - | - |
| 422 | SANDBOX deposits are limited to 5 USDC | Lower the amount. |
| 422 | The SANDBOX payment method is only available in the test environment | Use `SANDBOX` only against the test environment. |
| 404 | AccountWallet ... not found | Send the wallet's `walletId` as `accountId`. |


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