> ## Documentation Index
> Fetch the complete documentation index at: https://docs.i-pay.money/llms.txt
> Use this file to discover all available pages before exploring further.

# FAQ

> Short answers to frequent integration questions, with a link to the detailed page.

## Which key should I use with the REST API?

The secret key of the target environment, in `Authorization: Bearer`. It must stay on the server side. Details: [Authentication](https://docs.i-pay.money/en/api-reference/authentication.md).

## Can I use a Sandbox key with the Live environment?

No. The key must belong to the same environment as `Ipay-Target-Environment`. Details: [Authentication](https://docs.i-pay.money/en/api-reference/authentication.md) and [Getting started](https://docs.i-pay.money/en/getting-started.md).

## How do I know whether a payment really succeeded?

Check on the server side that `GET /api/v1/payments/{reference}` returns `status: succeeded`, or process an authenticated webhook and then confirm the status if the action is sensitive. Details: [Retrieve a transaction](https://docs.i-pay.money/en/api-reference/transactions/retrieve-a-payment.md).

## Can I reuse `transaction_id`?

No: this external reference must be unique for your account, and a duplicate returns `422 External Reference Not Valid` in Live (in Sandbox, the response is not guaranteed to be identical — to be confirmed with support; in both cases the payment is not created). This detection is applied at the application level and is not guaranteed under concurrent calls; the API does not expose any idempotency key. Generate a unique `transaction_id` for each attempt. Details: [Errors](https://docs.i-pay.money/en/api-reference/errors.md).

## Why does my Live payment return `Incorrect MSISDN`?

This message only concerns the format of the `msisdn` for the method used: it must include the expected country code and match the country and a supported operator. If the format is correct, the error comes from somewhere else — check the `Ipay-Payment-Type` header and the account permissions, which produce different responses. Details: [Errors](https://docs.i-pay.money/en/api-reference/errors.md).

## Does the webhook replace the API check?

No. It avoids continuous polling, but the check remains useful for sensitive actions, user feedback and reconciliation. Details: [Webhooks](https://docs.i-pay.money/en/guides/webhooks.md).

## Which SDKs are currently documented?

A [JavaScript SDK](https://docs.i-pay.money/en/tools/javascript-sdk.md) and a [WooCommerce](https://docs.i-pay.money/en/tools/woocommerce.md) module. For PHP, Java, Flutter or Android, no guide is published: use the REST API from your backend, or ask [support](https://docs.i-pay.money/en/resources/support.md) to confirm whether an official package is available. The OpenAPI contract and the Postman collection are on the [Downloads](https://docs.i-pay.money/en/tools/downloads.md) page.

## Where can I find the error messages?

On the [Errors](https://docs.i-pay.money/en/api-reference/errors.md) page. For a support request, see [Support](https://docs.i-pay.money/en/resources/support.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.