> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stableyard.fi/llms.txt
> Use this file to discover all available pages before exploring further.

# Concepts

> Every object in the API, what creates it, and the rule that prevents the most bugs.

Stableyard has one anchor object, the account, and everything else attaches to it. Each concept page covers one resource: what it is, its states, the calls that create and read it, and its errors.

## Objects

Everything attaches to an account. IDs are prefixed, stable and opaque.

| Object | ID prefix | The rule to know |
| - | - | - |
| [`Account`](/universal-payment-account) | `acct_` | `subjectType` is fixed at creation and constrains every rail the account can use. |
| [`PaymentHandle`](/concepts/wallets-and-handles) | `handle_` | Immutable once claimed and never reused. `name@namespace` can resolve to another partner's account. |
| [`ConnectedWallet`](/concepts/wallets-and-handles) | `wallet_` | `ownershipVerificationStatus` starts `unverified`. |
| [`SettlementProfile`](/settlement/destinations) | `settle_` | `status` is `draft`, `active`, `inactive` or `failed`. A new account's profile is `draft`. |
| [`SettlementDestination`](/settlement/destinations) | `destination_` | Bank and rail destinations stay `pending_verification` until verified and cannot be selected before. |
| [`BankAccount`](/concepts/bank-accounts) | `bank_account_` | A linked off-ramp destination. Fields vary by country. |
| [`OnrampBankAccount`](/concepts/on-ramp-accounts) | `onramp_acct_` | Issued in the customer's name. Requesting again for the same wallet and asset returns the existing account. |
| [`DepositAddress`](/concepts/deposit-addresses) | `deposit_addr_` | Reusable, no amount, no expiry. Each inbound transfer becomes a `Deposit` (`deposit_`). |
| [`Payment`](/concepts/payments) | `payment_` | `intent` is `receive` or `send` and never changes. |
| [`Refund`](/concepts/payments) | `refund_` | Each refund is its own record. `refundSummary` on the payment is an aggregate. |
| [`Transaction`](/payments/transactions) | `txn_` | The durable record. Reporting, not a spendable balance. |
| [`Vault`](/settlement/treasury-settlement) | `vault_` | A charge that breaks the policy fails at the contract, not at a backend check. |

## Mistakes that cause most integration bugs

* **Treating a webhook as current state.** An event says something changed. Read the resource for what is true now.
* **Treating provider success as collection.** Money is credited only when the expected receipt is independently verified.
* **Creating a payment to get an address.** Use a deposit address for repeated top-ups and a receive payment for one order.
* **Reading `status` alone.** `operationalState` says whether a payment needs a retry or a person. See [Status codes](/status-codes).
* **Showing recorded activity as a balance.** Transactions and balances are reporting views, not spendable funds.

<CardGroup cols={2}>
  <Card title="Accounts" icon="id-card" href="/universal-payment-account">
    The object every flow starts with.
  </Card>

  <Card title="Lifecycle and status codes" icon="signal" href="/status-codes">
    Payment, deposit and refund states, and which are terminal.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.