Create a payment on a booking

POST
/bookings/{booking_id}/payments

Creates a payment for a booking.

This endpoint requires a payment_method_type; other required body params depend on the selected payment method type. For payment_method_type: "terminal_reader", terminal_reader_id, and amount are required. The terminal reader must have been previously set up and connected to the booking's company. amount must match the booking balance; currency is inferred from the booking. Partial payments are not supported for this flow.

Validation failures return a 422 response with one of these error.code values: amount_mismatch, terminal_reader_required, amount_below_stripe_minimum, unsupported_payment_method_type, terminal_reader_offline, booking_not_payable, payment_strategy_missing, guest_allocation_incomplete, or idempotency_key_required.

Payment confirmation is asynchronous. Use the returned Easol payment ID to poll GET /payments/{id} until the payment state becomes charged, failed, or cancelled. Charged payments may include card details for display.

Path Parameters

booking_id*string

Booking prefixed ID (e.g. bk_mR2nL5pW)

Header Parameters

Idempotency-Key*string

Client-generated key for idempotent writes; the server deduplicates retries within a 24-hour window.

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

payment_method_type*string

Payment flow to initiate. Currently only terminal_reader is supported.

Value in"terminal_reader"
terminal_reader_id*string

Prefixed terminal reader ID to send the payment to (e.g. trdr_xxx). Required when payment_method_type is terminal_reader. The reader must have been previously set up and connected to the booking's company.

amount*integer

Amount to collect in the minor currency unit. Must match the booking balance amount.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/bookings/string/payments" \  -H "Easol-API-Version: 2026-11-01" \  -H "Idempotency-Key: a1b2c3d4-e5f6-7890-abcd-ef1234567890" \  -H "Content-Type: application/json" \  -d '{    "payment_method_type": "terminal_reader",    "terminal_reader_id": "string",    "amount": 0  }'
{
  "object": "string",
  "id": "string",
  "state": "pending",
  "amount": {
    "amount": 0,
    "currency": "string"
  },
  "payment_method_type": "terminal_reader",
  "initiated_at": "2019-08-24T14:15:22Z",
  "charged_at": "2019-08-24T14:15:22Z",
  "card_brand": "string",
  "card_last_four": "string",
  "card_region": "domestic",
  "booking": "string",
  "terminal_reader": "string"
}
{
  "error": {
    "code": "string",
    "message": "string"
  }
}
{
  "error": {
    "code": "string",
    "message": "string"
  }
}
{
  "error": {
    "code": "string",
    "message": "string"
  }
}
{
  "error": {
    "code": "string",
    "message": "string"
  }
}
{
  "error": {
    "code": "string",
    "message": "string"
  }
}