Skip to content

Read Merchant account

GET
/v1/object-types/hospitality.merchant_account/objects/{id}
curl --request GET \
--url https://api.aerandil.com/v1/object-types/hospitality.merchant_account/objects/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0 \
--header 'Authorization: Bearer <token>'

Read an existing instance.

A property’s own account at the payment processor, opened under the platform’s (Stripe Connect). While one is active, the property’s card payments settle to it — the hotel is the merchant the guest’s statement names, its payouts go to its own bank — and the platform’s fee is taken from each payment. A property with no open account takes card payments on the platform’s own account. Verification is the processor’s: the account is onboarding until the hotel has submitted its details, then active or restricted as the processor decides.

id
required
string format: uuid

Object id (UUID v7, server-generated at create time).

branch
string format: uuid

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.

Object found.

Media typeapplication/json
object
created_at
required
string format: date-time
id
required
string format: uuid
object_type
required
Allowed value: hospitality.merchant_account
properties
required
object
cards_exported_at
When the platform operator last pulled this account's stored cards for the hotel's next processor (the Leaving policy's card export)
string format: date-time
cards_exported_count
How many stored cards that export carried — the cards that name this account, are active and are on the processor
integer
charges_enabled
required
Whether the processor lets the account take card payments
boolean
closed_at
When the account was closed
string format: date-time
country
required
Country the hotel trades in (ISO 3166-1 alpha-2) — fixed at opening, because the processor fixes it too
string
details_submitted
required
Whether the hotel has finished the processor's onboarding form
boolean
disabled_reason
The processor's reason the account cannot take charges, when it gives one
string
external_account_disabled
Whether the processor has disabled the bank account it pays out to (after a failed payout); no payout lands until the hotel replaces it
boolean
external_account_disabled_ids
The processor's ids of the default bank accounts it has disabled (`ba_…`, one per currency at most); `external_account_disabled` is whether there are any
Array<string>
external_account_disabled_reason
The processor's status for that bank account (`errored`, `verification_failed`) when it is disabled
string
external_account_observed_at
When the bank account's state was read — the watermark an out-of-order webhook is checked against
string format: date-time
fee_conversion_bps
required
The processor's currency-conversion fee in basis points (Stripe: 2%), counted in the estimate of the processor's fee on a charge in a currency other than the schedule's
integer
fee_schedule
required
Merchant account fee schedule

The platform’s fee on each card payment settled to this account, by the card’s class: one row for each of domestic_standard, domestic_premium, regional and international, online and card-present — the basis points and fixed fee the hotel pays (bps, fixed) beside the processor’s own published rate for that class (processor_bps, processor_fixed), which is what the platform’s estimate of the processor’s fee uses. Taken when the money is captured, on the amount captured, rounded down. The fixed fees’ currency is the schedule’s: a charge in another currency carries no fixed fee.

Array<object>
object
bps
required
integer
card_present
required
boolean
fee_class
required
string
Allowed values: domestic_standard domestic_premium regional international
fixed
required
object
amount
required
string format: decimal
currency
required
string format: iso-4217
processor_bps
required
integer
processor_fixed
required
object
amount
required
string format: decimal
currency
required
string format: iso-4217
id
required
Merchant account id
string
onboarding_link_expires_at
When the hotel's current onboarding refresh link stops working
string format: date-time
onboarding_link_nonce_hash
SHA-256 of the one-use secret in the hotel's current onboarding refresh link — the link that mints a fresh Stripe onboarding link without a sign-in
string
opened_at
required
When the account was opened
string format: date-time
payout_anchor
The day a weekly payout goes (`monday` … `sunday`) or a monthly one (its day of the month, `1` … `31`); absent for daily and manual payouts
string
payout_anchor_before
The weekly or monthly anchor before the last change, if it had one
string
payout_delay_days
How many days the processor holds a payment before it can be paid out (Stripe's `delay_days`; calendar or business days by the account's country)
integer
payout_delay_days_before
The payout delay before the last change, if it had one
integer
payout_interval
How often the processor pays the balance out, in its own words (Stripe: `daily`, `weekly`, `monthly`, or `manual` — paid out only on request)
string
payout_interval_before
The payout interval before the last change, if it had one
string
payout_schedule_changed_at
When the processor last changed this account's payout schedule (the first schedule read is a report, not a change)
string format: date-time
payouts_enabled
required
Whether the processor will pay the account's balance out to the hotel's bank
boolean
provider
required
Processor that holds the account (`stripe`)
string
provider_account_ref
required
The processor's id for the account (Stripe `acct_…`). An identifier, not a credential: nothing can be done with it without the platform's own key.
string
rejected_at
When the processor accepted the platform's rejection of a closed account — the end of its life there, which the processor admits only at a zero balance
string format: date-time
requirements_due
What the processor still needs from the hotel, in its own vocabulary (`external_account`, `individual.verification.document`, …). Empty when nothing is owed.
Array<string>
state_observed_at
When the processor's view below was taken — the watermark an out-of-order webhook is checked against
string format: date-time
status
required
Lifecycle status, derived from the processor's verification
string
Allowed values: onboarding active restricted closed
provenance

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
pins
object
key
additional properties
object
pinned_at
string format: date-time
pinned_by
object
reason
required
string
properties
object
key
additional properties
object
external_id
string
recorded_at
required
string format: date-time
source
required
string
source_updated_at
string format: date-time
stream
string
scope
required
One of: discriminator: level
object
level
required
string
Allowed value: tenant
Allowed values: tenant
tenant_id
required
string format: uuid
updated_at
required
string format: date-time
version
required
integer
>= 1
Example
{
"object_type": "hospitality.merchant_account",
"properties": {
"fee_schedule": [
{
"fee_class": "domestic_standard"
}
],
"status": "onboarding"
},
"scope": {
"level": "tenant"
}
}
ETag
string
/^"\d+"$/

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).