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

# Transactions

> Understand transaction types and lifecycle for moving funds

A transaction moves value on the platform — converting between fiat and stablecoin, or transferring stablecoin between wallets. Each one has:

* A type defining the direction of the conversion.
* Source and target currencies with amounts.
* A lifecycle status tracking progress.
* Payment details and receipts on completion.

Transactions require an approved [customer](/concepts/customers) and support every payment rail available for the currency pair. See [Coverage](/get-started/coverage) for the full matrix.

## Transaction types

| **Type** | **Description**                                                                                     | **Example**                             |
| :------- | :-------------------------------------------------------------------------------------------------- | :-------------------------------------- |
| On-ramp  | Fiat to stablecoin. The customer sends fiat and receives stablecoins in their wallet.               | Deposit BRL via PIX, receive USDC.      |
| Off-ramp | Stablecoin to fiat. The customer's stablecoins are sent to a [destination](/concepts/destinations). | Convert USDC to USD via wire transfer.  |
| Transfer | Moves stablecoins between wallets without conversion. To another customer or external address.      | Send USDC to another customer's wallet. |

## Transaction lifecycle

Each transaction type has its own status progression:

<Tabs>
  <Tab title="On-ramp">
    `AWAITING_FUNDS` → `TRANSFERRING_FIAT` → `TRADING` → `TRANSFERRING_STABLECOIN` → `SUCCESS`
  </Tab>

  <Tab title="Off-ramp">
    `TRANSFERRING_STABLECOIN` → `TRADING` → `TRANSFERRING_FIAT` → `SUCCESS`
  </Tab>

  <Tab title="Transfer">
    `TRANSFERRING_STABLECOIN` → `SUCCESS`
  </Tab>
</Tabs>

<Info>
  Subscribe to [webhooks](/developer/webhooks) to receive real-time
  notifications when transaction statuses change.
</Info>

## Transaction purpose

Every on-ramp and off-ramp carries a `purpose` field — the end-use category of the funds. Banking partners and correspondent banks on the rail use it for AML screening, cross-border reporting, and how the receiving institution classifies the deposit. Pick the value that matches what the funds are actually being used for; mismatches can hold up the transaction or trigger an [RFI](/compliance/rfi).

| **Purpose**              | **Use case**                                                                  |
| :----------------------- | :---------------------------------------------------------------------------- |
| `PERSONAL_ACCOUNT`       | Personal transfers to own accounts (requires `SELF` destination relationship) |
| `INVESTMENT`             | Investment-related transactions                                               |
| `REAL_ESTATE`            | Real estate purchases or payments                                             |
| `TRADE_TRANSACTIONS`     | Commercial trade and goods                                                    |
| `TAX`                    | Tax payments                                                                  |
| `LOAN`                   | Loan disbursements or repayments                                              |
| `BILLS`                  | Bill payments                                                                 |
| `EXPENSES_REIMBURSEMENT` | Expense reimbursements                                                        |
| `PROFESSIONAL_SERVICES`  | Professional service payments                                                 |

## Payment expiration

On-ramp transactions have a payment window. If the customer doesn't complete the fiat payment in time, the transaction expires.

| **Exchange rate type** | **Expiration**                              |
| :--------------------- | :------------------------------------------ |
| Locked                 | Matches the exchange rate quote expiration. |
| Floating (PIX, SPEI)   | 1 day.                                      |
| Floating (other rails) | 7 days.                                     |

### Late deposits

If a fiat deposit lands after the transaction has expired, Lumx doesn't process the on-ramp. The funds are refunded to the original sender on the same rail used for the deposit. Start a new on-ramp if the customer still wants to convert.

## Related resources

<CardGroup cols={2}>
  <Card title="Customers" href="/concepts/customers">
    Approved customers are required to run transactions.
  </Card>

  <Card title="Exchange Rates" href="/concepts/exchange-rates">
    Floating and locked rates that drive conversion pricing.
  </Card>

  <Card title="Destinations" href="/concepts/destinations">
    Where off-ramp funds land.
  </Card>

  <Card title="Payment rail cut-off times" href="/additional-information/sla-and-cutoffs">
    Settlement windows and rail-by-rail deadlines.
  </Card>
</CardGroup>
