Account & billing
Manage billing through Paddle
Upgrade products, open the customer portal, and manage subscriptions through Paddle Billing.
Manage billing through Paddle
Nikaj uses Paddle Billing as Merchant of Record for Trello Power-Up subscriptions when checkout is activated for a plan.
Paid entitlements apply per verified Trello member identity, not per Trello workspace or board. Connect and verify your Trello member in the dashboard before checkout.
Checkout may show as unavailable on /pricing while Paddle domain approval and price configuration are pending. Nikaj does not treat a successful browser redirect as payment proof — verified Paddle webhooks unlock access.
Upgrade a product
- Sign in at /login.
- Connect and verify your Trello member identity from the dashboard.
- Open /pricing or choose a product plan from the dashboard.
- Complete payment in the Paddle checkout session when checkout is available.
- Return to the dashboard — access appears after Paddle webhooks are verified (not immediately on redirect).
Manage subscriptions
From the dashboard you can open the Paddle customer portal to:
- Update payment method
- View invoices and receipts
- Cancel or change plans
Portal sessions are created fresh on each request and are never cached.
Troubleshooting
| Symptom | Likely cause |
|---|---|
| Checkout blocked | Trello member identity not verified yet |
| No upgrade button | Product may be coming soon or checkout is unavailable pending Paddle approval/configuration |
| Checkout error after sign-in | Confirm sandbox/live Paddle env matches NEXT_PUBLIC_APP_URL |
| Access not unlocked yet | Wait for webhook delivery; refresh dashboard after a minute |
Sandbox setup checklist
- Create or use a Paddle Sandbox account.
- Create sandbox products for Board Export+, Card Vault+, Doc Flow+, and the Nikaj Power-Ups Bundle.
- Create monthly and annual sandbox prices for each product and the bundle.
- Create a sandbox client-side token (
NEXT_PUBLIC_PADDLE_CLIENT_TOKEN). - Create a restricted server API key (
PADDLE_API_KEY). - Register webhook destination
https://nikaj.dev/api/webhooks/paddle(or ngrok for local sandbox). - Select required events:
customer.created,customer.updated,transaction.completed,subscription.created,subscription.updated, plus lifecycle events as needed. - Copy the webhook secret into
PADDLE_WEBHOOK_SECRET. - Configure customer portal branding/settings.
- Approve
https://nikaj.devas a checkout domain when moving beyond localhost testing. - Copy price IDs into the
PADDLE_PRICE_*environment variables and runnpm run db:seedif needed.
Default payment link page
Nikaj includes a /pay page that loads Paddle.js for Paddle default payment links that include a transaction ID (/pay?_ptxn=txn_...). The page intentionally stays unavailable until Paddle checkout is activated, the live domain is approved, and the client token is configured.
Hosted checkout sessions created from the dashboard or pricing page remain the primary purchase path for customers.
See also: Understand product access.
