# Fees and limits

> How much accepting payments via PS Wallet Pay costs, which operations are free, and what limits the API has.

PS Wallet Pay charges a fee only on paid invoices. Transfers, checks, app balance top-ups, and withdrawals to your own account are free.

## Fee on paid invoices

The fee is 0.3% of the amount of each paid invoice. It is deducted when the payment is credited: the app balance receives the payment amount minus the fee.

- The fee is charged in the coin the user paid with and is rounded to the smallest unit of that coin.
- The actual fee for each invoice is in the `fee_amount` and `fee_asset` fields of the paid [Invoice](https://help.pswallet.org/en/pay-api/types#invoice). The amount credited to the app balance is `paid_amount − fee_amount`.
- The user pays exactly the invoice amount — the fee is not added to it.

> [!NOTE]
> Some apps may have an individual rate. Your app's rate is shown in the dashboard: "Settings" → "Fee".

## No fee

- Transfers to users (`transfer`).
- Checks (`createCheck`).
- Topping up the app balance from your own account.
- Withdrawing from the app balance to your own account.

## Withdrawing from the app balance

Funds are withdrawn from the app balance in the dashboard using the "Withdraw" button to your PS Wallet accounts in the same coin, and from there to any wallet, card, etc. as usual.

You can top up the app balance (for example, for transfers and checks) in the same place from your PS Wallet account — with no fee, confirmed with your PIN.

## Limits

| What | Limit |
|---|---|
| API requests | 30 per second per app. Above the limit — error `429 TOO_MANY_REQUESTS`. |
| Items in the `getInvoices`, `getTransfers`, `getChecks` response | From 1 to 1000 (`count`), 100 by default. |
| IDs in `invoice_ids`, `transfer_ids`, `check_ids` | The first 1000 are counted. |
| Invoice lifetime (`expires_in`) | From 1 second to 31 days (2678400 seconds). |
| Invoice `description` | Up to 1024 characters. |
| Invoice `hidden_message` | Up to 2048 characters. |
| Invoice `payload` | Up to 4 KB. |
| `paid_btn_url` | Up to 512 characters. |
| Transfer `spend_id` | Up to 64 characters. |
| Transfer `comment` | Up to 1024 characters. |
| Webhook URL | Up to 512 characters, `https://` only. |
| Server response to a webhook | 10 seconds. |
| IP allowlist | Up to 20 addresses or subnets. |
| Decimal places in an amount | No more than the coin has — see [Coins and amounts](https://help.pswallet.org/en/pay-api/assets). |

The number of apps per user is also limited: if you have reached the limit, delete an app you no longer need.

---
Source: https://help.pswallet.org/en/pay-api/fees-and-limits
