Search Payment dispute
const url = 'https://api.aerandil.com/v1/object-types/hospitality.payment_dispute/search';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"branch":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","cursor":"example","filters":[{"property":"id","type":"eq","value":"example"}],"limit":1,"order":"asc","property_id":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","scope":{"level":"tenant"},"sort_by":"created_at"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.aerandil.com/v1/object-types/hospitality.payment_dispute/search \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "branch": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "cursor": "example", "filters": [ { "property": "id", "type": "eq", "value": "example" } ], "limit": 1, "order": "asc", "property_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "scope": { "level": "tenant" }, "sort_by": "created_at" }'Search for instances. Filters eq, contains, gte and lte AND-compose; or / not are additive follow-ups. Pages with an opaque cursor; the +1 fetch returns has_more without a second round-trip. Ordered by sort_by (default created_at) in order (default ascending), id breaking ties; rows with no value for a property key sort last.
A chargeback or pre-dispute inquiry raised against a settled payment. Mirrored from the processor, which mirrors the card network — the kernel never decides a dispute’s state, it records one. The money moves at opened_at (withdrawn) and again at closed_at if the case is won; between those the funds are held by the network and the payment cannot be refunded outside the dispute process.
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”object
Optional open-branch id. Search composes that branch’s copy-on-first-write overlay instead of main, so a preview reads its own hypothetical writes. Omit to read main.
Opaque cursor from a prior response’s next_cursor. Pass back verbatim; do not introspect.
Conjunctive list of predicates. Empty or omitted matches every row in scope, capped by limit.
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
- object
object
object
Case-insensitive substring needle.
object
object
object
object
Case-insensitive substring needle.
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
Case-insensitive substring needle.
object
object
object
object
object
object
object
object
object
object
Case-insensitive substring needle.
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
Case-insensitive substring needle.
object
object
object
object
object
object
object
object
object
object
object
object
Case-insensitive substring needle.
object
object
object
object
Case-insensitive substring needle.
object
object
object
object
Case-insensitive substring needle.
object
object
object
object
Case-insensitive substring needle.
object
object
object
object
Case-insensitive substring needle.
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
Case-insensitive substring needle.
object
object
object
object
object
object
object
Case-insensitive substring needle.
object
object
object
object
Case-insensitive substring needle.
object
object
object
object
object
Case-insensitive substring needle.
object
object
object
object
Case-insensitive substring needle.
object
object
object
object
object
object
Case-insensitive substring needle.
object
object
object
Case-insensitive substring needle.
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
Page size. Server defaults to 50, silently clamps at 500 (AIP-158 §3).
Direction of sort_by: asc (oldest / smallest first) or desc. A cursor is bound to the sort_by and order it was minted under; another pair is refused (422).
The house a desk stands in: keeps this property’s rows (property- or venue-scoped there) and every row scoped to no property (tenant, brand, portfolio), and drops a sibling house’s — the meaning property_id has on the event tail.
object
object
object
object
object
What the page is ordered by: the row’s created_at or updated_at, or a property whose type orders — strings, enums and dates as text, ints, decimals and durations as numbers, datetimes as instants. Rows with no value sort last in either direction. A property the caller is not cleared to read is refused (403).
Responses
Section titled “Responses”Search results, ordered by (sort_by, id) in the requested order (ascending by default).
object
object
object
Disputed amount
object
What the processor charged for the case, net of any fee it returned — Stripe’s dispute fee, read off the dispute’s balance transactions (the countered fee comes back on a win; the received fee never does). On a hotel’s own account it is passed to the hotel at cost when the case is lost — its own transfer reversal beside the disputed amount, and what the transfer cannot carry debited from the hotel’s Stripe balance; dispute_fee_recovered says what was. On the platform’s, it stays the platform’s.
object
What of the dispute fee could not be taken yet — present only while some is owed
object
What of the dispute fee the hotel was charged: off its transfer and debited from its Stripe balance
object
What of the network’s fees the platform did not pass to the hotel on a certified case it lost — both fees, received and countered. Never paid to the hotel: the platform declined to recover it
object
What of the dispute fee was still owed after the last retry and is carried by the platform
object
The files the submission attached, one per evidence type, as the processor’s file ids (Stripe file_…, uploaded with purpose dispute_evidence)
object
What goes back to the hotel after a late win — the disputed amount the loss pulled back plus the dispute fee passed on to it
object
Of hotel_reinstated, the dispute fee the hotel had been charged
object
What was netted out of hotel_reinstated: the platform’s application fee the processor refunded to the hotel with the loss’s reversal (read off the processor’s fee refunds, never the ledger). The hotel already had it back, so the late win returns the reversal net of it and the hotel ends where it was before the dispute — the charge less the platform’s fee
object
Of what a late win left for the operator owed the hotel, what the operator wrote off rather than paid — hotel_reinstated is what did go back
object
The net of every platform balance transaction for the case — the network’s withdrawal of the amount and its fee, a reinstatement on a win, what the card rail recovered from the hotel (the amount’s reversal, the fee’s reversal or debit), money returned to the hotel after a late win — negated, so a cost is positive and a case fully passed through is zero. Written by record_platform_dispute_cost from the case’s platform lines. The received fee Stripe never returns is what a won case leaves here.
object
The account’s waiver cap when the case was certified: 25% of the platform fees it paid over the rolling year, net of fees refunded. A case is covered while its own two fees fit under it beside what is taken (waiver_cap_used + 2 × the fee received ≤ the cap), or while fewer cases than the floor of five (waiver_cap_case_floor) have taken it, whatever the fees
object
What of the account’s waiver cap was taken when the case was certified: the fees waived on its cases lost in the rolling year, plus the fees withdrawn so far on its certified cases still open — in the currency of the case’s fee
object
What a certified case holds of the account’s waiver cap while it is open: both of the network’s fees as priced at certification — twice the fee Stripe took when the case was received, or twice the last received fee seen at the account when the case carried none. Absent on a case not covered
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
Cursor for the next page; omitted when the result set is exhausted.
Example
{ "data": [ { "object_type": "hospitality.payment_dispute", "properties": { "dispute_fee_recovery": "recovered", "evidence_files": [ { "evidence_type": "receipt" } ], "hotel_reinstatement": "transferred", "hotel_reinstatement_settlement": "transferred_by_hand", "reason": "bank_cannot_process", "status": "inquiry_needs_response", "visa_ce3_required_actions": [ "missing_customer_identifiers" ], "visa_ce3_status": "requires_action", "waiver_refusal_condition": "evidence_gaps" }, "scope": { "level": "tenant" } } ]}Validation error — unknown property or filter type mismatch.