Payments
Payments of bookings, whether planned, partially paid or paid
The payment object
Attributes
iduuidUnique identifier
provider_idtext | nullIdentifier of the payment at the payment provider
created_atread-onlytimestamp with time zoneCreation timestamp
updated_atread-onlytimestamp with time zoneLast modification timestamp
amountintegerTotal amount of the payment, in cents
completed_attimestamp with time zone | nullTimestamp at which the payment was completed
currencyCurrencyCurrency of the payment
due_attimestamp with time zoneTimestamp at which the payment is due
ftsread-onlytsvectornotification_sent_attimestamp with time zone | nullTimestamp at which the guest was notified of the payment being due
offlinebooleanWhether the payment is made outside Bookingmood, e.g. by bank transfer
paidintegerAmount of the payment that was paid, in cents
referencetextReference of the payment
statusread-onlyPaymentStatusStatus of the payment: due, paid or cancelled
Related resources
Embed related resources in the response with the select parameter, for example select=*,bookings(*). Resources related through more than one column need the column as a hint, like table!column(*).
{
"id": "00000000-0000-0000-0000-000000000000",
"booking_id": "00000000-0000-0000-0000-000000000000",
"invoice_id": "00000000-0000-0000-0000-000000000000",
"provider_id": "",
"created_at": "2026-10-30T22:26:24.060Z",
"updated_at": "2026-10-30T22:26:24.060Z",
"amount": 0,
"completed_at": "2026-10-30T22:26:24.060Z",
"currency": "ARS",
"due_at": "2026-10-30T22:26:24.060Z",
"notification_sent_at": "2026-10-30T22:26:24.060Z",
"offline": false,
"paid": 0,
"reference": "ABC123",
"status": "cancelled"
}curl -X GET "https://api.bookingmood.com/v1/payments?limit=10&select=*,bookings(*),invoices(*)" \
-H "Authorization: Bearer YOUR_API_KEY"List payments
Filters
idFilter<uuid>Unique identifier
provider_idFilter<text | null>Identifier of the payment at the payment provider
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
amountFilter<integer>Total amount of the payment, in cents
completed_atFilter<timestamp with time zone | null>Timestamp at which the payment was completed
currencyFilter<Currency>Currency of the payment
due_atFilter<timestamp with time zone>Timestamp at which the payment is due
ftsFilter<tsvector>notification_sent_atFilter<timestamp with time zone | null>Timestamp at which the guest was notified of the payment being due
offlineFilter<boolean>Whether the payment is made outside Bookingmood, e.g. by bank transfer
paidFilter<integer>Amount of the payment that was paid, in cents
referenceFilter<text>Reference of the payment
statusFilter<PaymentStatus>Status of the payment: due, paid or cancelled
Responses
200A list of payments with the selected columns
206Partial Content
400The request is malformed, for example an unknown column or an invalid filter.
401The API key is missing or invalid.
code, message, details and hint. See the introduction for more on errors.GET /paymentscurl -X GET "https://api.bookingmood.com/v1/payments?select=*&limit=10" \
-H "Authorization: Bearer YOUR_API_KEY"[
{
"id": "00000000-0000-0000-0000-000000000000",
"booking_id": "00000000-0000-0000-0000-000000000000",
"invoice_id": "00000000-0000-0000-0000-000000000000",
"provider_id": "",
"created_at": "2026-10-30T22:26:24.060Z",
"updated_at": "2026-10-30T22:26:24.060Z",
"amount": 0,
"completed_at": "2026-10-30T22:26:24.060Z",
"currency": "ARS",
"due_at": "2026-10-30T22:26:24.060Z",
"notification_sent_at": "2026-10-30T22:26:24.060Z",
"offline": false,
"paid": 0,
"reference": "ABC123",
"status": "cancelled"
}
]Create payments
Body
Partial<Payment> | Array<Partial<Payment>>Read-only attributes are set by the database and can't be written.
Responses
201The newly created payments with the selected columns
400The request is malformed, for example an unknown column, an invalid filter or an invalid body.
401The API key is missing or invalid.
403The API key has no permission for this change, for example when writing rows of another organization.
409The change conflicts with existing data, for example a duplicate key or a reference to a row that does not exist.
code, message, details and hint. See the introduction for more on errors.POST /paymentscurl -X POST "https://api.bookingmood.com/v1/payments" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"amount": 0,
"booking_id": "00000000-0000-0000-0000-000000000000",
"currency": "ARS",
"due_at": "2026-10-30T22:26:24.060Z",
"invoice_id": "00000000-0000-0000-0000-000000000000",
"offline": false,
"paid": 0,
"reference": "ABC123"
}'[
{
"id": "00000000-0000-0000-0000-000000000000",
"booking_id": "00000000-0000-0000-0000-000000000000",
"invoice_id": "00000000-0000-0000-0000-000000000000",
"provider_id": "",
"created_at": "2026-10-30T22:26:24.060Z",
"updated_at": "2026-10-30T22:26:24.060Z",
"amount": 0,
"completed_at": "2026-10-30T22:26:24.060Z",
"currency": "ARS",
"due_at": "2026-10-30T22:26:24.060Z",
"notification_sent_at": "2026-10-30T22:26:24.060Z",
"offline": false,
"paid": 0,
"reference": "ABC123",
"status": "cancelled"
}
]Delete payments
Filters
Without filters, this request deletes all payments you have access to. Always filter on at least one column, e.g. id=eq.{id}.
idFilter<uuid>Unique identifier
provider_idFilter<text | null>Identifier of the payment at the payment provider
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
amountFilter<integer>Total amount of the payment, in cents
completed_atFilter<timestamp with time zone | null>Timestamp at which the payment was completed
currencyFilter<Currency>Currency of the payment
due_atFilter<timestamp with time zone>Timestamp at which the payment is due
ftsFilter<tsvector>notification_sent_atFilter<timestamp with time zone | null>Timestamp at which the guest was notified of the payment being due
offlineFilter<boolean>Whether the payment is made outside Bookingmood, e.g. by bank transfer
paidFilter<integer>Amount of the payment that was paid, in cents
referenceFilter<text>Reference of the payment
statusFilter<PaymentStatus>Status of the payment: due, paid or cancelled
Responses
200The deleted payments with the selected columns. Returns 204 without a body when sending the header Prefer: return=minimal.
400The request is malformed, for example an unknown column or an invalid filter.
401The API key is missing or invalid.
403The API key has no permission for this change, for example when writing rows of another organization.
code, message, details and hint. See the introduction for more on errors.DELETE /paymentscurl -X DELETE "https://api.bookingmood.com/v1/payments?id=eq.00000000-0000-0000-0000-000000000000" \
-H "Authorization: Bearer YOUR_API_KEY"[
{
"id": "00000000-0000-0000-0000-000000000000",
"booking_id": "00000000-0000-0000-0000-000000000000",
"invoice_id": "00000000-0000-0000-0000-000000000000",
"provider_id": "",
"created_at": "2026-10-30T22:26:24.060Z",
"updated_at": "2026-10-30T22:26:24.060Z",
"amount": 0,
"completed_at": "2026-10-30T22:26:24.060Z",
"currency": "ARS",
"due_at": "2026-10-30T22:26:24.060Z",
"notification_sent_at": "2026-10-30T22:26:24.060Z",
"offline": false,
"paid": 0,
"reference": "ABC123",
"status": "cancelled"
}
]Update payments
Filters
Without filters, this request updates all payments you have access to. Always filter on at least one column, e.g. id=eq.{id}.
idFilter<uuid>Unique identifier
provider_idFilter<text | null>Identifier of the payment at the payment provider
created_atFilter<timestamp with time zone>Creation timestamp
updated_atFilter<timestamp with time zone>Last modification timestamp
amountFilter<integer>Total amount of the payment, in cents
completed_atFilter<timestamp with time zone | null>Timestamp at which the payment was completed
currencyFilter<Currency>Currency of the payment
due_atFilter<timestamp with time zone>Timestamp at which the payment is due
ftsFilter<tsvector>notification_sent_atFilter<timestamp with time zone | null>Timestamp at which the guest was notified of the payment being due
offlineFilter<boolean>Whether the payment is made outside Bookingmood, e.g. by bank transfer
paidFilter<integer>Amount of the payment that was paid, in cents
referenceFilter<text>Reference of the payment
statusFilter<PaymentStatus>Status of the payment: due, paid or cancelled
Body
Partial<Payment>Read-only attributes are set by the database and can't be written.
Responses
200The updated payments with the selected columns. Returns 204 without a body when sending the header Prefer: return=minimal.
400The request is malformed, for example an unknown column, an invalid filter or an invalid body.
401The API key is missing or invalid.
403The API key has no permission for this change, for example when writing rows of another organization.
409The change conflicts with existing data, for example a duplicate key or a reference to a row that does not exist.
code, message, details and hint. See the introduction for more on errors.PATCH /paymentscurl -X PATCH "https://api.bookingmood.com/v1/payments?id=eq.00000000-0000-0000-0000-000000000000" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"amount": 0
}'[
{
"id": "00000000-0000-0000-0000-000000000000",
"booking_id": "00000000-0000-0000-0000-000000000000",
"invoice_id": "00000000-0000-0000-0000-000000000000",
"provider_id": "",
"created_at": "2026-10-30T22:26:24.060Z",
"updated_at": "2026-10-30T22:26:24.060Z",
"amount": 0,
"completed_at": "2026-10-30T22:26:24.060Z",
"currency": "ARS",
"due_at": "2026-10-30T22:26:24.060Z",
"notification_sent_at": "2026-10-30T22:26:24.060Z",
"offline": false,
"paid": 0,
"reference": "ABC123",
"status": "cancelled"
}
]