Going Live

When you are ready to move from sandbox to production, work through the checklist below. Each item is straightforward - the goal is to avoid the small mistakes that are easy to miss under the pressure of a launch.


1. Swap your credentials

Production is a completely separate set of values, not a variant of your development ones. Replace all four, plus the API URL:

VariableNotes
NEXT_PUBLIC_PARTNER_IDProduction Partner Key
PARTNER_SECRETProduction signing secret - different value entirely
PARTNER_KEY_IDProduction kid. A development kid against production fails with a 401
ISSUERProduction issuer
FRUGA_API_URLYour production API domain, provided by Fruga (development is https://api-dev.fruga.co.uk)
⚠️
Store your production PARTNER_SECRET in a secrets manager - AWS Secrets Manager, HashiCorp Vault, GCP Secret Manager, or equivalent. Do not put it in environment variable files committed to source control, and do not log it anywhere.

2. Update all integration points

Confirm that production values are in place everywhere they are used - the Partner Key in your frontend widget initialisation, and PARTNER_SECRET, PARTNER_KEY_ID and ISSUER in your backend assertion signing and cashback claim signing. It is easy to update one and forget the others; a stale PARTNER_KEY_ID in particular fails in a way that looks like a bad secret.

3. Verify your server clock

Fruga rejects signed requests with a timestamp more than 300 seconds from its own clock. Confirm that your production servers are NTP-synced before going live - clock drift is a common cause of intermittent 401 errors that are difficult to reproduce in development.

4. Confirm your userRef is consistent

The userRef in your JWT assertion and the userRef in cashback claim requests must be identical for a given user. Do a final check that both code paths are using the same value - typically a stable user ID from your database. A mismatch causes claims to appear against the wrong wallet, or not appear in the widget at all.

5. Point to the production API

Confirm FRUGA_API_URL points at your production domain in every place your backend reads it - the bootstrap call, the token exchange, and cashback claims - and not at https://api-dev.fruga.co.uk or a staging URL.

6. Test with a real transaction

Before announcing the integration, trigger one real cashback claim end to end - load the widget as a real user, submit a claim from your backend, and confirm the balance appears correctly in the widget. This final check catches any environment-specific configuration issues that sandbox testing may not surface.

If anything is unclear or you run into an issue during your production launch, contact the Fruga integrations team. We are happy to help.