Bookings
Let customers book and pay for appointments: services, availability, deposits and reminders.
Set up services, staff, availability and the booking page’s policies; customers book on your page and pay in full, a deposit, or later. Your systems can read and manage appointments. The SDKs do not wrap these endpoints yet: call them over HTTP with your key.
Keys and scopes
bookings scope.Add a service and publish the page
curl -X POST https://api.watenga.africa/v1/merchant/bookings/services \
-H "Authorization: Bearer $WATENGA_SECRET_KEY" \
-H "Watenga-Version: 2026-10-29" \
-H "Content-Type: application/json" \
-d '{"name":"Haircut","duration_minutes":45,"price":"20.00","payment_policy":"deposit","deposit_percent":30}'
curl -X POST https://api.watenga.africa/v1/merchant/bookings/publish \
-H "Authorization: Bearer $WATENGA_SECRET_KEY" \
-H "Watenga-Version: 2026-10-29"Read and manage appointments
Reschedule moves an appointment to another offered slot; complete and no-show close it after it started.
curl https://api.watenga.africa/v1/merchant/bookings/appointments?status=confirmed \
-H "Authorization: Bearer $WATENGA_SECRET_KEY" \
-H "Watenga-Version: 2026-10-29"
curl -X POST https://api.watenga.africa/v1/merchant/bookings/appointments/{id}/cancel \
-H "Authorization: Bearer $WATENGA_SECRET_KEY" \
-H "Watenga-Version: 2026-10-29" \
-H "Content-Type: application/json" \
-d '{}'Webhook events
| Event | When |
|---|---|
booking.confirmed | A booking was confirmed (and paid as the policy asks) |
booking.rescheduled | Moved to another time |
booking.cancelled | Cancelled |
booking.completed | Marked completed |
booking.no-show | Marked as a no-show |
Each event carries the object in data.object; verify the signature first (Webhooks).
Test it
Use a test secret key (sk_test_…): it never moves money. Pay with the test cards and wallet numbers, and receive the webhooks on your machine with watenga listen --forward-to http://localhost:3000/webhooks (CLI).