# Quick Start

## :sparkles:Step by step

Follow these steps and you will have a working payment link in minutes:

{% stepper %}
{% step %}

### Generate an API Key

Log in to the Partner Dashboard and go to **Team Preferences > API Keys**. Create a new key to identify your integration.

[<mark style="background-color:purple;">API Key</mark>](https://docs.alternativepayments.io/getting-started/quick-start/api-keys)
{% endstep %}

{% step %}

### Authenticate via OAuth 2.0

Use the API Key to obtain an access token using the **client credentials** grant type.

[<mark style="background-color:purple;">OAuth Authentication</mark>](https://docs.alternativepayments.io/getting-started/broken-reference)
{% endstep %}

{% step %}

### **Create a payment request**

Use your access token to create a new payment request with the desired amount, currency, and redirect URL.

[<mark style="background-color:purple;">Create a payment request</mark>](https://docs.alternativepayments.io/getting-started/broken-reference)
{% endstep %}

{% step %}

### **Check payment status**

Poll the API to retrieve the current status of the payment.

[<mark style="background-color:purple;">Retrieve a Payment Request</mark>](https://docs.alternativepayments.io/getting-started/broken-reference)
{% endstep %}
{% endstepper %}

***

## 🧰 Environments & Base URLs

<table><thead><tr><th width="241">Environment</th><th>Base URL</th></tr></thead><tbody><tr><td>Production (default)</td><td><code>https://public-api.alternativepayments.io</code></td></tr><tr><td>Demo</td><td><code>https://public-api.demo.alternativepayments.io</code></td></tr></tbody></table>

All examples in this guide use production URLs. Switch to the demo when you test. Tokens and requests are isolated per environment.

{% hint style="danger" %}

#### Caution

Tokens issued in one environment do **NOT** work in the other. Generate separate client credentials for demo and production.
{% endhint %}

{% hint style="warning" %}

#### API Versioning

The current stable version is **v1**. Backward‑compatible changes (new fields, new statuses) are rolled out without a version bump. Breaking changes, if ever needed, will ship under `/v2`.
{% endhint %}

####
