> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.epaygames.io/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.epaygames.io/_mcp/server.

# Testing & Sandbox

## Sandbox/Staging Hosts

| API              | Host                                |
| ---------------- | ----------------------------------- |
| Payments API     | `api-stg.epaygames.io`              |
| Disbursement API | `disbursement-api-stg.epaygames.io` |

Point `{{payments_api_host}}` and `{{disbursement_api_host}}` (see [Environments & Setup](/environments-and-setup)) at these values while integrating.

## Sandbox Credentials

The collection ships with working sandbox/staging credentials so you can exercise both APIs end-to-end before going live:

| Field         | Value                                                              |
| ------------- | ------------------------------------------------------------------ |
| Username      | `test-merchant`                                                    |
| Password      | `p@ssw0rd01`                                                       |
| Signature Key | `9XAgVZzU4WhqrXA6jEvMtkF85j8wKZZhQ5RE2hsDPwa5rjPT7RpCmJceu8jNt4Wy` |

These same credentials work for both the Payments API's `Create Token` and the Disbursement API's `Create Access Token`.

## The Testing Folder (Disbursement API)

A dedicated **Testing** folder exists under the Disbursement API, separate from the core functional folders (Authentication, Wallet, Disbursement, Authorization). It's explicitly scoped to **development and QA purposes only**.

### Repost Transaction

```text
POST /v1/api/disbursement/transactions/repost?reference_no=TESTINGREFNO01
```

* **Purpose:** re-triggers the webhook callback for an existing transaction, identified by `reference_no`.
* **Use case:** testing your webhook handler's response to transaction status events (e.g., `success`, `failed`) **without** having to initiate a brand-new payout every time you want to test delivery.

```json title="Example response"
{
    "message": "Transaction callback notification has been successfully reposted."
}
```

This endpoint must not be used in a production environment. It exists purely to simulate webhook delivery in sandbox/QA.

## Why a Repost Utility Matters

Webhook integrations are notoriously hard to test reliably, because triggering a real event usually means creating a real transaction and waiting for it to settle. `Repost Transaction` sidesteps that: point it at a `reference_no` you already have, and it re-fires the callback so you can confirm your endpoint:

* Receives the payload correctly.
* Parses the status (`success`/`failed`) correctly.
* Responds appropriately (e.g., with the HTTP status your webhook sender expects to consider delivery successful).

## Practical Testing Checklist

#### Authenticate

Authenticate against sandbox (`api-stg.epaygames.io` / `disbursement-api-stg.epaygames.io`) using the test credentials above.

#### Run a full happy-path flow per API

* Payments: `Create Token` → `Get Channels` → `Calculate Total w/ Fee` → `Generate Transaction` → `Get Transactions`.
* Disbursement: `Create Access Token` → `Get Wallets` → `Get Channels`/`Get Receiving Banks` → `Process Disbursement` → `Get Transactions`.

#### Set a real, reachable callback\_webhook\_url

e.g., a `webhook.site` URL during early testing, as used in this collection's own examples — then confirm you receive a callback after a transaction settles.

#### Use Repost Transaction

Re-test your webhook handler's logic without generating new payouts each time.

#### Move to production

Before going live, swap sandbox hosts/credentials for your production `payments_api_host` / `disbursement_api_host` and assigned production credentials, and remove any reliance on the Testing folder from your integration.