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

# Get a transaction

> Retrieves a single transaction by `transaction_id`, including lifecycle status and provider metadata when available.



## OpenAPI

````yaml /openapi.yaml get /transactions/{transaction_id}
openapi: 3.0.3
info:
  title: Dakota Platform API
  version: 1.0.0
  description: >-
    Combined API specification for Dakota Platform services:

    - Issuance API: Asset minting and burning operations

    - Onboarding API: Know Your Business/Customer verification

    - On/Off Ramp API: Managing on-ramp and off-ramp accounts

    - Recipients API: Managing destinations for KYB'd entities

    - Transactions API: Viewing transaction history across platform operations


    ## Authentication and API Headers


    All API endpoints require the following headers:


    - `x-idempotency-key`: Required for all POST endpoints to ensure request
    idempotency

    - `x-api-key`: Required for authentication across all endpoints


    Note: On /applications endpoints you need a token for authentication instead
    of a x-api-key

    - `x-application-token`: Required for authentication on public /applications
    endpoints (alternative to `x-api-key` where documented)



    ## Rate Limits


    Requests are rate limited per API key. Every response includes the following
    headers:


    | Header | Description |

    | --- | --- |

    | `X-RateLimit-Limit` | Maximum requests allowed in the current one-minute
    window. |

    | `X-RateLimit-Remaining` | Requests remaining in the current window. |

    | `X-RateLimit-Reset` | Absolute Unix timestamp (seconds since epoch) when
    the current rate-limit window resets. |


    When a request is throttled (`429`), responses also include `Retry-After`
    with seconds to wait before retrying.
servers:
  - url: https://api.platform.dakota.xyz
    description: Production environment
  - url: https://api.platform.sandbox.dakota.xyz
    description: Sandbox — safe for testing with simulated data
security:
  - ApiKeyAuth: []
tags:
  - name: Agentic Payments
    x-alpha: true
    description: >-
      Alpha — agent-driven payments: provision agents, draft and approve
      spending mandates, accept reviewed instructions, and manage scheduled
      payments.


      **Prerequisites:** Customer onboarded; signer groups attached for
      recognition.

      **Related:** Wallets, Signer Groups, Transactions
  - name: Mandates
    x-alpha: true
    description: >-
      Alpha — spending mandates: signed, signer-bound authorizations governing
      what may be spent, approved or cancelled by a second recognized signer (§8
      — the dual-control rule that every mandate mutation must be signed by a
      recognized signer OTHER than the bound one). Independent of agents and
      scheduled payments.


      **Prerequisites:** Signer groups attached for recognition.

      **Related:** Signer Groups, Transactions
  - name: Insights
    x-alpha: true
    description: >-
      Alpha — read-only account insight: a deterministic report over a
      customer's agentic activity (funding balances, upcoming obligations,
      failures, mandate headroom and expiry) plus an advisory chat that narrates
      it. Never moves money, never creates or changes anything.


      **Prerequisites:** Customer onboarded; insight is computed from the
      customer's scheduled payments, mandates, and wallets.

      **Related:** Agentic Payments, Mandates
  - name: Customers
    description: >-
      Manage customer entities representing businesses and organizations
      onboarded to Dakota.


      **Prerequisites:** Complete KYB via Onboarding endpoints before initiating
      money movement.

      **Related:** Onboarding, Recipients, Transactions, Accounts, Wallets
  - name: Wallets
    description: >-
      Manage wallets, balances, and wallet-to-signer-group relationships for
      custody and movement controls.


      **Prerequisites:** Customer must exist. Configure signer groups before
      policy-enforced workflows.

      **Related:** Signer Groups, Policies, Transactions, Customers
  - name: Transactions
    description: >-
      Create, cancel, and retrieve transaction records across account and wallet
      flows.


      **Prerequisites:** Accounts or destinations must be configured based on
      flow type.

      **Related:** Accounts, Recipients, Policies, Events
  - name: Recipients
    description: >-
      Manage recipient entities and destination rails used by customers for
      payouts and transfers.


      **Prerequisites:** Customer must be onboarded and active.

      **Related:** Customers, Transactions, Accounts, Onboarding
  - name: Accounts
    description: >-
      Manage account resources used for onramp, offramp, and swap operations.


      **Prerequisites:** Customer must be created and network/asset constraints
      must be known.

      **Related:** Customers, Transactions, Auto Transactions, Info
  - name: Auto Transactions
    description: >-
      Manage automated transaction configurations and execution history for
      account automation workflows.


      **Prerequisites:** Source account must exist and be configured for
      automation.

      **Related:** Accounts, Transactions, Events
  - name: Onboarding
    description: >-
      Manage KYB/KYC onboarding lifecycle, application documents, attestations,
      and verification steps.


      **Prerequisites:** Customer context and required entity/application
      metadata.

      **Related:** Customers, Exceptions, Recipients, Transactions
  - name: Policies
    description: >-
      Define and manage policy objects and rules used for transaction governance
      and risk controls.


      **Prerequisites:** Wallet and signer group resources should be configured
      for enforcement scenarios.

      **Related:** Wallets, Signer Groups, Transactions
  - name: Signer Groups
    description: >-
      Manage signer groups and signer assignments for multi-party authorization
      models.


      **Prerequisites:** Wallets should exist before linking signer groups.

      **Related:** Wallets, Policies, Transactions
  - name: Authentication
    description: >-
      Manage API authentication credentials and key lifecycle for platform
      access.


      **Prerequisites:** Client organization must be provisioned.

      **Related:** Users, Info
  - name: Users
    description: >-
      Manage client users, roles, and identity metadata for platform access
      control.


      **Prerequisites:** Auth credentials and client context must be
      established.

      **Related:** Authentication
  - name: Webhooks
    description: >-
      Manage outbound webhook targets and delivery configuration for event
      notifications.


      **Prerequisites:** Subscriber endpoint must be reachable and secured.

      **Related:** Events, Authentication
  - name: Payouts
    description: >-
      Manage where Dakota sends your accrued developer-fee payouts.


      **Prerequisites:** Auth credentials and client context must be
      established.

      **Related:** Events
  - name: Events
    description: >-
      Retrieve event records emitted by platform operations for audit and
      troubleshooting.


      **Prerequisites:** Requesting client must have access to referenced
      resources.

      **Related:** Webhooks, Transactions, Onboarding
  - name: Info
    description: >-
      Read platform capability metadata, such as supported rails, networks, and
      assets.


      **Prerequisites:** Valid authentication headers.

      **Related:** Accounts, Transactions
  - name: Sandbox
    description: >-
      Trigger sandbox-only simulation endpoints for safe end-to-end integration
      testing with synthetic data. The sandbox host
      (`https://api.platform.sandbox.dakota.xyz`) also accepts a family of
      `X-Sandbox-*` request headers on most write endpoints (`Customers`,
      `Accounts`, `Transactions`, simulate endpoints) that let integrators drive
      deterministic failure modes — pick a preset via `X-Sandbox-Scenario`, or
      compose a custom one with
      `X-Sandbox-Error-Step`/`X-Sandbox-Error-Status`/`X-Sandbox-Error-Message`.
      `X-Sandbox-Instant-Completion` collapses async flows to a single
      synchronous step, and `X-Sandbox-Skip-Auto-Approval` keeps newly created
      KYB applications in `pending` for manual-review testing. All `X-Sandbox-*`
      headers are ignored in production.


      **Prerequisites:** Sandbox environment and test customer data.

      **Related:** Customers, Accounts, Transactions, Onboarding
paths:
  /transactions/{transaction_id}:
    parameters:
      - name: transaction_id
        in: path
        required: true
        description: Unique identifier of the transaction.
        schema:
          $ref: '#/components/schemas/KSUID'
    get:
      tags:
        - Transactions
      summary: Get a transaction
      description: >-
        Retrieves a single transaction by `transaction_id`, including lifecycle
        status and provider metadata when available.
      operationId: getTransaction
      responses:
        '200':
          description: Transaction details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionResource'
              example:
                id: 1NFHrqBHb3cTfLVkFSGmHZqdDPi
                resource_type: one_off
                customer_id: 1NFHrqBHb3cTfLVkFSGmHZqdDPi
                crypto_address: '0x1234567890abcdef1234567890abcdef12345678'
                send_amount: '1.24'
                status: pending
                amount: '1.23'
                source_network_id: ethereum-mainnet
                source_asset: USDC
                destination_id: 1NFHrqBHb3cTfLVkFSGmHZqdDPi
                destination_asset: USD
                receipt:
                  imad: string
                  omad: string
                  input:
                    amount: string
                    asset: string
                    network: string
                  subtotal:
                    amount: string
                    asset: string
                    network: string
                  converted:
                    amount: string
                    asset: string
                    network: string
                  output:
                    amount: string
                    asset: string
                    network: string
                  exchange_rate: string
                  external_fee:
                    amount: string
                    asset: string
                    network: string
                  dakota_fee:
                    amount: string
                    asset: string
                    network: string
                  client_fee:
                    amount: string
                    asset: string
                    network: string
                  gas_fee:
                    amount: string
                    asset: string
                    network: string
                  payment_reference: Invoice payment for services
                crypto_details:
                  source_crypto_address: string
                  source_network_id: ethereum-mainnet
                  destination_crypto_address: string
                  destination_network_id: ethereum-mainnet
                  deposit_transaction_hash: string
                  transaction_hash: string
                created_at: 1234567890
                updated_at: 1234567890
                completed_at: 1234567890
                destination_payment_rail: ach
                payment_reference: string
                destination_bank_name: Chase Bank
                destination_account_holder_name: Acme Corporation
                destination_account_number_last_four: '6789'
                destination_routing_number: '021000021'
                destination_iban: GB82WEST12345698765432
                destination_bic: BARCGB22XXX
        '400':
          description: Invalid request
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
              example:
                type: https://docs.dakota.xyz/api-reference/errors#invalid-request
                title: Invalid request
                status: 400
                detail: Invalid request
                instance: https://api.platform.dakota.xyz/transactions/example-id
                request_id: req_01hzy6y7v8w9x0y1z2a3b4c5d6
        '401':
          description: Unauthorized
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
              example:
                type: >-
                  https://docs.dakota.xyz/api-reference/errors#authentication-error
                title: Unauthorized
                status: 401
                detail: Unauthorized
                instance: https://api.platform.dakota.xyz/transactions/example-id
                request_id: req_01hzy6y7v8w9x0y1z2a3b4c5d6
        '403':
          description: Forbidden
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
              example:
                type: https://docs.dakota.xyz/api-reference/errors#forbidden
                title: Forbidden
                status: 403
                detail: Forbidden
                instance: https://api.platform.dakota.xyz/transactions/example-id
                request_id: req_01hzy6y7v8w9x0y1z2a3b4c5d6
        '404':
          description: Not found
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
              example:
                type: https://docs.dakota.xyz/api-reference/errors#not-found
                title: Not found
                status: 404
                detail: Not found
                instance: https://api.platform.dakota.xyz/transactions/example-id
                request_id: req_01hzy6y7v8w9x0y1z2a3b4c5d6
        default:
          description: Unexpected error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
              example:
                type: https://docs.dakota.xyz/api-reference/errors#internal-error
                title: Unexpected error
                status: 500
                detail: Unexpected error
                instance: https://api.platform.dakota.xyz/transactions/example-id
                request_id: req_01hzy6y7v8w9x0y1z2a3b4c5d6
      externalDocs:
        description: Read full guide in docs
        url: https://docs.dakota.xyz/api-reference/transactions/get-a-transaction
components:
  schemas:
    KSUID:
      type: string
      title: KSUID
      description: >-
        KSUID is a 27-character globally unique ID that combines a timestamp
        with a random component. Used for all entity identifiers in the Dakota
        platform.
      pattern: ^[0-9A-Za-z]{27}$
      minLength: 27
      maxLength: 27
      example: 1NFHrqBHb3cTfLVkFSGmHZqdDPi
    TransactionResource:
      oneOf:
        - $ref: '#/components/schemas/OneOffTransaction'
        - $ref: '#/components/schemas/WalletTransaction'
        - $ref: '#/components/schemas/Transaction'
      discriminator:
        propertyName: resource_type
        mapping:
          one_off:
            $ref: '#/components/schemas/OneOffTransaction'
          wallet:
            $ref: '#/components/schemas/WalletTransaction'
          auto_account:
            $ref: '#/components/schemas/Transaction'
    ProblemDetails:
      type: object
      required:
        - type
        - title
        - status
      description: |
        Error response following RFC 9457 Problem Details.
        Public API error responses use this format.
      example:
        type: https://docs.dakota.xyz/api-reference/errors#not-found
        title: Customer Not Found
        status: 404
        detail: Customer cst_2abc123 was not found in your organization.
        instance: https://api.platform.dakota.xyz/customers/cst_2abc123
        request_id: req_7f3a8b2c
      properties:
        type:
          type: string
          format: uri
          description: |
            URI reference identifying the problem type.
            Resolves to human-readable documentation.
          example: https://docs.dakota.xyz/api-reference/errors#not-found
        title:
          type: string
          description: >-
            Short, human-readable summary of the problem type. Stable across
            occurrences.
          example: Customer Not Found
        status:
          type: integer
          description: HTTP status code for this occurrence.
          example: 404
        detail:
          type: string
          description: Human-readable explanation specific to this occurrence.
          example: Customer cst_2abc123 was not found in your organization.
        instance:
          type: string
          format: uri
          description: The request path that triggered this error.
          example: https://api.platform.dakota.xyz/customers/cst_2abc123
        request_id:
          type: string
          description: Unique request identifier. Include when contacting support.
          example: req_7f3a8b2c
        errors:
          type: array
          description: Field-level validation errors (present for validation failures).
          items:
            $ref: '#/components/schemas/ValidationError'
    OneOffTransaction:
      type: object
      description: >-
        A one-off transaction response. Used for single-use offramp
        (crypto-to-fiat) and swap (crypto-to-crypto) transfers; the destination
        type determines which.
      required:
        - id
        - resource_type
        - customer_id
        - crypto_address
        - status
        - source_network_id
        - source_asset
        - destination_id
        - destination_asset
        - created_at
        - updated_at
      properties:
        id:
          $ref: '#/components/schemas/KSUID'
        resource_type:
          allOf:
            - $ref: '#/components/schemas/TransactionResourceType'
          description: Discriminator field. Always "one_off" for one-off transactions.
          example: one_off
        customer_id:
          $ref: '#/components/schemas/KSUID'
        crypto_address:
          type: string
          description: Temporary address where funds should be sent
          example: '0x1234567890abcdef1234567890abcdef12345678'
        send_amount:
          type: string
          description: >-
            Amount that should be sent (may be higher than requested amount due
            to fees)
          example: '1.24'
        status:
          $ref: '#/components/schemas/OneOffTransactionStatus'
        amount:
          type: string
          description: Original requested amount
          example: '1.23'
        source_network_id:
          $ref: '#/components/schemas/NetworkId'
        source_asset:
          type: string
          description: Source crypto asset symbol
          example: USDC
        destination_id:
          $ref: '#/components/schemas/KSUID'
        destination_asset:
          $ref: '#/components/schemas/Asset'
        failure_reason:
          type: string
          description: Reason for failure if status is failed
        receipt:
          $ref: '#/components/schemas/TransactionReceipt'
          nullable: true
          type: object
        crypto_details:
          $ref: '#/components/schemas/TransactionCryptoDetails'
          nullable: true
          type: object
        sender_details:
          $ref: '#/components/schemas/SenderDetails'
        created_at:
          type: integer
          description: Unix timestamp when the transaction was created
          example: 1234567890
        updated_at:
          type: integer
          description: Unix timestamp when the transaction was last updated
          example: 1234567890
        completed_at:
          type: integer
          description: Unix timestamp when the transaction was completed
          example: 1234567890
        destination_payment_rail:
          $ref: '#/components/schemas/PaymentCapability'
          description: The payment rail that was selected for this transaction
          nullable: true
          type: string
        payment_reference:
          type: string
          description: >-
            Payment reference message for bank transfers (e.g. wire message,
            SWIFT reference)
          nullable: true
        destination_bank_name:
          type: string
          description: Name of the destination bank
          example: Chase Bank
        destination_account_holder_name:
          type: string
          description: Name of the account holder at the destination bank
          example: Acme Corporation
        destination_account_number_last_four:
          type: string
          description: Last four digits of the destination account number
          example: '6789'
        destination_routing_number:
          type: string
          description: ABA routing number for US bank accounts
          example: '021000021'
        destination_iban:
          type: string
          description: IBAN for international bank accounts
          example: GB82WEST12345698765432
        destination_bic:
          type: string
          description: BIC/SWIFT code for international transfers
          example: BARCGB22XXX
        return_code:
          type: string
          description: >-
            NACHA/Fedwire return code (e.g., R01) when the transaction was
            returned by the receiving bank.
          example: R01
        return_reason:
          type: string
          description: Human-readable return reason provided by the receiving bank.
          example: Insufficient Funds
        return_initiated_at:
          type: integer
          description: Unix timestamp when the return was initiated.
          example: 1234567890
        return_deadline:
          type: integer
          description: Unix timestamp deadline for return processing.
          example: 1234567890
        reversal_reason:
          type: string
          description: >-
            Lead Bank ACH reversal reason when the originator reverses the
            transaction (e.g., duplicate, receiver_incorrect).
          example: duplicate
        reversal_initiated_at:
          type: integer
          description: Unix timestamp when the reversal was initiated.
          example: 1234567890
        customer_name:
          type: string
          description: Display name of the customer associated with this transaction.
          example: Acme Corp
    WalletTransaction:
      type: object
      description: >-
        Transaction details representing a transfer of funds from a crypto
        wallet.
      required:
        - id
        - resource_type
        - wallet_id
        - status
      properties:
        id:
          $ref: '#/components/schemas/KSUID'
        resource_type:
          allOf:
            - $ref: '#/components/schemas/TransactionResourceType'
          description: Discriminator field. Always "wallet" for wallet transactions.
          example: wallet
        wallet_id:
          $ref: '#/components/schemas/KSUID'
        network_id:
          $ref: '#/components/schemas/NetworkId'
        from:
          type: string
          description: The source address
        to:
          type: string
          description: The destination address
        transaction_hash:
          type: string
          description: The transaction hash
          example: '0x165cd37b4c644c2921454429e7f9358d18a45e14'
        transaction_type:
          $ref: '#/components/schemas/WalletTransactionType'
        amount:
          type: string
          description: The transaction amount
          example: '100.56'
        asset:
          $ref: '#/components/schemas/Asset'
        status:
          $ref: '#/components/schemas/TransactionStatus'
        created_at:
          type: integer
          format: int64
          description: Unix time the transaction was created.
          example: 1781181600
        confirmed_at:
          type: integer
          format: int64
          description: >-
            Unix time the transaction was confirmed on chain; absent until
            confirmed.
          example: 1781181660
    Transaction:
      type: object
      description: >-
        A unified transaction object representing money movements in the Dakota
        platform. Used for auto-account transactions.
      required:
        - id
        - resource_type
        - type
        - status
        - description
        - inputAmount
        - subtotalAmount
        - convertedAmount
        - outputAmount
        - createdAt
        - updatedAt
      properties:
        id:
          $ref: '#/components/schemas/KSUID'
        resource_type:
          allOf:
            - $ref: '#/components/schemas/TransactionResourceType'
          description: >-
            Discriminator field. Always "auto_account" for auto-account
            transactions.
          example: auto_account
        type:
          $ref: '#/components/schemas/TransactionType'
        status:
          $ref: '#/components/schemas/TransactionStatus'
        description:
          type: string
          description: Human-readable description of the transaction.
          example: USD to ETH conversion
        inputAmount:
          $ref: '#/components/schemas/TransactionAmount'
          description: The amount of money input into the transaction.
        subtotalAmount:
          $ref: '#/components/schemas/TransactionAmount'
          description: TODO @Marc what does this mean specifically?
        convertedAmount:
          $ref: '#/components/schemas/TransactionAmount'
          description: TODO @Marc what does this mean specifically?
        outputAmount:
          $ref: '#/components/schemas/TransactionAmount'
          description: The amount of money output from the transaction.
        settlement:
          $ref: '#/components/schemas/TransactionSettlement'
        components:
          type: array
          description: List of component transactions for composite transactions.
          items:
            $ref: '#/components/schemas/NestedTransaction'
          nullable: true
        createdAt:
          type: integer
          description: Unix timestamp when the transaction was created.
          example: 1234567890
        updatedAt:
          type: integer
          description: Unix timestamp when the transaction was last updated.
          example: 1234567890
        completedAt:
          type: integer
          description: >-
            Unix timestamp when the transaction was completed. Null if not
            completed.
          nullable: true
          example: 1234567890
        sender_details:
          $ref: '#/components/schemas/SenderDetails'
    ValidationError:
      type: object
      required:
        - field
        - message
      properties:
        field:
          type: string
          description: Field path using dot notation for nested fields.
          example: bank_account.routing_number
        message:
          type: string
          description: Human-readable description of the field error.
          example: Routing number must be exactly 9 digits
        code:
          type: string
          description: Machine-readable error code for this field.
          example: invalid_format
    TransactionResourceType:
      type: string
      title: Transaction Resource Type
      description: Top-level transaction resource family.
      enum:
        - one_off
        - wallet
        - auto_account
      example: one_off
    OneOffTransactionStatus:
      type: string
      description: Status of a one-off transaction
      enum:
        - pending
        - processing
        - completed
        - failed
        - cancelled
        - reversed
        - pending_return
        - returned
        - pending_reversal
      example: pending
    NetworkId:
      type: string
      description: Identifier for a blockchain network
      example: ethereum-mainnet
      enum:
        - ethereum-mainnet
        - ethereum-sepolia
        - ethereum-goerli
        - ethereum-holesky
        - solana-mainnet
        - solana-devnet
        - solana-testnet
        - base-mainnet
        - base-sepolia
        - arbitrum-mainnet
        - arbitrum-sepolia
        - optimism-mainnet
        - optimism-sepolia
        - polygon-mainnet
        - polygon-amoy
      minLength: 1
      maxLength: 30
    Asset:
      type: string
      title: Asset
      description: ISO 4217 symbol representing a fiat asset.
      pattern: ^[A-Z]{3}$
      minLength: 3
      maxLength: 3
      example: USD
    TransactionReceipt:
      type: object
      description: Detailed receipt information for a transaction
      required:
        - input
        - output
        - exchange_rate
      properties:
        imad:
          type: string
          description: Input Message Accountability Data for certain US transactions.
        omad:
          type: string
          description: Input Message Accountability Data for certain US transactions.
        input:
          $ref: '#/components/schemas/AmountDetails'
          description: Input amount details
        subtotal:
          $ref: '#/components/schemas/AmountDetails'
          description: Subtotal amount after fees
        converted:
          $ref: '#/components/schemas/AmountDetails'
          description: Converted amount after applying the exchange rate
        output:
          $ref: '#/components/schemas/AmountDetails'
          description: Output amount details
        exchange_rate:
          type: string
          description: Exchange rate used for the transaction
        external_fee:
          $ref: '#/components/schemas/AmountDetails'
          description: External fee amount details
        dakota_fee:
          $ref: '#/components/schemas/AmountDetails'
          description: Dakota fee amount details
        client_fee:
          $ref: '#/components/schemas/AmountDetails'
          description: Client fee amount details
        gas_fee:
          $ref: '#/components/schemas/AmountDetails'
          description: Gas fee amount details for blockchain transactions
        payment_reference:
          type: string
          description: Payment reference message for bank transfers
          nullable: true
          example: Invoice payment for services
    TransactionCryptoDetails:
      type: object
      description: Blockchain-specific details for crypto transactions
      properties:
        source_crypto_address:
          type: string
          description: Source blockchain address
        source_network_id:
          $ref: '#/components/schemas/NetworkId'
        destination_crypto_address:
          type: string
          description: Destination blockchain address
        destination_network_id:
          $ref: '#/components/schemas/NetworkId'
        deposit_transaction_hash:
          type: string
          description: >-
            Transaction hash for intermediate transaction, such as the first
            half of an offramp or two-part swap
        transaction_hash:
          type: string
          description: >-
            Transaction hash for main transaction that reaches the recipient, if
            applicable
    SenderDetails:
      type: object
      description: >-
        Originating sender details for onramp/offramp/swap transactions.
        Populated when source-side metadata is available (e.g., from inbound
        wire/ACH source data).
      properties:
        sender_type:
          type: string
          description: >-
            Type of the originating sender (e.g., "fiat_account",
            "crypto_wallet").
          example: fiat_account
        sender_account_holder_name:
          type: string
          description: Name on the originating account.
          example: John Doe
        sender_bank_name:
          type: string
          description: Bank name of the originating account.
          example: Chase Bank
        sender_routing_number:
          type: string
          description: ACH routing number of the originating bank account.
          example: '021000021'
        sender_account_number:
          type: string
          description: Account number of the originating bank account.
          example: '1234567890'
        sender_wire_routing_number:
          type: string
          description: Wire routing number of the originating bank account.
          example: '021000021'
        sender_account_type:
          type: string
          description: Type of the originating bank account (e.g., "checking", "savings").
          example: checking
        sender_iban:
          type: string
          description: IBAN of the originating account.
          example: GB82WEST12345698765432
        sender_bic:
          type: string
          description: BIC/SWIFT code of the originating bank.
          example: BARCGB22XXX
        sender_wallet_address:
          type: string
          description: Blockchain wallet address of the originating sender (offramp/swap).
          example: '0x1234567890abcdef1234567890abcdef12345678'
        sender_network:
          type: string
          description: >-
            Network identifier of the originating wallet (e.g.,
            "ethereum-mainnet").
          example: ethereum-mainnet
    PaymentCapability:
      type: string
      title: Payment Capability
      description: >-
        Type of payment rail capability supported. For onramp accounts,
        `us_bank_account` indicates the account accepts ACH, Wire (Fedwire), and
        FedNow deposits interchangeably. `fednow` is the FedNow instant
        US-domestic USD rail for payouts and deposits — $500k per-transaction
        cap on payouts; a payout destination whose bank cannot receive FedNow is
        rejected at account creation with problem type
        `https://docs.dakota.xyz/api-reference/errors#fednow-destination-unreachable`
        — route that destination over `ach` instead.
      enum:
        - ach
        - fedwire
        - swift
        - us_bank_account
        - fednow
      example: ach
    WalletTransactionType:
      type: string
      description: Type of transaction
      enum:
        - transfer
        - evm_contract_call
    TransactionStatus:
      type: string
      title: Transaction Status
      description: Current status of a transaction.
      enum:
        - timed_out
        - not_started
        - in_progress
        - awaiting_confirmation
        - pending
        - processing
        - completed
        - invalid
        - failed
        - canceled
        - reversed
        - rejected
        - broadcasted
        - pending_return
        - returned
        - pending_reversal
    TransactionType:
      type: string
      title: Transaction Type
      description: Type of transaction.
      enum:
        - onramp
        - offramp
        - swap
      example: onramp
    TransactionAmount:
      type: object
      description: An amount of money with its asset.
      required:
        - amount
        - asset
      properties:
        amount:
          type: string
          description: The amount as a decimal string.
          example: '1000.00'
        asset:
          type: string
          description: The asset code or asset symbol.
          example: USD
    TransactionSettlement:
      type: object
      description: Settlement details for a transaction.
      properties:
        txnHash:
          type: string
          description: Transaction hash for crypto transactions.
          nullable: true
        imad:
          type: string
          description: Input Message Accountability Data for certain US transactions.
          nullable: true
        omad:
          type: string
          description: Output Message Accountability Data for certain US transactions.
          nullable: true
    NestedTransaction:
      type: object
      description: >-
        A transaction object for use within composite transactions (without
        further nesting).
      required:
        - id
        - type
        - status
        - description
        - inputAmount
        - subtotalAmount
        - convertedAmount
        - outputAmount
        - createdAt
        - updatedAt
      properties:
        id:
          $ref: '#/components/schemas/KSUID'
        type:
          $ref: '#/components/schemas/TransactionType'
        status:
          $ref: '#/components/schemas/TransactionStatus'
        description:
          type: string
        inputAmount:
          $ref: '#/components/schemas/TransactionAmount'
          description: The amount of money input into the transaction.
        subtotalAmount:
          $ref: '#/components/schemas/TransactionAmount'
          description: TODO @Marc what does this mean specifically?
        convertedAmount:
          $ref: '#/components/schemas/TransactionAmount'
          description: TODO @Marc what does this mean specifically?
        outputAmount:
          $ref: '#/components/schemas/TransactionAmount'
          description: The amount of money output from the transaction.
        settlement:
          $ref: '#/components/schemas/TransactionSettlement'
        createdAt:
          type: integer
          description: Unix timestamp when the transaction was created.
          example: 1234567890
        updatedAt:
          type: integer
          description: Unix timestamp when the transaction was last updated.
          example: 1234567890
        completedAt:
          type: integer
          description: >-
            Unix timestamp when the transaction was completed. Null if not
            completed.
          nullable: true
          example: 1234567890
    AmountDetails:
      type: object
      description: >-
        Detailed representation of an amount with its asset and optional
        metadata
      required:
        - amount
        - asset
      properties:
        amount:
          type: string
          description: Amount as a string representation of a decimal number
        asset:
          type: string
          description: Asset code
        network:
          type: string
          description: Network identifier for the token if it is a crypto asset
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key

````