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

# Get a transaction

> Get details for a single transaction by ID



## OpenAPI

````yaml GET /platform/v1/transactions/{id}
openapi: 3.1.0
info:
  title: MoonPay
  version: 1.0.0
servers:
  - url: https://api.moonpay.com
    description: Production Environment
    variables: {}
  - url: https://api.moonpay.dev
    description: Sandbox Environment
    variables: {}
security: []
tags:
  - name: Assets
  - name: Quote
  - name: Customer
  - name: Identity
  - name: Transactions
paths:
  /platform/v1/transactions/{id}:
    get:
      tags:
        - Transactions
      summary: Get a transaction
      description: >-
        Returns a single transaction by ID with lifecycle stages showing
        progress from payment to delivery.
      operationId: TransactionController.findOne
      parameters:
        - name: id
          in: path
          required: true
          description: The MoonPay ID of the transaction.
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/TransactionWithStages'
                required:
                  - data
                unevaluatedProperties:
                  not: {}
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DevPlatformApiErrorResponse'
      security:
        - AccessTokenAuth: []
components:
  schemas:
    TransactionWithStages:
      type: object
      properties:
        stages:
          type: array
          items:
            $ref: '#/components/schemas/Stage'
          description: Details of the stages in the transaction lifecycle.
      unevaluatedProperties:
        not: {}
      allOf:
        - $ref: '#/components/schemas/Transaction'
      description: Transaction with lifecycle stages showing step-by-step progress.
    UnauthorizedError:
      type: object
      required:
        - code
        - message
      properties:
        code:
          type: string
          enum:
            - unauthorized
        message:
          type: string
          enum:
            - Not authorized
      unevaluatedProperties:
        not: {}
      description: Missing or invalid credentials.
    ForbiddenError:
      type: object
      required:
        - code
        - message
      properties:
        code:
          type: string
          enum:
            - forbidden
        message:
          type: string
          enum:
            - Forbidden
      unevaluatedProperties:
        not: {}
      description: Insufficient permissions.
    DevPlatformApiErrorResponse:
      type: object
      required:
        - code
        - message
      properties:
        code:
          allOf:
            - $ref: '#/components/schemas/DevPlatformApiErrorCodes'
          description: Code identifying the error type.
          examples:
            - forbidden
            - unauthorized
            - invalid_request
        message:
          type: string
          description: Human-readable error message.
          examples:
            - Forbidden
            - Not authorized
            - One or more request parameters are invalid.
        errors:
          type: array
          items:
            $ref: '#/components/schemas/DevPlatformErrorDetail'
          description: Optional list of field-level error details.
          examples:
            - - field: source.amount
                message: >-
                  Source amount must be a numeric string. Example "100" or
                  "10.25".
      unevaluatedProperties:
        not: {}
      description: Response body returned when a request fails.
    Stage:
      type: object
      properties:
        kind:
          $ref: '#/components/schemas/StageKind'
        name:
          type: string
          description: The human-readable name of the stage.
        status:
          $ref: '#/components/schemas/StageStatus'
        failureReason:
          anyOf:
            - type: string
            - type: 'null'
          description: A developer-friendly message if the status is `failed`
      unevaluatedProperties:
        not: {}
      description: A stage in the transaction lifecycle
      examples:
        - kind: delivery
          status: success
    Transaction:
      type: object
      required:
        - id
        - createdAt
        - updatedAt
        - status
        - source
        - destination
        - fees
        - wallet
        - customer
      properties:
        id:
          type: string
          description: The MoonPay ID of the transaction.
          examples:
            - fd43b900-593b-4125-9616-7d721ecbe875
        createdAt:
          type: string
          format: date-time
          description: >-
            An [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) timestamp of
            when the transaction was created.
          examples:
            - '2026-01-29T14:30:50.000Z'
        updatedAt:
          type: string
          format: date-time
          description: >-
            An [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) timestamp of
            when the transaction was last updated.
          examples:
            - '2026-01-29T15:30:50.000Z'
        status:
          $ref: '#/components/schemas/TransactionStatus'
        source:
          type: object
          required:
            - amount
            - asset
          properties:
            amount:
              type: string
              description: A stringified amount, which can include decimals.
              examples:
                - '100.02'
                - '10.22'
                - '1.00'
                - '10'
                - '1'
            asset:
              allOf:
                - $ref: '#/components/schemas/AssetBase'
              description: The currency or token being spent
              examples:
                - code: USD
          unevaluatedProperties:
            not: {}
          description: Source amount and asset (fiat currency) the customer paid.
          examples:
            - amount: '100.02'
              asset:
                code: USD
        destination:
          type: object
          required:
            - amount
            - asset
          properties:
            amount:
              type: string
              description: A stringified amount, which can include decimals.
              examples:
                - '100.02'
                - '10.22'
                - '1.00'
                - '10'
                - '1'
            asset:
              $ref: '#/components/schemas/AssetBase'
          unevaluatedProperties:
            not: {}
          description: Destination amount and asset (cryptocurrency) the customer receives.
          examples:
            - amount: '100.02'
              asset:
                code: USDC
        fees:
          allOf:
            - $ref: '#/components/schemas/Fees'
          description: Details of fees for the transaction.
        wallet:
          allOf:
            - $ref: '#/components/schemas/Wallet'
          description: The wallet used for the transaction.
        customer:
          $ref: '#/components/schemas/TransactionCustomer'
        paymentMethod:
          $ref: '#/components/schemas/TransactionPaymentMethod'
    DevPlatformApiErrorCodes:
      type: string
      enum:
        - unknown_error
        - unauthorized
        - forbidden
        - not_found
        - invalid_request
        - not_implemented
        - too_many_requests
        - not_allowed
        - conflict
        - unprocessable_entity
        - sse_timeout
        - sse_error
        - service_unavailable
        - requirements_incomplete
        - requirement_not_pending
        - verification_rejected
        - country_mismatch
        - upload_expired
        - unsupported_country
        - verification_pending
        - kyc_not_approved
        - no_outstanding_requirements
        - terms_accepted_at_out_of_range
    DevPlatformErrorDetail:
      type: object
      required:
        - message
      properties:
        field:
          type: string
          description: Field that caused the error.
        message:
          type: string
          description: Human-readable error message for this field.
        details:
          type: object
          unevaluatedProperties: {}
          description: >-
            Extra data that describes the error in more detail, useful when
            debugging or logging. Keys vary by error and are not part of the API
            contract. For example, an amount-limit error includes the limit
            value as "maxBuyAmount" or "minBuyAmount".
      unevaluatedProperties:
        not: {}
    StageKind:
      type: string
      enum:
        - ordering
        - waiting_payment
        - waiting_authentication
        - verification
        - processing
        - delivery
        - crypto_hold
      description: The stages in a transaction lifecycle.
    StageStatus:
      type: string
      enum:
        - not_started
        - in_progress
        - success
        - failed
      description: The status of a transaction stage.
    TransactionStatus:
      type: string
      enum:
        - completed
        - failed
        - pending
      description: >-
        The status of a transaction.


        - `completed`: The transaction is finalized and assets were delivered.

        - `failed`: The transaction failed. No payment was executed and funds
        were not transferred.

        - `pending`: The transaction was created and payment is accepted. The
        transfer is in progress.
    AssetBase:
      type: object
      required:
        - code
      properties:
        code:
          type: string
          description: >-
            A fiat or crypto currency code.


            **Fiat**

            Fiat codes are represented as [ISO
            4217](https://en.wikipedia.org/wiki/ISO_4217) codes.


            Currently only `USD` is supported.


            **Crypto**

            For crypto currency codes, see [supported
            currencies](https://dev.moonpay.com/docs/list-of-supported-cryptocurrencies).


            Examples: `BTC` `SOL` `ETH` `USDC_BASE` `USDC_SOL`
      unevaluatedProperties:
        not: {}
    Fees:
      type: object
      properties:
        network:
          allOf:
            - $ref: '#/components/schemas/MonetaryFeeAmount'
          description: Network fees (in fiat) for the transaction.
        moonpay:
          allOf:
            - $ref: '#/components/schemas/MonetaryFeeAmount'
          description: MoonPay fees (in fiat) for the transaction.
        ecosystem:
          allOf:
            - $ref: '#/components/schemas/MonetaryFeeAmount'
          description: Ecosystem fees (in fiat) for the transaction, if applicable.
        defi:
          allOf:
            - $ref: '#/components/schemas/MonetaryFeeAmount'
          description: >-
            DeFi swap fee (in fiat) for the transaction, converted to the
            quote's base currency like the other fees. Present only for DeFi
            swaps that carry an itemized swap fee; when the fee is taken
            on-chain it is reflected in `destination.amount` instead.
        partner:
          allOf:
            - $ref: '#/components/schemas/MonetaryFeeAmount'
          description: >-
            Partner fees (in fiat) for the transaction, if applicable.
            Deprecated: use `fees.ecosystem` instead. This field will be removed
            in a future release.
          deprecated: true
      unevaluatedProperties:
        not: {}
      examples:
        - network:
            amount: '2.39'
            asset:
              code: USD
          moonpay:
            amount: '4.99'
            asset:
              code: USD
          ecosystem:
            amount: '1.00'
            asset:
              code: USD
    Wallet:
      type: object
      required:
        - address
      properties:
        address:
          type: string
          description: The wallet address used for the transaction.
          examples:
            - '0x1234567890123456789012345678901234567890'
        tag:
          type: string
          description: >-
            An optional memo or destination tag (used by some blockchains such
            as XRP or XLM).
      unevaluatedProperties:
        not: {}
      examples:
        - address: '0x1234567890123456789012345678901234567890'
    TransactionCustomer:
      type: object
      required:
        - id
      properties:
        id:
          type: string
          description: The MoonPay ID of the customer associated with the transaction.
          examples:
            - e0dee0ac-4e62-4866-b044-f66c0e4046e9
      unevaluatedProperties:
        not: {}
    TransactionPaymentMethod:
      type: object
      required:
        - type
      properties:
        type:
          $ref: '#/components/schemas/PaymentMethodType'
      unevaluatedProperties:
        not: {}
    MonetaryFeeAmount:
      type: object
      required:
        - amount
        - asset
      properties:
        amount:
          type: string
          description: The amount of fees in fiat.
          examples:
            - '1'
            - '1.00'
            - '10.22'
            - '100.02'
        asset:
          allOf:
            - $ref: '#/components/schemas/AssetBase'
          description: The fiat currency used to pay the fees.
          examples:
            - code: USD
      unevaluatedProperties:
        not: {}
    PaymentMethodType:
      type: string
      enum:
        - apple_pay
        - card
        - ach
        - fps
        - fps_open_banking
        - google_pay
        - sepa
        - sepa_open_banking
        - pix
        - paypal
        - venmo
        - revolut_pay
        - moonpay_balance
        - interac
  securitySchemes:
    AccessTokenAuth:
      type: http
      scheme: bearer
      description: |-
        Bearer authentication header using an access token.

        Example: `Authorization: Bearer <accessToken>`

````