Skip to content

Retrieve a payment

GET
/v1/payments/{id}

For a payment that is still pending and is not a refund, client_secret and provider_status are read from Stripe at request time. Both are null, and the answer is still a 200, when Stripe did not answer: everything else here comes from our own row.

id
required

Identifier of the payment.

string
Bookrail-Version

The dated API version to speak. Defaults to 2026-09-01; an unsupported value is a 400.

string
Example
2026-09-01
Bookrail-Actor

Which Bookrail tool the caller is, recorded as actor.via on every event the request writes. A closed list: an unknown value is a 400. Absent means the request declared no tool.

string
Allowed values: mcp cli sdk dashboard

Success.

object
id
required

Identifier of a payment, prefixed with pay_.

string
/^pay_[0-9a-f]{32}$/
Example
pay_0198f0c2a1b47e2e9a1c0f4d5e6a7b8c
object
required
string
Allowed values: payment
booking_id
required

Identifier of a booking, prefixed with bk_.

string | null
/^bk_[0-9a-f]{32}$/
Example
bk_0198f0c2a1b47e2e9a1c0f4d5e6a7b8c
type
required
string
Allowed values: deposit full balance no_show_fee refund
status
required

pending covers every Stripe state that is not final: requires_payment_method, requires_action, processing. Read provider_status for the detail.

string
Allowed values: pending succeeded failed refunded cancelled
amount
required
integer
currency
required
string
amount_refunded
required

How much of this payment has come back, cumulative.

integer
provider
required
string
Allowed values: stripe
provider_payment_id
required

pi_... for a payment, re_... for a refund. null until Stripe answered.

string | null
provider_account_id
required
string
Example
acct_1234567890
parent_payment_id
required

For a refund: the payment it gives back.

string | null
/^pay_[0-9a-f]{32}$/
Example
pay_0198f0c2a1b47e2e9a1c0f4d5e6a7b8c
failure_code
required
string | null
failure_message
required
string | null
client_secret
required

Read from Stripe, only for a pending payment. null on a list, on a refund, and when Stripe did not answer.

string | null
provider_status
required

Stripe’s own status for the intent, read at request time. null as above.

string | null
metadata
required

Free-form key/value pairs stored with the object and returned untouched.

object
key
additional properties
environment
required

The environment of the API key that created the object.

string
Allowed values: test live
created_at
required

ISO 8601 instant in UTC.

string | null format: date-time
Example
2026-09-08T07:00:00Z
updated_at
required

ISO 8601 instant in UTC.

string | null format: date-time
Example
2026-09-08T07:00:00Z
Bookrail-Request-Id
required
string

Identifier of this request. Quote it to support.

Bookrail-Version
required
string

The API version this response was produced with.

RateLimit-Limit
string

Requests this key may have in flight at one instant: the burst of its policy.

RateLimit-Remaining
string

Requests this key may still make right now, as a whole number.

RateLimit-Reset
string

Whole seconds until RateLimit-Remaining is back at RateLimit-Limit.

RateLimit-Policy
string

unavailable when no limit could be applied to this request, because the store that holds the counters did not answer. The three counters are then absent and the request was served.

Bookrail-Plan-Usage
string

<confirmed>/<included>: the confirmed live bookings of the account this month, over the ones its plan includes, as they stood when this request started. On responses to live keys only, and absent for a plan whose included bookings are negotiated and for a key scoped to a tenant.

Error codes: parameter_invalid, unsupported_api_version.

object
error
required
object
type
required
string
Allowed values: invalid_request authentication permission not_found conflict rate_limit policy_violation payment_required internal
code
required

Machine readable code. The set is per operation; each response below lists the ones it can produce.

string
message
required
string
param

The field or header the error is about, when there is one.

string
fix

What to do next, when there is one thing to do. Present on the errors that are about the state of the deployment rather than about the request.

string
doc_url
required
string
request_id
required
string
Bookrail-Request-Id
required
string

Identifier of this request. Quote it to support.

Bookrail-Version
required
string

The API version this response was produced with.

RateLimit-Limit
string

Requests this key may have in flight at one instant: the burst of its policy.

RateLimit-Remaining
string

Requests this key may still make right now, as a whole number.

RateLimit-Reset
string

Whole seconds until RateLimit-Remaining is back at RateLimit-Limit.

RateLimit-Policy
string

unavailable when no limit could be applied to this request, because the store that holds the counters did not answer. The three counters are then absent and the request was served.

Bookrail-Plan-Usage
string

<confirmed>/<included>: the confirmed live bookings of the account this month, over the ones its plan includes, as they stood when this request started. On responses to live keys only, and absent for a plan whose included bookings are negotiated and for a key scoped to a tenant.

Error codes: invalid_api_key, invalid_authorization_header, missing_api_key, revoked_api_key.

object
error
required
object
type
required
string
Allowed values: invalid_request authentication permission not_found conflict rate_limit policy_violation payment_required internal
code
required

Machine readable code. The set is per operation; each response below lists the ones it can produce.

string
message
required
string
param

The field or header the error is about, when there is one.

string
fix

What to do next, when there is one thing to do. Present on the errors that are about the state of the deployment rather than about the request.

string
doc_url
required
string
request_id
required
string
Bookrail-Request-Id
required
string

Identifier of this request. Quote it to support.

Bookrail-Version
required
string

The API version this response was produced with.

RateLimit-Limit
string

Requests this key may have in flight at one instant: the burst of its policy.

RateLimit-Remaining
string

Requests this key may still make right now, as a whole number.

RateLimit-Reset
string

Whole seconds until RateLimit-Remaining is back at RateLimit-Limit.

RateLimit-Policy
string

unavailable when no limit could be applied to this request, because the store that holds the counters did not answer. The three counters are then absent and the request was served.

Bookrail-Plan-Usage
string

<confirmed>/<included>: the confirmed live bookings of the account this month, over the ones its plan includes, as they stood when this request started. On responses to live keys only, and absent for a plan whose included bookings are negotiated and for a key scoped to a tenant.

Error codes: resource_missing.

object
error
required
object
type
required
string
Allowed values: invalid_request authentication permission not_found conflict rate_limit policy_violation payment_required internal
code
required

Machine readable code. The set is per operation; each response below lists the ones it can produce.

string
message
required
string
param

The field or header the error is about, when there is one.

string
fix

What to do next, when there is one thing to do. Present on the errors that are about the state of the deployment rather than about the request.

string
doc_url
required
string
request_id
required
string
Bookrail-Request-Id
required
string

Identifier of this request. Quote it to support.

Bookrail-Version
required
string

The API version this response was produced with.

RateLimit-Limit
string

Requests this key may have in flight at one instant: the burst of its policy.

RateLimit-Remaining
string

Requests this key may still make right now, as a whole number.

RateLimit-Reset
string

Whole seconds until RateLimit-Remaining is back at RateLimit-Limit.

RateLimit-Policy
string

unavailable when no limit could be applied to this request, because the store that holds the counters did not answer. The three counters are then absent and the request was served.

Bookrail-Plan-Usage
string

<confirmed>/<included>: the confirmed live bookings of the account this month, over the ones its plan includes, as they stood when this request started. On responses to live keys only, and absent for a plan whose included bookings are negotiated and for a key scoped to a tenant.

Error codes: rate_limited.

object
error
required
object
type
required
string
Allowed values: invalid_request authentication permission not_found conflict rate_limit policy_violation payment_required internal
code
required

Machine readable code. The set is per operation; each response below lists the ones it can produce.

string
message
required
string
param

The field or header the error is about, when there is one.

string
fix

What to do next, when there is one thing to do. Present on the errors that are about the state of the deployment rather than about the request.

string
doc_url
required
string
request_id
required
string
Bookrail-Request-Id
required
string

Identifier of this request. Quote it to support.

Bookrail-Version
required
string

The API version this response was produced with.

RateLimit-Limit
string

Requests this key may have in flight at one instant: the burst of its policy.

RateLimit-Remaining
string

Requests this key may still make right now, as a whole number.

RateLimit-Reset
string

Whole seconds until RateLimit-Remaining is back at RateLimit-Limit.

RateLimit-Policy
string

unavailable when no limit could be applied to this request, because the store that holds the counters did not answer. The three counters are then absent and the request was served.

Bookrail-Plan-Usage
string

<confirmed>/<included>: the confirmed live bookings of the account this month, over the ones its plan includes, as they stood when this request started. On responses to live keys only, and absent for a plan whose included bookings are negotiated and for a key scoped to a tenant.

Retry-After
string

Whole seconds to wait before sending this request again. At least 1.

Error codes: internal_error.

object
error
required
object
type
required
string
Allowed values: invalid_request authentication permission not_found conflict rate_limit policy_violation payment_required internal
code
required

Machine readable code. The set is per operation; each response below lists the ones it can produce.

string
message
required
string
param

The field or header the error is about, when there is one.

string
fix

What to do next, when there is one thing to do. Present on the errors that are about the state of the deployment rather than about the request.

string
doc_url
required
string
request_id
required
string
Bookrail-Request-Id
required
string

Identifier of this request. Quote it to support.

Bookrail-Version
required
string

The API version this response was produced with.

RateLimit-Limit
string

Requests this key may have in flight at one instant: the burst of its policy.

RateLimit-Remaining
string

Requests this key may still make right now, as a whole number.

RateLimit-Reset
string

Whole seconds until RateLimit-Remaining is back at RateLimit-Limit.

RateLimit-Policy
string

unavailable when no limit could be applied to this request, because the store that holds the counters did not answer. The three counters are then absent and the request was served.

Bookrail-Plan-Usage
string

<confirmed>/<included>: the confirmed live bookings of the account this month, over the ones its plan includes, as they stood when this request started. On responses to live keys only, and absent for a plan whose included bookings are negotiated and for a key scoped to a tenant.

Error codes: stripe_not_configured.

object
error
required
object
type
required
string
Allowed values: invalid_request authentication permission not_found conflict rate_limit policy_violation payment_required internal
code
required

Machine readable code. The set is per operation; each response below lists the ones it can produce.

string
message
required
string
param

The field or header the error is about, when there is one.

string
fix

What to do next, when there is one thing to do. Present on the errors that are about the state of the deployment rather than about the request.

string
doc_url
required
string
request_id
required
string
Bookrail-Request-Id
required
string

Identifier of this request. Quote it to support.

Bookrail-Version
required
string

The API version this response was produced with.

RateLimit-Limit
string

Requests this key may have in flight at one instant: the burst of its policy.

RateLimit-Remaining
string

Requests this key may still make right now, as a whole number.

RateLimit-Reset
string

Whole seconds until RateLimit-Remaining is back at RateLimit-Limit.

RateLimit-Policy
string

unavailable when no limit could be applied to this request, because the store that holds the counters did not answer. The three counters are then absent and the request was served.

Bookrail-Plan-Usage
string

<confirmed>/<included>: the confirmed live bookings of the account this month, over the ones its plan includes, as they stood when this request started. On responses to live keys only, and absent for a plan whose included bookings are negotiated and for a key scoped to a tenant.