Skip to main content
Beta - Payment events are currently in beta. The payload structure may still evolve before general availability. If you build on them, share your feedback at support@bookingshake.com.

Overview

Payment events notify you of every change to payments in BookingShake: payment.created, payment.updated, and payment.deleted. These are pure CRUD events - there is no separate “payment received” event. The payment lifecycle is carried by the status field in the payload: a scheduled payment is created with status waiting, then updated to paid when received. An online payment received immediately emits a single payment.created with status paid.
Security deposits (holds) are out of scope. Documents recorded as security deposits never emit payment events. If a security deposit is converted into a payment (or vice versa), no created/deleted event is emitted for the transition.
Common use cases:
  • Reconcile payments in your accounting software
  • Track cash-in across venues in real-time
  • Trigger internal workflows when a payment becomes overdue or is received

Conventions

The payment payload follows the same conventions as invoice events:
ConventionRule
AmountsInteger cents (e.g., 90000 = €900.00)
DatesYYYY-MM-DD strings, in the Europe/Paris timezone
TimestampsUnix milliseconds
Missing valuesExplicit null, never omitted

Payload Example

{
  "event": "payment.created",
  "timestamp": 1749722400000,
  "venue_id": "venue123",
  "venues_group_id": "group456",
  "data": {
    "id": "payment-789",
    "amount": 90000,
    "status": "paid",
    "name": "Acompte 30%",
    "method": "Virement bancaire",
    "received_date": "2026-06-10",
    "due_date": "2026-06-15",
    "created_at": 1749549600000,
    "updated_at": 1749722400000,
    "invoice_id": "file-456",
    "invoice_number": "FAC-2026-0021",
    "quote_id": "quote-123",
    "booking_id": "booking-abc"
  }
}
All three events (payment.created, payment.updated, payment.deleted) carry the same data structure. Unlike account.deleted and contact.deleted, payment.deleted includes the full payment data as it was just before deletion - not only the ID.

Data Fields

FieldTypeDescription
idstringUnique payment ID
amountnumber | nullAmount in integer cents
statusstring | nullwaiting, paid, or canceled
namestring | nullPayment label as entered by the user
methodstring | nullPayment method - see Payment methods
received_datestring | nullDate the payment was received, YYYY-MM-DD
due_datestring | nullDate the payment is expected, YYYY-MM-DD
created_atnumber | nullCreation timestamp, Unix milliseconds
updated_atnumber | nullLast update timestamp, Unix milliseconds
invoice_idstring | nullID of the linked invoice - matches data.id of invoice.created
invoice_numberstring | nullNumber of the linked invoice, denormalized for convenience
quote_idstring | nullID of the linked quote
booking_idstring | nullOpaque correlation key of the booking: all payments and invoices of the same booking share the same value

Payment Methods

method is the payment method label verbatim, as displayed to the user who recorded the payment. It is not a normalized enum: the same method appears in the language of the venue’s locale (e.g., Virement bancaire / Wire transfer). Standard methods include card on site, card remote, voucher, check, cash, online payment, wire transfer, and restaurant vouchers - but free-text values are possible.
Do not build logic on exact method values. Treat it as a display label, or map known labels defensively on your side.

When Is payment.updated Triggered?

payment.updated is only emitted when at least one field exposed in the payload changes: amount, status, name, method, received/due dates, or the invoice, quote, and booking links. Internal changes (sync metadata, technical fields) do not emit events, so you will not receive no-op updates.

Next Steps

Invoice Events

Receive the full invoice payload when documents are issued

Security & Verification

Verify webhook signatures before processing