# Getting Started

The **Pay.io Payment Gateway API** enables merchants to build a full cashier solution directly into your websites or applications. With a single integration, you can:

* Trigger **deposits** and **withdrawals**
* Show **real-time balances** and transaction history
* Access multiple crypto payment providers through **native MESH integration**

While business owners manage their accounts and configurations in the **Merchant Console**, the **Payment Gateway API** is what powers the end-user cashier experience.

***

### Prerequisites

Before you start making API calls, you'll need to:

* **Onboard as a merchant with Pay.io** -  our team will configure your account, including enabling key currencies, according to your needs.
* **Obtain your API key** - Found in the Merchant Console or provided by our support team.
* **Generate RSA key pair -** You’ll provide Pay.io your public key during setup (see [Authorisation](/api-reference/core-concepts/authorisation.md) for details).
* **Set up request signing** — Each API call requires a nonce and RSA-SHA256 signature.

***

### Pay.io APIs Overview

#### Merchant API

Used by your backend to configure cashier options:

* [**Currencies API** ](/api-reference/merchant-console-api/get-a-list-of-available-currencies.md#get-a-list-of-available-currencies)- Used to retrieve the list of enabled currencies for you.
* [**Transactions API**](/api-reference/merchant-console-api/get-a-list-of-merchant-transactions.md) - Access transaction history across users and retry payouts requiring approval.

#### User Payment API

Used to serve your end-users inside the cashier through our payment gateway experience:

* [**Deposits API** ](/api-reference/user-payment-api/create-a-deposit-address.md)- Generate unique deposit addresses or create wallet deposit links.
* [**Withdrawals API** ](/api-reference/user-payment-api/create-a-user-withdrawal.md)- Allow users to request withdrawals to personal wallets.
* [**User Transactions API** ](/api-reference/user-payment-api/get-a-list-of-user-transactions.md)- Display a user’s transaction history in your cashier UI.

***

### Making Your First API Call: List Currencies

Once your merchant account is onboarded, your **first step** is to list which currencies are available for your cashier to set up the Payment Gateway.&#x20;

#### Request

```bash
curl --location 'https://gateway.stage.pay.io/v1/merchant/currencies' \
--header 'X-API-Key: YOUR_API_KEY' \
--header 'X-API-Nonce: YOUR_UUID_NONCE' \
--header 'X-API-Signature: SIGNATURE'
```

#### Response (example)

```json
{
  "currencies": [
    {
      "id": "1270e0a2-593b-5272-8c0e-90ba5552d921",
      "name": "SOL",
      "currency_code": "SOL",
      "symbol": "◎",
      "network": "Solana",
      "currency_icon": "https://cdn.hub88.io/hub-wallet/SOL-ic.svg"
    },
    {
      "id": "990cd2f7-b169-5665-b0e1-05cc46ae4209",
      "name": "USDC",
      "currency_code": "USDC",
      "symbol": "$",
      "network": "Base Chain"
    }
  ]
}
```

***

### Next Steps For Payment Gateway

Once you have your supported currencies, you can:

* Request a **deposit address** for a user ([`POST /v1/user/deposit/address`](/api-reference/user-payment-api/create-a-deposit-address.md))
* Initiate a **withdrawal** ([`POST /v1/user/withdraw`](/api-reference/user-payment-api/create-a-user-withdrawal.md))
* Fetch **transactions** for a user ([`POST /v1/user/transactions`](/api-reference/user-payment-api/get-a-list-of-user-transactions.md)) or across your merchant ([`POST /v1/merchant/transactions`](/api-reference/merchant-console-api/get-a-list-of-merchant-transactions.md))

See the [Authorisation](/api-reference/core-concepts/authorisation.md) for details on how to sign and authenticate your requests.


---

# 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.pay.io/api-reference/core-concepts/getting-started.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.
