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

# Quickstart

> Accept your first crypto payment in 15 minutes

<span style={{display:"none"}}>For the complete documentation index, see [llms.txt](/llms.txt).</span>

## Get Started with Shakesco

This quickstart guide will walk you through accepting your first crypto payment using Shakesco. We'll use Payment Links as the example since it's the fastest way to get started.

## Before You Begin

You'll need:

* A Shakesco business account
* Basic knowledge of making API requests
* 15 minutes of your time

## Step 1: Create Your Shakesco Account

### Download the App

Download Shakesco from [get.shakesco.com](https://get.shakesco.com/)

Available for iOS and Android.

### Create Personal Account

1. Open the Shakesco app
2. Sign up with your email
3. Complete the onboarding process
4. Verify your email address

### Create Business Account

1. **Hold down** the profile button in the navigation bar
2. When the pop-up appears, select **"Create a business wallet"**
3. Enter your business details
4. Complete business verification

<Note>
  You need both a personal account and a business account. The business account
  is where you'll manage payments and API credentials.
</Note>

## Step 2: Get Your API Credentials

### Access Your Business Dashboard

1. Go to [Dashboard](https://users.shakesco.com)
2. Navigate to [**API Tokens**](https://users.shakesco.com/user/api-tokens)
3. Generate a new API key

### Save Your Credentials

You'll receive:

* **API Key**: Used to authenticate requests

<Warning>
  Keep your API key secure. Never commit it to version control or share it
  publicly.
</Warning>

## Step 3: Make Your First API Call

Let's create an invoice to accept a one-time payment.

### Create an Invoice

```bash theme={null}
curl -X POST https://payments.shakesco.com/invoices \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "public",
    "currency": "USD",
    "payer_email": "customer@example.com",
    "items": [
      { "description": "Test Payment", "unit": 1, "price": 150.00 }
    ]
  }'
```

### Response

```json theme={null}
{
  "invoice_number": "INV-2026-a1b2c3d4",
  "status": "pending",
  "payment_url": "https://pay.shakesco.com/@yourbusiness/a1b2c3...",
  "currency": "USD"
}
```

### Share the Payment Link

Copy the `payment_url` from the response and share it with your customer:

```
https://pay.shakesco.com/@yourbusiness/a1b2c3...
```

When your customer clicks the link and completes payment, you'll receive the funds in your business wallet.

## Next Steps

Congratulations! You've accepted your first crypto payment. Here's what to explore next:

<CardGroup cols={2}>
  <Card title="Payment Links" icon="link" href="/payment-links/">
    Create invoices, manage your store, and track analytics
  </Card>

  <Card title="Loyalty Program" icon="gift" href="/loyalty-program/">
    Launch your custom loyalty token and reward customers
  </Card>

  <Card title="Auto-Payments (Beta)" icon="rotate" href="/auto-payments/">
    Set up recurring payments for subscriptions
  </Card>

  <Card title="API Reference" icon="code" href="/api-reference/introduction">
    Browse all available endpoints
  </Card>
</CardGroup>

## Authentication

All API requests require authentication using your API key:

```bash theme={null}
-H "Authorization: Bearer YOUR_API_KEY"
```

## Error Handling

Always handle errors gracefully:

```javascript theme={null}
try {
  const response = await fetch("https://payments.shakesco.com/invoices", {
    method: "POST",
    headers: {
      Authorization: "Bearer YOUR_API_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      type: "public",
      currency: "USD",
      items: [{ description: "Test Payment", unit: 1, price: 150 }],
    }),
  });

  if (!response.ok) {
    const error = await response.json();
    console.error("API Error:", error.message);
    // Handle error appropriately
  }

  const data = await response.json();
  // Process successful response
} catch (error) {
  console.error("Network Error:", error);
  // Handle network errors
}
```

## Common Error Codes

| Code | Meaning                                 |
| ---- | --------------------------------------- |
| 400  | Bad Request - Invalid parameters        |
| 401  | Unauthorized - Invalid API key          |
| 404  | Not Found - Resource doesn't exist      |
| 429  | Too Many Requests - Rate limit exceeded |
| 500  | Internal Server Error - Contact support |

## Ready to Build?

<CardGroup cols={2}>
  <Card title="Payment Links" icon="link" href="/payment-links/">
    Learn more about payment links
  </Card>

  <Card title="Loyalty Program" icon="gift" href="/loyalty-program/">
    Launch your loyalty token
  </Card>

  <Card title="API Reference" icon="book" href="/api-reference/introduction">
    Full API documentation
  </Card>

  <Card title="Contact Sales" icon="phone" href="https://shakesco.com/contact">
    Talk to our team
  </Card>
</CardGroup>
