# Payment providers

> Which payment providers goalmrr connects today, the key each one expects, and which providers are not available yet.

Source: https://goalmrr-site-dev.avs-media.workers.dev/docs/payment-providers/

Six providers connect today. Revenue is never typed in. A number on your page is a figure the provider reported, or it is not shown as revenue.

> [!HONEST]
> RevenueCat, Creem, Whop, Superwall, Shopify and the App Store are not available yet. Each one is added when its API details are checked. Until then goalmrr will not take a key for them.

## The six

| Provider | Key you paste | What goalmrr reads |
|---|---|---|
| Stripe | A restricted key, `rk_live_…` or `rk_test_…`. A secret key (`sk_`) is refused. | Balance, balance transactions and subscriptions. A test key is labelled test. See [Connect Stripe](../connect-stripe/). |
| Lemon Squeezy | An API key from Settings, then API. Lemon Squeezy cannot limit a key to read. | Orders and subscriptions. goalmrr only reads. Delete the key at Lemon Squeezy when you are done with it. |
| Paddle | An API key with read permission only on transactions, adjustments and subscriptions. It starts with `pdl_live_apikey_`. Sandbox keys are not accepted. | Those three reads. |
| Polar | An organization access token with only the scopes `orders:read` and `subscriptions:read`. It starts with `polar_oat_`. | Orders and subscriptions. |
| Dodo Payments | A live-mode API key. Dodo cannot limit a key to read. | Payments and subscriptions. goalmrr only reads. Delete the key in the Dodo dashboard when you are done with it. |
| Razorpay | The key id and the key secret, joined by a colon: `rzp_live_…:…` or `rzp_test_…:…`. Razorpay cannot limit a key to read. | Payments. Razorpay is not read for monthly recurring revenue yet. |

## What every connection has in common

- The key is stored encrypted and is never shown again, except its last four characters.
- One provider account connects to one workspace. A second workspace cannot attach the same account.
- Totals refresh every hour. A number is fresh for 48 hours after the last successful read. After that the page says when it was last verified. An old number is not shown as fresh.
- Disconnecting destroys the key. The numbers already read stay as history until you remove the connection, which deletes them.
- goalmrr does not read customer names, email addresses or card numbers.
- goalmrr does not charge, refund or change the account. Where the provider can issue a read-only key, use that. Where it cannot, the limit is on goalmrr's side: it only sends read requests.

## If the provider stops answering

A provider may change or close its interface. goalmrr then shows the connection as not working, instead of leaving an old number looking fresh. The steps are in [troubleshooting](../troubleshooting/).
