Read what the hotel paid for card processing in a month
const url = 'https://api.aerandil.com/v1/merchant-accounts/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/processing-fees?month=example';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/merchant-accounts/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/processing-fees?month=example' \ --header 'Authorization: Bearer <token>'What the hotel paid the platform for card processing in the house’s calendar month, per currency: the application fees Stripe took on the account’s charges (under the pricing decision, Stripe’s published rate for the card’s class plus 0.40%), net of the fees a refund handed back, and how many card payments paid one — read off the platform’s own balance transactions (platform_ledger_line), the same fold as the night-audit close’s platform.processing_fees, so the month is the sum of its days. Never the processor’s actual fee, the variance or the margin: those are the operator’s (/platform-earnings). The general manager’s read (analytics:read, from a desk shift at the house — another house’s account is a 403 property_out_of_scope) or the operator’s (tenant_admin:write).
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”The property’s merchant account.
Query Parameters
Section titled “Query Parameters”The house’s calendar month, YYYY-MM.
Responses
Section titled “Responses”The month’s card processing fees on the account.
object
object
Card payments that paid an application fee.
The application fees paid, net of fees refunded.
Examplegenerated
{ "from": "2026-04-15", "merchant_account_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "month": "example", "processing_fees": [ { "charges": 1, "currency": "example", "total": "example" } ], "property_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "to": "2026-04-15"}Headers
Section titled “Headers”Always no-store. Object and link state is live data and is never cacheable.
The bearer authenticated but does not hold the scope this operation requires.
Structured error wrapper. Every non-2xx response from any Aerandil endpoint serialises to this shape; the HTTP status carries the failure class (4xx/5xx), the body adds a stable code for programmatic dispatch plus a human-readable message.
object
object
Stable, programmatic error code (e.g. unauthorized, forbidden, not_found, invalid_body, invalid_url, precondition_failed, no_secondary_key). Clients dispatch on code, not on the message (which may be localised or contextualised in future versions).
Request-id correlation handle echoed on the request-id response header — support teams correlate without scraping logs.
Human-readable explanation of the failure.
Per-error structured detail. The shape varies by code (e.g. forbidden_action carries {"action": "..."}; precondition_failed carries {"current_version": N}).
Examplegenerated
{ "error": { "code": "example", "instance_id": "example", "message": "example", "parameters": "example" }}No such object in the caller’s tenant — which is also the answer when it exists in another tenant, by design.
Structured error wrapper. Every non-2xx response from any Aerandil endpoint serialises to this shape; the HTTP status carries the failure class (4xx/5xx), the body adds a stable code for programmatic dispatch plus a human-readable message.
object
object
Stable, programmatic error code (e.g. unauthorized, forbidden, not_found, invalid_body, invalid_url, precondition_failed, no_secondary_key). Clients dispatch on code, not on the message (which may be localised or contextualised in future versions).
Request-id correlation handle echoed on the request-id response header — support teams correlate without scraping logs.
Human-readable explanation of the failure.
Per-error structured detail. The shape varies by code (e.g. forbidden_action carries {"action": "..."}; precondition_failed carries {"current_version": N}).
Examplegenerated
{ "error": { "code": "example", "instance_id": "example", "message": "example", "parameters": "example" }}month is missing or not YYYY-MM.
Structured error wrapper. Every non-2xx response from any Aerandil endpoint serialises to this shape; the HTTP status carries the failure class (4xx/5xx), the body adds a stable code for programmatic dispatch plus a human-readable message.
object
object
Stable, programmatic error code (e.g. unauthorized, forbidden, not_found, invalid_body, invalid_url, precondition_failed, no_secondary_key). Clients dispatch on code, not on the message (which may be localised or contextualised in future versions).
Request-id correlation handle echoed on the request-id response header — support teams correlate without scraping logs.
Human-readable explanation of the failure.
Per-error structured detail. The shape varies by code (e.g. forbidden_action carries {"action": "..."}; precondition_failed carries {"current_version": N}).
Examplegenerated
{ "error": { "code": "example", "instance_id": "example", "message": "example", "parameters": "example" }}