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

# Your wallet statement

> **Scope:** `wallet:read`

Newest first. One row per movement on your USDT wallet, money in and money out. `direction` `in`: `top_up` (a USDT transfer to your address). `direction` `out`: `payout_held` (you paid a QR at a quote; its total moves from available to reserved), `payout_settled` (the payment completed; the reserved amount leaves), `payout_released` (the payment failed; the reserved amount returns to available). An `adjustment` is `in` or `out` by its sign. `status` is `completed` once the movement is booked. A top-up still confirming on-chain is `pending`, or `in_review` if it reached your address but could not be credited automatically (Rampa resolves it); those rows come first on the first page, with zero changes and `balance_after` `null`, and their `id` is the deposit's `dep_` id until they complete, when the booked row takes its own `txn_` id. Track a deposit or a payment by `reference.id`, which stays the same, or fetch its rows with `reference_id`. `currency` is the row's: every amount on it is in it. `available_change` and `reserved_change` are signed; `balance_after` is your balance right after the movement, so the newest row matches `GET /wallets`. `reference` names what it belongs to: a payment by its `po_` id and your `transaction_id`, or a top-up by its `dep_` deposit id, transfer and `amount`. Amounts are USDT only — the merchant amount in bolivianos is on the payment. Page with `limit` and the `next_cursor` of the previous answer, which is `null` on the last page.



## OpenAPI

````yaml api-reference/openapi.json GET /wallets/transactions
openapi: 3.0.3
info:
  title: Rampa Pay API
  version: 1.0.0
  description: >-
    Hold a USDT balance at Rampa and pay Bolivian merchant QRs in bolivianos.
    Amounts are decimal strings.
servers:
  - url: https://examples.staging.rampapay.com/v1
    description: 'Example server: sample answers, nothing real moves'
security:
  - apiKey: []
tags:
  - name: Accounts
    description: Every balance you hold with Rampa, in one place.
  - name: Wallet
    description: Your USDT balance at Rampa, and how money gets into it.
  - name: Payouts
    description: >-
      Quote a BOB amount in USDT; once your end user accepts, pay it out at that
      quote from your USDT wallet — to a merchant QR today, to a bank account
      soon.
  - name: Webhooks
    description: Where we send events. Each endpoint gets its own signing secret.
paths:
  /wallets/transactions:
    get:
      tags:
        - Wallet
      summary: Your wallet statement
      description: >-
        **Scope:** `wallet:read`


        Newest first. One row per movement on your USDT wallet, money in and
        money out. `direction` `in`: `top_up` (a USDT transfer to your address).
        `direction` `out`: `payout_held` (you paid a QR at a quote; its total
        moves from available to reserved), `payout_settled` (the payment
        completed; the reserved amount leaves), `payout_released` (the payment
        failed; the reserved amount returns to available). An `adjustment` is
        `in` or `out` by its sign. `status` is `completed` once the movement is
        booked. A top-up still confirming on-chain is `pending`, or `in_review`
        if it reached your address but could not be credited automatically
        (Rampa resolves it); those rows come first on the first page, with zero
        changes and `balance_after` `null`, and their `id` is the deposit's
        `dep_` id until they complete, when the booked row takes its own `txn_`
        id. Track a deposit or a payment by `reference.id`, which stays the
        same, or fetch its rows with `reference_id`. `currency` is the row's:
        every amount on it is in it. `available_change` and `reserved_change`
        are signed; `balance_after` is your balance right after the movement, so
        the newest row matches `GET /wallets`. `reference` names what it belongs
        to: a payment by its `po_` id and your `transaction_id`, or a top-up by
        its `dep_` deposit id, transfer and `amount`. Amounts are USDT only —
        the merchant amount in bolivianos is on the payment. Page with `limit`
        and the `next_cursor` of the previous answer, which is `null` on the
        last page.
      operationId: list-transactions
      parameters:
        - name: from
          in: query
          required: false
          schema:
            type: string
            format: date-time
          description: '`ISO-8601 instant with a zone`. At or after this instant.'
        - name: to
          in: query
          required: false
          schema:
            type: string
            format: date-time
          description: '`ISO-8601 instant with a zone`. At or before this instant.'
        - name: direction
          in: query
          required: false
          schema:
            type: string
            enum:
              - in
              - out
          description: '`in | out`. in: top-ups. out: payments.'
        - name: status
          in: query
          required: false
          schema:
            type: string
            enum:
              - completed
              - pending
              - in_review
          description: '`completed | pending | in_review`. Only rows in this status.'
        - name: type
          in: query
          required: false
          schema:
            type: string
            enum:
              - top_up
              - payout_held
              - payout_settled
              - payout_released
              - adjustment
          description: >-
            `top_up | payout_held | payout_settled | payout_released |
            adjustment`. Only movements of this type.
        - name: transaction_id
          in: query
          required: false
          schema:
            type: string
          description: >-
            `string`. Only the movements of the payment with this transaction
            id.
        - name: reference_id
          in: query
          required: false
          schema:
            type: string
          description: >-
            `po_ or dep_ id`. Only the rows whose reference.id is this: a
            payout's movements, or a deposit's row — pending or credited.
        - name: limit
          in: query
          required: false
          schema:
            type: integer
          description: '`integer 1–100`. Page size. Default 50.'
        - name: cursor
          in: query
          required: false
          schema:
            type: string
          description: '`string`. next_cursor from the previous page. Keep the same filters.'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        type:
                          type: string
                        direction:
                          type: string
                        status:
                          type: string
                        currency:
                          type: string
                        available_change:
                          type: string
                        reserved_change:
                          type: string
                        balance_after:
                          type: object
                          properties:
                            available:
                              type: string
                            reserved:
                              type: string
                          nullable: true
                        reference:
                          type: object
                          properties:
                            type:
                              type: string
                            id:
                              type: string
                            chain:
                              type: string
                              nullable: true
                            tx_hash:
                              type: string
                              nullable: true
                            amount:
                              type: string
                              nullable: true
                            transaction_id:
                              type: string
                              nullable: true
                        created_at:
                          type: string
                  next_cursor:
                    nullable: true
              example:
                data:
                  - id: dep_3Nc8Wq1Zr6Tm9Kx4Lp7Vb2Hs
                    type: top_up
                    direction: in
                    status: pending
                    currency: USDT
                    available_change: '+0.000000'
                    reserved_change: '+0.000000'
                    balance_after: null
                    reference:
                      type: deposit
                      id: dep_3Nc8Wq1Zr6Tm9Kx4Lp7Vb2Hs
                      chain: tron
                      tx_hash: >-
                        c41e7b2d9a6f3085e2c7b4a1d8f5e2093b6c9a4d7e1f8b5c2a9d6e3f0b7c4a18
                      amount: '250.000000'
                    created_at: '2026-09-27T14:07:02.000Z'
                  - id: txn_Qm4Vb8Xc2Nz6Lk1Jh5Gf9Ds3
                    type: payout_settled
                    direction: out
                    status: completed
                    currency: USDT
                    available_change: '+0.000000'
                    reserved_change: '-102.040000'
                    balance_after:
                      available: '897.960000'
                      reserved: '0.000000'
                    reference:
                      type: payout
                      id: po_9Fz3Kd7RwP2mX8cT4nB6vQ1h
                      transaction_id: W-1001
                    created_at: '2026-09-27T14:06:12.000Z'
                  - id: txn_Pw7Ty2Ur9Ie4Oq6Wa1Sd8Fg3
                    type: payout_held
                    direction: out
                    status: completed
                    currency: USDT
                    available_change: '-102.040000'
                    reserved_change: '+102.040000'
                    balance_after:
                      available: '897.960000'
                      reserved: '102.040000'
                    reference:
                      type: payout
                      id: po_9Fz3Kd7RwP2mX8cT4nB6vQ1h
                      transaction_id: W-1001
                    created_at: '2026-09-27T14:06:05.000Z'
                  - id: txn_Hj3Kl8Zx5Cv1Bn7Mq2We9Rt4
                    type: top_up
                    direction: in
                    status: completed
                    currency: USDT
                    available_change: '+1000.000000'
                    reserved_change: '+0.000000'
                    balance_after:
                      available: '1000.000000'
                      reserved: '0.000000'
                    reference:
                      type: deposit
                      id: dep_7Hq2Lx9TbR4mW1cZ8kP3sN6v
                      chain: tron
                      tx_hash: >-
                        9f1c2e7a4b3d5c6e8f0a1b2c3d4e5f60718293a4b5c6d7e8f9a0b1c2d3e4f5a6
                      amount: '1000.000000'
                    created_at: '2026-09-27T13:58:20.000Z'
                next_cursor: null
        '400':
          description: >-
            A filter is malformed: from or to without a zone, an unknown
            direction, status or type, limit outside 1–100, or a cursor we did
            not return.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
components:
  responses:
    Unauthorized:
      description: >-
        `AUTHENTICATION_FAILED` — the key is missing, unknown, revoked or
        expired, or the tenant is suspended.
    Forbidden:
      description: '`SCOPE_REQUIRED` — your key lacks this endpoint''s scope. Ask Rampa.'
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: X-API-Key
      description: >-
        On the example server, any key that starts with `rpk_mock_`, e.g.
        `rpk_mock_yourname`. Never your real key.

````

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