Follow these steps to integrate Kyren Pay and collect your first payment.
Prerequisites
- A Kyren Pay merchant account (sign up here)
- Your API key (found in the Developer section of your dashboard)
Step 1: Get your API Key
After signing up, navigate to Dashboard > Developer and copy your API key.
- Test key:
kyren_test_xxxxxxxxxxxx — use this for development
- Live key:
kyren_live_xxxxxxxxxxxx — use this for production
Keep your API keys secure. Never expose them in client-side code or public repositories.
Step 2: Create a Product
Create a product that represents what you’re selling:
curl -X POST https://api.kyren.top/v1/products \
-H "Content-Type: application/json" \
-H "x-api-key: kyren_test_xxxxxxxxxxxx" \
-d '{
"name": "1000 AI Credits",
"description": "Top up 1000 credits for AI API usage",
"price": 9.99,
"currency": "USD"
}'
Save the id from the response — you’ll need it to create checkout sessions.
Step 3: Create a Checkout Session
When a customer wants to pay, create a checkout session:
curl -X POST https://api.kyren.top/v1/checkouts \
-H "Content-Type: application/json" \
-H "x-api-key: kyren_test_xxxxxxxxxxxx" \
-d '{
"productId": "prod_abc123",
"successUrl": "https://yoursite.com/success",
"cancelUrl": "https://yoursite.com/cancel"
}'
The response includes a url field — redirect your customer to this URL to complete payment.
Step 4: Redirect to Checkout
Redirect the customer to the checkout URL returned in Step 3. They will see a hosted payment page where they can choose their preferred payment method.
// Example: redirect in your web app
window.location.href = checkoutResponse.data.url;
Step 5: Handle the Webhook
After payment is completed, Kyren Pay sends a webhook to your server:
// Express.js example
app.post('/webhooks/kyren', express.raw({ type: 'application/json' }), (req, res) => {
const signature = req.headers['x-kyren-signature'];
const timestamp = req.headers['x-kyren-timestamp'];
const payload = req.body.toString();
// Verify the signature (see Webhook Signatures for details)
if (!verifySignature(payload, signature, timestamp)) {
return res.status(400).send('Invalid signature');
}
const event = JSON.parse(payload);
if (event.type === 'order.paid') {
const orderId = event.data.order_id;
const amount = event.data.amount;
// Fulfill the order in your system
console.log(`Payment received: ${amount} ${event.data.currency}`);
}
res.status(200).send('OK');
});
Configure your webhook URL in Dashboard > Developer > Webhook Settings.
What’s Next?