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

# Transaction

> A transaction representing a crypto purchase or sale

## Properties

| Property | Type | Required | Description |
| - | - | - | - |
| `id` | string | Yes | The MoonPay ID of the transaction |
| `createdAt` | string (date-time) | Yes | [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) timestamp of when the transaction was created |
| `updatedAt` | string (date-time) | Yes | [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) timestamp of when the transaction was last updated |
| `status` | string | Yes | The current status: `completed`, `failed`, or `pending` |
| `source` | object | Yes | The source amount and asset (fiat currency) |
| `destination` | object | Yes | The destination amount and asset (cryptocurrency) |
| `fees` | [Fees](/api-reference/platform/objects-and-types/fees) | Yes | Fee breakdown for the transaction |
| `wallet` | [Wallet](/api-reference/platform/objects-and-types/wallet) | Yes | The wallet where crypto was delivered |
| `customer` | object | Yes | The customer who made the transaction |
| `paymentMethod` | object | No | The payment method used |
| `stages` | [Stage](/api-reference/platform/objects-and-types/stage)\[] | No | Pipeline stages for the buy lifecycle, including per-stage `failureReason` when a stage fails |
| `bankTransferDepositInfo` | object | No | Bank account details and payment reference for completing a bank transfer. Present only on bank-transfer transactions (SEPA). See [Bank transfer deposit info](#bank-transfer-deposit-info). |

## Source / Destination

Both `source` and `destination` have the same structure:

| Property | Type | Required | Description |
| - | - | - | - |
| `amount` | string | Yes | The amount as a string to preserve precision |
| `asset` | [Asset](/api-reference/platform/objects-and-types/asset) | Yes | The currency or token |

## Customer

| Property | Type | Required | Description |
| - | - | - | - |
| `id` | string | Yes | The MoonPay ID of the customer |

## Transaction Status

| Value | Description |
| - | - |
| `pending` | Transaction is in progress |
| `completed` | Transaction completed successfully |
| `failed` | Transaction failed |

## Stages

Buy transactions return a `stages` array that breaks the pipeline into steps
(ordering, verification, payment, delivery, and others depending on the payment
method). Poll the transaction after checkout to see which stage failed and read
`stages[].failureReason` for a machine-readable code.

See the [Stage](/api-reference/platform/objects-and-types/stage) object and
[Stage failure reasons](/api-reference/platform/objects-and-types/stage-failure-reasons)
catalog.

## Bank transfer deposit info

Bank-transfer payments (SEPA) settle when the customer sends funds to a MoonPay bank account. For these transactions, the response includes a `bankTransferDepositInfo` object with the account details and the payment reference. Render these details in your own UI so the customer can complete the transfer, then poll the transaction until it reaches a terminal status. Bank-transfer transactions stay `pending` until the customer's funds arrive.

| Property | Type | Required | Description |
| - | - | - | - |
| `reference` | string | Yes | The payment reference the customer must include with the transfer. |
| `recipientName` | string | Yes | The name of the recipient that receives the funds. |
| `recipientAddress` | string | Yes | The address of the recipient. |
| `iban` | string | No | The IBAN. Provided for SEPA (EUR). |
| `bic` | string | No | The BIC (SWIFT code). Provided for SEPA (EUR). |
| `bankName` | string | No | The name of the receiving bank. |
| `bankAddress` | string | No | The address of the receiving bank. |

<Warning>
  The customer must always include the payment `reference`. Transfers sent
  without the reference are rejected.
</Warning>

## Example

```json theme={null}
{
  "id": "tr_abc123",
  "createdAt": "2026-01-29T14:30:50.000Z",
  "updatedAt": "2026-01-29T15:30:50.000Z",
  "status": "completed",
  "source": {
    "amount": "100.00",
    "asset": {
      "code": "USD"
    }
  },
  "destination": {
    "amount": "0.0025",
    "asset": {
      "code": "ETH"
    }
  },
  "fees": {
    "network": {
      "amount": "2.50",
      "currencyCode": "USD"
    },
    "moonpay": {
      "amount": "3.99",
      "currencyCode": "USD"
    }
  },
  "wallet": {
    "address": "0x1234...abcd"
  },
  "customer": {
    "id": "cust_xyz789"
  },
  "paymentMethod": {
    "type": "apple_pay"
  }
}
```
