> For the complete documentation index, see [llms.txt](https://docs.jgopay.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.jgopay.com/english/readme.md).

# Overview

> **Version:** 1.6.0\
> **Last Updated:** July 2026

> 🇨🇳 [简体中文版本](/jian-ti-zhong-wen/zh-cn.md)

| Environment | Base URL                             |
| ----------- | ------------------------------------ |
| Production  | `https://api.pays3bucket.com/api/v1` |

> Staging credentials and endpoint are available on request from your account manager.

## Supported Currency

| Currency | Region   | Deposits               | Withdrawals | Gateway Behavior |
| -------- | -------- | ---------------------- | ----------- | ---------------- |
| **MYR**  | Malaysia | DuitNow QR / FPX / TNG | Bank        | Redirect         |

## Integration Flow

### Deposits

```
1. Authenticate     →  POST /auth/token
2. Create Payment   →  POST /payment/request
3. Handle Response  →  Redirect customer
4. Receive Callback  →  Payment status notification
```

### Withdrawals

```
1. Authenticate     →  POST /auth/token
2. Create Withdrawal →  POST /payment/withdraw
3. Receive Callback  →  Withdrawal result notification
```

## Quick Start

1. **Get your credentials** — You'll receive a `merchant_id` and `api_key` from your account manager
2. **Authenticate** — Exchange credentials for an access token ([Authentication](/english/authentication.md))
3. **Create a payment** — Call the payment endpoint ([Create Payment](/english/create-payment.md))
4. **Handle the response** — Redirect the customer to the gateway page ([Payment Methods](/english/payment-methods.md))
5. **Create a withdrawal** — Call the withdrawal endpoint ([Create Withdrawal](/english/create-withdrawal.md))
6. **Receive callbacks** — Get notified when payment or withdrawal completes ([Callbacks](/english/webhooks.md))

## Integration Model

Pass `payment_method` in your request. You receive gateway data and handle the redirect yourself.

```
Merchant → POST /payment/request (with payment_method)
       ↓
JGoPay → Returns gateway data
       ↓
Merchant → Redirects customer to gateway page
       ↓
JGoPay → Sends callback on completion
```

## Rate Limiting

API endpoints are rate-limited per merchant. Exceeding the limit returns HTTP `429 Too Many Requests`.

| Endpoint                 | Limit            |
| ------------------------ | ---------------- |
| `POST /payment/request`  | 100 requests/min |
| `POST /payment/withdraw` | 50 requests/min  |
| Other endpoints          | 100 requests/min |

## Security

* All API requests **must use HTTPS** (`https://`). HTTP requests are rejected.
* `callback_url` and `redirect_url` **must use HTTPS** in production. HTTP URLs will be rejected.
* Never transmit API keys, access tokens, or credentials over unencrypted connections.
* See [Authentication](/english/authentication.md) for credential storage and rotation guidance.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.jgopay.com/english/readme.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
