Create an organizer subaccount at event registration. Set the split so the organizer receives the ticket price minus the platform booking fee. Initialize each ticket purchase with the organizer's subaccount and percentage_charge set to the organizer's share. On charge.success, generate and email the ticket to the buyer. Hold organizer funds until post-event to protect against cancellations.
// Sell a ticket with organizer split
app.post('/api/events/:id/tickets', async (req, res) => {
var { ticketType, email, quantity } = req.body;
var event = await db.events.findById(req.params.id);
var organizer = await db.organizers.findById(event.organizer_id);
var ticketPrice = event.ticket_prices[ticketType]; // e.g., 5000 NGN
var totalAmount = ticketPrice * quantity;
var platformFee = 500; // NGN 500 per order flat booking fee
var organizerShare = totalAmount - platformFee;
var reference = 'tkt_' + event.id + '_' + Date.now();
var response = await fetch('https://api.paystack.co/transaction/initialize', {
method: 'POST',
headers: { Authorization: 'Bearer ' + process.env.PAYSTACK_SECRET_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({
email,
amount: totalAmount * 100,
subaccount: organizer.subaccount_code,
transaction_charge: platformFee * 100, // Platform booking fee in kobo
bearer: 'account',
reference,
metadata: {
event_id: event.id,
ticket_type: ticketType,
quantity,
},
}),
});
var data = await response.json();
res.json({ authorization_url: data.data.authorization_url });
});
// Webhook: generate and send tickets on payment
if (event.event === 'charge.success') {
var meta = event.data.metadata;
if (meta?.event_id) {
var tickets = await generateTickets(meta.event_id, meta.ticket_type, meta.quantity);
await sendTicketEmail(event.data.customer.email, tickets);
await db.sales.create({
reference: event.data.reference,
event_id: meta.event_id,
email: event.data.customer.email,
ticket_type: meta.ticket_type,
quantity: meta.quantity,
status: 'paid',
});
}
}
This guide is part of the Paystack split payments guide.
KES 2,999
The definitive guide to building payment systems with Paystack — from your first transaction to production-grade payment infrastructure across Africa. 9 modules, 47 lessons. Free preview available.
Start Paystack Course