# Start Here

Read these five pages, in this order, before you write integration code.

| # | Page | What you learn |
|---|------|----------------|
| 1 | [PayMe at a glance](/payments/getting-started/payme-at-a-glance) | Products, payment methods, currencies, environments, compliance and support contact — in one page. |
| 2 | [Authentication](/payments/getting-started/authentication) | Which credential goes where: `seller_payme_id` (MPL), `payme_client_key`, the public key, and the OAuth/JWT tokens used by the Keep and Products & Customers APIs. |
| 3 | [Environments](/payments/getting-started/environments) | Sandbox vs production base URLs, test cards, and the hosts you will see in `sale_url`. |
| 4 | [Quickstart](/payments/getting-started/quickstart) | One complete sale in the sandbox with `curl`: create a sale, pay it, receive the callback, refund it. |
| 5 | [Callbacks](/payments/getting-started/callbacks) | How PayMe notifies your server, what the payload contains, and how to handle it. |

After those, read [Errors](/payments/getting-started/errors) and [Idempotency and retries](/payments/getting-started/idempotency-and-retries) before going live.

## Three facts that trip up most integrations

1. **Amounts are in minor units.** A price of 50.75 is sent as `5075`, and the minimum `sale_price` is `500`. 
2. **Callbacks are not JSON.** PayMe sends a `POST` with `x-www-form-urlencoded` body to your callback URL, even though your requests to PayMe are JSON. 
3. **Error messages default to Hebrew.** Send `"language": "en"` to get English error messages. 

> ⚠ TO CONFIRM: How does a developer get sandbox credentials (seller_payme_id/MPL, payme_client_key, public key) — self-service sign-up, an account manager, or an email to support? [Q5]
