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

# Quickstart

> Start issuing virtual cards and processing payments with LaikiPay in under 5 minutes

Follow this 3-step guide to authenticate, query configuration, and issue your first programmable virtual card.

***

### Step 1: Get Your API Keys

1. Sign in to the [Merchant Dashboard](https://merchant.laikipay.com).
2. Navigate to **Developers → API Keys**.
3. Copy your **Merchant ID** (`mid_lk_...`) and **Sandbox Secret Key** (`sk_test_...`).

***

### Step 2: Generate an Access Token

Exchange your credentials for a 15-minute Bearer access token:

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://api.laikipay.com/v1/merchant/auth/token" \
    -H "Content-Type: application/json" \
    -d '{
      "merchantId": "YOUR_MERCHANT_ID",
      "secretKey": "YOUR_SECRET_KEY"
    }'
  ```

  ```javascript Node.js theme={null}
  const res = await fetch('https://api.laikipay.com/v1/merchant/auth/token', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      merchantId: 'YOUR_MERCHANT_ID',
      secretKey: 'YOUR_SECRET_KEY',
    }),
  });
  const { data } = await res.json();
  const accessToken = data.accessToken;
  ```
</CodeGroup>

***

### Step 3: Issue Your First Virtual Card

Use the returned `accessToken` in the `Authorization` header to provision a virtual USD VISA card:

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://api.laikipay.com/v1/merchant/cards" \
    -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{
      "nameOnCard": "Alex Morgan",
      "amount": 10.00,
      "cardBrand": "VISA",
      "currency": "USD",
      "colorTheme": "Midnight Black",
      "customer": {
        "firstName": "Alex",
        "lastName": "Morgan",
        "email": "alex.morgan@example.com",
        "phoneNumber": "08012345678",
        "dialCode": "+234"
      }
    }'
  ```

  ```javascript Node.js theme={null}
  const cardRes = await fetch('https://api.laikipay.com/v1/merchant/cards', {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${accessToken}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      nameOnCard: 'Alex Morgan',
      amount: 10.00,
      cardBrand: 'VISA',
      currency: 'USD',
      customer: {
        firstName: 'Alex',
        lastName: 'Morgan',
        email: 'alex.morgan@example.com',
        phoneNumber: '08012345678',
        dialCode: '+234',
      },
    }),
  });
  const card = await cardRes.json();
  console.log(card);
  ```
</CodeGroup>

***

### Next Steps

<CardGroup cols={2}>
  <Card title="Interactive API Reference" icon="bolt" href="/api-reference/cards/create">
    Explore and test all virtual card endpoints in the API playground.
  </Card>

  <Card title="Webhooks Integration" icon="webhook" href="/webhooks/overview">
    Listen to real-time card authorization and transaction events.
  </Card>
</CardGroup>


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