# FAQ

## :book:Questions & Answers

Have a question about using the API? This section covers the most common issues, tips, and answers to help you integrate faster and avoid common pitfalls. If you don’t find what you’re looking for here, reach out to our support team.

<details>

<summary><strong>Which OAuth grant type is supported?</strong></summary>

`client_credentials` only. Include `grant_type=client_credentials` in the form data.

</details>

<details>

<summary><strong>Where do I obtain <code>client_id</code> and <code>client_secret</code>?</strong></summary>

Generate them in the Partner Dashboard under **API Keys**.

</details>

<details>

<summary><strong>How long is an <code>access_token</code> valid?</strong></summary>

Exactly the value of `expires_in` returned by the token call—currently **3600 seconds (60 minutes)**.

</details>

<details>

<summary><strong>What is the minimal body for <code>POST /payment/request</code>?</strong></summary>

```
{
  "amount": "100",
  "currency": "USD",
  "redirect_url": "https://yourapp.com/thanks"
}
```

</details>

<details>

<summary><strong>Can I tag requests for internal tracking?</strong></summary>

Yes, pass a `reference_id` string. It is returned unchanged in all responses.

</details>

<details>

<summary><strong>What is the API rate limit?</strong></summary>

The API enforces a rate limit of **5 requests per second per API key**.

If you exceed this limit, you will receive an HTTP 429 “Too Many Requests” response. To avoid hitting the rate limit:

* Space out your requests evenly
* Implement exponential backoff and retry logic when you receive a 429 error
* Monitor your request volume to stay within limits

If your use case requires a higher rate limit, please contact our support team to discuss your integration needs.

</details>

<details>

<summary><strong>How do I confirm payment completion?</strong></summary>

Poll `GET /payment/request/{id}` until `status` equals `paid`.

</details>

<details>

<summary><strong>What statuses can a payment request have?</strong></summary>

`pending`, `paid`, `expired`, or `cancelled`.

</details>

<details>

<summary><strong>What happens if required fields are missing?</strong></summary>

The API returns `400 Bad Request` with details in the `error.message` field.

</details>

<details>

<summary><strong>Does the API support recurring or partial payments?</strong></summary>

No. Each Payment Request is a one‑off charge for a fixed amount.

</details>

***


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.alternativepayments.io/getting-started/faq.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
