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

# Quickstart

> From invitation email to your first authenticated API request in under 10 minutes.

This guide walks you through the full onboarding flow — setting up your portal account, configuring your company, and making your first API call.

<Steps>
  <Step title="Accept the invitation">
    CryptoMate sends an invitation email to the admin address registered during onboarding. Open it and click **Set your password** to activate your account.

    After setting a password you'll land on the [CryptoMate Portal](https://portal.cryptomate.me) dashboard, where both environments are accessible:

    * **Sandbox** — isolated playground with no real-world blockchain impact. Use it for development and testing.
    * **Production** — live environment where transactions settle on-chain.

    <Tip>
      If the email doesn't arrive within a few minutes, check your spam folder. The sender is `noreply@cryptomate.me`.
    </Tip>
  </Step>

  <Step title="Navigate to Settings">
    In the left sidebar, click **Settings**. This is your control panel for the entire company account. From here you can manage:

    * **Company** — legal name, tax ID, and compliance information
    * **Users** — team members and their access roles
    * **Products** — contracted products and usage limits
    * **Webhooks** — endpoint URL for platform event notifications
    * **API Keys** — keys used by your backend to authenticate API requests
  </Step>

  <Step title="Load your company information">
    Open **Settings → Company** and fill in your organization's details:

    * Legal name and trading name
    * Country of incorporation
    * Tax ID / registration number
    * Any compliance documents requested during onboarding

    Save the form once complete.

    <Warning>
      Some fields are locked after initial submission and require a support request to update. Double-check legal name and tax ID before saving.
    </Warning>
  </Step>

  <Step title="Create your team users">
    Open **Settings → Users** and click **Invite user**. Enter the team member's email address and assign a role:

    | Role          | Access                                                                  |
    | ------------- | ----------------------------------------------------------------------- |
    | **Admin**     | Full access — can manage users, settings, and all products              |
    | **Operator**  | Can operate products but cannot change company settings or manage users |
    | **Read-only** | View access only — suitable for finance or compliance reviewers         |

    Each invitee receives their own email to set a password. Repeat for every person who needs portal access.

    <Tip>
      Follow the principle of least privilege. Only assign **Admin** to the people who genuinely need to manage account settings.
    </Tip>
  </Step>

  <Step title="Review your contracted products">
    Open **Settings → Products** to see the products your company has contracted with CryptoMate, along with their current usage versus contracted limits.

    | Product               | What it enables                                                      |
    | --------------------- | -------------------------------------------------------------------- |
    | **Treasury**          | Move digital assets across blockchains from company-owned wallets    |
    | **Active Management** | Manage per-client virtual wallets with a holding wallet architecture |
    | **Cards**             | Issue Visa virtual cards backed by stablecoin collateral             |

    This gives you a clear picture of what's available before you start building. For a deeper explanation of each product, see the [Products](/products/treasury) section.
  </Step>

  <Step title="Configure your webhook URL">
    Open **Settings → Webhooks** and enter the HTTPS URL of the endpoint your backend exposes to receive events.

    CryptoMate delivers real-time notifications to this URL for every significant platform action — deposits, card authorizations, withdrawals, client status changes, and more.

    <Tip>
      During development, use a tool like [ngrok](https://ngrok.com) or a staging server to expose a local endpoint. Switch to your production URL before going live.
    </Tip>

    <Warning>
      The URL must be publicly reachable over HTTPS and respond with an HTTP `2xx` status code within 30 seconds. Failed deliveries are retried with exponential backoff.
    </Warning>

    For the full event catalog and payload format, see [Webhooks](/integration/webhooks).
  </Step>

  <Step title="Generate an API key">
    Open **Settings → API Keys** and create a new key. When creating it you can:

    * Scope its **permissions** to only the products and actions your integration needs
    * Restrict it to a list of **allowed IPs** (recommended for backend services)

    Copy the key immediately and store it in a secure location — an environment variable or secret manager. You won't be able to see it again.

    <Warning>
      Never commit API keys to source control or embed them in client-side code.
    </Warning>

    For a deeper dive into key management and permissions, see [API Keys & Access Security](/authentication).
  </Step>

  <Step title="Make your first request">
    Include your API key in the `x-api-key` header of every request. A good smoke test is listing the supported blockchains — it requires no product-specific permissions.

    <CodeGroup>
      ```bash cURL theme={null}
      curl https://api.cryptomate.me/v1/blockchains \
        -H "x-api-key: $CRYPTOMATE_API_KEY"
      ```

      ```javascript Node.js theme={null}
      const res = await fetch("https://api.cryptomate.me/v1/blockchains", {
        headers: {
          "x-api-key": process.env.CRYPTOMATE_API_KEY,
        },
      });

      const blockchains = await res.json();
      console.log(blockchains);
      ```

      ```python Python theme={null}
      import os
      import requests

      res = requests.get(
          "https://api.cryptomate.me/v1/blockchains",
          headers={"x-api-key": os.environ["CRYPTOMATE_API_KEY"]},
      )

      print(res.json())
      ```
    </CodeGroup>

    A successful response returns a `2xx` status code and a JSON body. If something goes wrong, inspect the `code` and `message` fields and note the `X-Trace-Id` header — see [Errors](/integration/errors).
  </Step>
</Steps>

## Pick a product and go deep

<Columns cols={3}>
  <Card title="Treasury" icon="vault" href="/products/treasury">
    Manage digital assets across multiple blockchains.
  </Card>

  <Card title="Active Management" icon="wallet" href="/products/virtual-wallets">
    Centralize client deposits with a holding wallet architecture.
  </Card>

  <Card title="Cards" icon="credit-card" href="/products/cards">
    Issue Visa cards backed by stablecoin collateral.
  </Card>
</Columns>

<Card title="API Reference" icon="terminal" href="/api-reference/introduction" horizontal>
  Browse every endpoint with request and response examples.
</Card>
