Partner API
Jul 14, 2026 4:05 PM

Payments & Deposits

The payments side of Hostme: deposits and prepayments for reservations, fees and payment statuses.

This section covers the payments side of Hostme: deposits and prepayments for reservations (payment intents, secrets, payment statuses, refunds), plus service endpoints for the restaurant’s own payment cards, pricing plans and subscription.

All endpoints require a Bearer token (see Authentication) and live under the base path /api/core/payment. Payment operations on reservations are directly tied to BookingContract fields: depositToken, depositStatus, paymentType, intentClientSecret, paymentLinkUrl, details.paymentLinkUrl — see Reservations.

MethodPathPurpose
POST/restaurants/{restaurantId}/intentsCreate a payment intent (get a secret)
POST/restaurants/{restaurantId}/reservations/{reservationId}/refundRefund a reservation deposit
GET/restaurants/{restaurantId}/cardsList payment cards
POST/restaurants/{restaurantId}/cardsAttach a card
PUT/restaurants/{restaurantId}/cards/{cardId}Make a card the default
DELETE/restaurants/{restaurantId}/cards/{cardId}Remove a card
GET/restaurants/{restaurantId}/chargesCharge history
GET/restaurants/{restaurantId}/plansList pricing plans
GET/restaurants/{restaurantId}/subscriptionsRestaurant subscriptions

Deposits and prepayments for reservations

If the restaurant has prepayments or deposits configured, the reservation (BookingContract) gains payment fields. They are populated when the reservation is created/processed and updated as the payment progresses:

Reservation fieldTypePurpose
paymentTypestringPayment type for the reservation
depositTokenstringDeposit token (passed when creating a reservation with prepayment)
depositStatusstringDeposit payment status
isDepositbooleanWhether the payment is a deposit
amountnumberAmount due
receiptAmountnumberActual receipt amount
currencystringCurrency
cardAttachedbooleanWhether the guest’s card is attached
paymentCustomerIdstringPayer identifier in the payment system
intentClientSecretstringClient secret of the payment intent (for confirming the payment on the guest’s side)
paymentLinkUrlstringPayment link
redirectLinkUrlstringRedirect URL after payment
details.paymentLinkUrlstringPayment link inside the details block
details.paymentErrorstringPayment error text, if any

The depositToken field is passed when creating a reservation and ties the prepayment to the booking. Track the subsequent status in depositStatus and details.paymentError.


Create a payment intent

POST /restaurants/{restaurantId}/intents

Creates a payment intent and returns the secret the guest uses to confirm the payment on their side (in the payment widget). Used when taking a deposit/prepayment.

ParameterInTypeDescription
restaurantId *pathintegerRestaurant identifier

Response — IntentSecretContract

FieldTypeDescription
secretstringClient secret for confirming the payment
paymentMethodobject GuestPaymentMethodPayment method (enum: 0, 1)
Terminal window
curl -X POST https://api.hostmeapp.com/api/core/payment/restaurants/123/intents \
-H "Authorization: Bearer $TOKEN"

The returned secret matches the intentClientSecret field in BookingContract and is used by the guest-facing frontend to complete the payment.


Refund a deposit

POST /restaurants/{restaurantId}/reservations/{reservationId}/refund

Refunds the deposit (in full or in part) for a specific reservation. The refund amount is set in the request body; the response is the updated reservation.

ParameterInTypeDescription
restaurantId *pathstringRestaurant identifier
reservationId *pathstringReservation identifier

Body — PaymentRefundContract

FieldTypeDescription
amountnumberRefund amount
Terminal window
curl -X POST https://api.hostmeapp.com/api/core/payment/restaurants/123/reservations/RID/refund \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{ "amount": 25.00 }'

Response. The updated reservation (BookingContract) is returned — check the depositStatus, receiptAmount and details.paymentError fields to confirm the refund succeeded. For the full BookingContract structure, see Reservations.


Restaurant payment cards

Cards are used to pay for the restaurant’s own subscription and service charges.

List cards

GET /restaurants/{restaurantId}/cards

Returns an array of PaymentCard cards.

FieldTypeDescription
idstringCard identifier
namestringName/holder
brandstringCard network (Visa, Mastercard, …)
last4stringLast 4 digits
expirationMonthintegerExpiration month
expirationYearintegerExpiration year
isDefaultbooleanDefault card
Terminal window
curl https://api.hostmeapp.com/api/core/payment/restaurants/123/cards \
-H "Authorization: Bearer $TOKEN"

Attach a card

POST /restaurants/{restaurantId}/cards

Body — TokenContract: tokenized card data.

FieldTypeDescription
valuestringCard payment token
emailstringPayer’s email
fullNamestringCardholder name
Terminal window
curl -X POST https://api.hostmeapp.com/api/core/payment/restaurants/123/cards \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{ "value": "tok_ABC_ID", "email": "owner@example.com", "fullName": "John Parker" }'

Default card

PUT /restaurants/{restaurantId}/cards/{cardId}

Makes the specified card the default.

ParameterInType
restaurantId *pathinteger
cardId *pathstring

Remove a card

DELETE /restaurants/{restaurantId}/cards/{cardId}

Detaches the card from the restaurant.

ParameterInType
restaurantId *pathinteger
cardId *pathstring

Charge history

GET /restaurants/{restaurantId}/charges

Returns a paginated list of charges.

ParameterInTypeDescription
restaurantId *pathintegerRestaurant identifier
skipqueryintegerNumber of records to skip
takequeryintegerNumber of records to return
Terminal window
curl -G https://api.hostmeapp.com/api/core/payment/restaurants/123/charges \
-H "Authorization: Bearer $TOKEN" \
--data-urlencode "skip=0" \
--data-urlencode "take=20"

The exact schema of the successful response (200) is not fixed in the specification — the charge structure is returned by the payment system.


Pricing plans and restaurant subscription

This group of endpoints manages the restaurant’s own Hostme subscription (plans, sign-up, cancellation). Most partner integrations do not need it.

List plans

GET /restaurants/{restaurantId}/plans

Returns an array of PaymentPlanContract.

FieldTypeDescription
idstringPlan identifier
namestringName
currencystringCurrency
amountintegerPrice
intervalstringBilling interval
intervalCountintegerNumber of intervals
statusstringPlan status
liveModebooleanLive mode (not test)
trialPeriodDaysintegerTrial period, days
createddate-timeCreation date
metadataobject ExtraPlanDataExtra plan data: appId, features, price, discount, pos, mailing, etc.
Terminal window
curl https://api.hostmeapp.com/api/core/payment/restaurants/123/plans \
-H "Authorization: Bearer $TOKEN"

Plan by ID

GET /restaurants/{restaurantId}/plans/{planId}

Returns a single plan by identifier (planId — path).

Email a plan

POST /restaurants/{restaurantId}/plans/{planId}/email

Body — PaymentPlanMailContract: { "email": "..." }. Sends the plan description to the given address.

Subscribe

POST /restaurants/{restaurantId}/subscriptions

Body — PaymentCreateSubscriptionContract.

FieldTypeDescription
planIdstringPricing plan identifier
couponIdstringCoupon/discount
fullNamestringPayer’s name
emailstringEmail
intentIdstringPayment intent identifier
paymentCustomerIdstringPayer identifier
Terminal window
curl -X POST https://api.hostmeapp.com/api/core/payment/restaurants/123/subscriptions \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{ "planId": "plan_ABC_ID", "fullName": "John Parker", "email": "owner@example.com" }'

Current subscriptions

GET /restaurants/{restaurantId}/subscriptions

Returns the restaurant’s subscriptions.

Subscription usage

GET /restaurants/{restaurantId}/subscription/usage

Returns usage data within the subscription (quotas, consumption).

Cancel a subscription

DELETE /restaurants/{restaurantId}/subscriptions/{subscriptionId}

Body — CancelationReasonContract.

FieldTypeDescription
reasonstringCancellation reason
newVendorNamestringName of the new vendor (if switching)
customReasonMessagestringFree-form comment

Cancellation feedback

POST /restaurants/{restaurantId}/subscriptions/{subscriptionId}/feedback

Body — CancelationFeedbackContract: experience, customExperienceMessage. Collects feedback after a subscription is cancelled.

Payment reminder

POST /restaurants/{restaurantId}/remind

Sends a reminder that the subscription payment is due.


Miscellaneous

  • POST /restaurants/{restaurantId}/accounts — create a payment account (body — TokenContract: value, email, fullName).
  • GET /restaurants/{restaurantId}/customer — the restaurant’s payer details.
  • DELETE /restaurants/{restaurantId}/customer — delete the payer.

The POST /payment/events and POST /payment/events/{appId} endpoints are service webhooks of the payment system; partner integrations do not call them directly.


General request rules and error codes are in Conventions and Errors. Payment fields within a reservation are described in Reservations.