Read Payment
const url = 'https://api.aerandil.com/v1/object-types/hospitality.payment/objects/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://api.aerandil.com/v1/object-types/hospitality.payment/objects/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0 \ --header 'Authorization: Bearer <token>'Read an existing instance.
A payment applied to a folio. Settles charges. Refunds are recorded as a separate negative-amount Payment row linked to the original settled payment via payment_refunds_payment and carrying payment_kind = refund per proposal 0019. The original settled Payment row stays immutable — status = settled is the evidence that money was captured, and partial-refund / multiple-refund state is derived from the linked refund legs rather than by rewriting the source row.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Object id (UUID v7, server-generated at create time).
Query Parameters
Section titled “Query Parameters”Read through an open branch’s copy-on-first-write overlay view instead of the canonical (main) plane. Does not compose with as_of (422). The branch must exist under the caller’s tenant.
Responses
Section titled “Responses”Object found.
object
object
Amount
object
Set by record_page_fee on a payment a hosted page took: refunded (the difference to the card’s own class was refunded), not_due (nothing to give back), refused (the processor refused the refund; the hotel paid the ceiling, fee_true_up_detail says why, and the operator’s variance shows it). Absent on every other payment.
The processor’s id for the application-fee refund the page’s true-up made (Stripe fr_…).
Set when an issuer flags this payment as suspected fraud (an early fraud warning: Visa’s TC40, Mastercard’s SAFE report). About 40% of Visa and Mastercard warnings become fraud disputes when the charge is not refunded, and Visa’s VAMP counts the warning itself whatever happens next. Absent on a payment no issuer has flagged.
Stripe’s issfr_… for the early fraud warning an issuer raised on this payment’s charge — the join key for every later report about the same warning.
Decided once, from the stay, when the warning first arrives: hold_voided (an uncaptured hold released before capture — the cardholder cannot dispute it), refunded (a captured line after the stay at or under the house’s ceiling, refunded in full), desk_review (a deposit before arrival, a stay in house, a line above the ceiling, or a release or refund the ledger refused — a person decides), not_actionable (already disputed or refunded, or nothing left to act on).
Set on a pending card hold when its stay checks out: release (the card rail voids it), capture (the bill still owed money — the rail takes that from the hold, which lets the rest go), or keep (the house’s post-stay window is on; the hold stays for charges found after departure until hold_kept_until). Absent on a hold no departure has decided.
Set on a card hold when it is placed: booking (the guarantee before arrival — the pay page’s hold, or a desk hold on the booking’s own account), check_in (the desk’s hold on the stay’s folio), top_up, re_placement (the card rail renewing a booking hold before the issuer lapses it), incidentals, no_show, post_stay, or other. A hold carried from the booking onto the stay at check-in keeps booking. Absent on a payment taken in one step.
What the transfer to the hotel carried less the application fee the platform took back, net of any transfer reversal or fee refund a refund made — the platform’s balance transactions for the payment, folded by record_processor_fee. Equals the hotel’s own payout line for the charge (amount less fee). Chargeback movements are the case’s (platform_dispute_cost), not counted here.
object
The platform’s fee on this card payment as the account’s fee schedule priced it for the card’s class (fee_class, card_present) — the processor’s application_fee_amount, set when the money was taken, on what was taken. Absent on a payment that settled to the platform’s own account.
object
What of the platform’s fee the card rail refunded to the hotel when the hosted page this payment came from completed: the link fixed its fee at the account’s dearest card class (payment_request.page_fee_ceiling), and the difference to the class of the card the guest paid with went back as an application-fee refund. platform_fee is what the platform kept. Zero when nothing was due or the refund was refused (fee_true_up). In the payment’s currency.
object
Stripe’s actual processing fee on the payment’s charge, read off the platform’s balance transaction for it (its fee; a partial capture’s reversal line counted in) by record_processor_fee. On a destination charge the fee is the platform’s, recouped through the application fee — processor_fee beside processor_fee_estimate is the variance the pricing decision reports per account per month; the hotel is never trued up. In the platform’s balance currency.
object
The processor’s published rate for the card’s class on what was taken (its conversion fee added when the charge’s currency is not the schedule’s) — the estimate processor_fee is read back against. In the charge’s currency.
object
Per-property source attribution and pins. An entry under properties means the property’s current value came from that source (on the source’s own clock, source_updated_at); an entry under pins is a human override protecting the property from sourced writes.
object
object
object
object
object
object
object
object
object
object
object
Example
{ "object_type": "hospitality.payment", "properties": { "authentication_outcome": "frictionless", "fee_class": "domestic_standard", "fee_true_up": "refunded", "fraud_warning_response": "hold_voided", "fraud_warning_stay_phase": "before_arrival", "fraud_warning_type": "card_never_received", "hold_decision": "release", "hold_outcome": "released", "hold_purpose": "booking", "liability_shift_basis": "three_ds2_authenticated", "method": "cash", "payment_kind": "payment", "refund_reason": "duplicate", "refund_trace_reference_type": "arn", "review_state": "not_required", "sca_exemption_claimed": "none", "status": "pending", "void_reason": "duplicate" }, "scope": { "level": "tenant" }}Headers
Section titled “Headers”Quoted strong validator (RFC 7232 §2.3) carrying the object’s monotonic version. Informational on the read path — object mutation goes through typed actions on /v1/actions/{action}/apply, not raw CRUD.
No object with that id (or soft-deleted).