# Paddle sandbox checkout Rsync Studio's licensing site now hosts a Paddle sandbox checkout at: - `https://rsync.stage.absdev.net/buy` The macOS app opens this page from the Licence and General settings screens. ## Stage environment The stage `.env` must contain: ```dotenv PADDLE_CLIENT_SIDE_TOKEN=test_... PADDLE_ENVIRONMENT=sandbox RSYNC_STUDIO_PURCHASE_URL=https://rsync.stage.absdev.net/buy RSYNC_STUDIO_PORTAL_URL=https://rsync.stage.absdev.net/portal RSYNC_STUDIO_SUPPORT_URL=https://rsync.stage.absdev.net/support ``` Keep `PADDLE_API_KEY` server-side. It must never be added to the macOS app or browser JavaScript. The four Paddle catalog IDs remain configured through `PADDLE_PERSONAL_*` and `PADDLE_PROFESSIONAL_*` variables. ## Checkout behavior - Paddle.js is initialized with the sandbox client-side token. - Prices are localized with `Paddle.PricePreview()` when available, with the agreed GBP prices as a fallback. - Each plan opens Paddle's overlay checkout using the configured price ID. - All plans advertise the configured 7-day Paddle trial. - A successful Paddle subscription webhook provisions the licence and creates the encrypted delivery outbox record. - After webhook processing, pending licence keys are sent by email on a best-effort basis without rolling back the verified webhook if mail delivery is temporarily unavailable. ## macOS stage configuration The app is configured for: - API: `https://rsync.stage.absdev.net/api/` - Buy: `https://rsync.stage.absdev.net/buy` - Portal: `https://rsync.stage.absdev.net/portal` - Support: `https://rsync.stage.absdev.net/support` - The current stage Ed25519 licence public key is embedded in `Info.plist`. The signing private seed remains server-only.