Getting Started with Paddle Payment Integration
Configure Credentials
-
Open
{workspace}/{vertical}/services_config/nn_env.json. -
Set
JWT_SECRETto a unique value. -
Create an OAuth 2.0 Client ID (Web application) in the Google Cloud Console.
-
Add credentials and admin email to
nn_env.json:{
"JWT_ALGORITHM": "HS256",
"JWT_SECRET": "your-unique-secret",
"GOOGLE_CLIENT_ID": "your-client-id.apps.googleusercontent.com",
"GOOGLE_CLIENT_SECRET": "your-client-secret",
"admin_emails": "your-email@example.com"
}
Deploy Services
-
In the UX, deploy the Auth service.
-
In the UX, deploy the Subscription and Billing service.
-
Copy the auth service URL from the deploy output.
-
In Google Cloud Console, add the Authorized redirect URI:
https://<auth-service-url>/oauth/loggedin
Deploy UI and Configure Paddle
-
In the UX, deploy the UI.
-
Open your site and log in. You should see the Admin link in the nav bar.
-
Go to Admin > Manage Products > Credentials tab.
-
Enter your Paddle credentials:
- API Key — from the Paddle dashboard (Developer Tools > Authentication)
- Client Token — from Paddle (used for frontend checkout)
- Webhook Secret — from Paddle (Developer Tools > Notifications)
-
In Paddle, set the webhook URL to your Subscription and Billing service endpoint:
https://sbcs.us-east-1.{site}.{vertical}.narambu.com/webhook -
Use the Environment dropdown to configure Sandbox or Live separately.
Sync Product Catalog
- Go to the Sync tab and sync your product catalog from Paddle.
- Go to the Classify tab to select which products are shown to users.
Related
- Environment Variables — Services receive region, site, bucket names, and service URLs automatically. Custom variables go in
nn_env.json. - Auth Service — more on Google OAuth configuration