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

# An account's statement

> Newest first, for either kind of account. **Crypto:** one row per movement on your USDT wallet, with the signed `available_change` and `reserved_change` and your `balance_after`. A payment books `payout_held`, then `payout_settled` or `payout_released`; a top-up books `top_up`. **Fiat:** one `payout` row per payment paid from your BOB, with its `amount` and the payment's `status`. On both, `reference` ties each row to its payment (`po_`) or top-up (`dep_`). The filters below explain each type and status; a filter that only applies to the other kind of account matches nothing.

> [!TIP]
>
> **Try it:** enter any key that starts with `rpk_mock_`, e.g. `rpk_mock_yourname`. It answers from the [example server](https://docs.rampapay.com/api-reference/introduction.md#try-it) with sample data — nothing real moves. Never enter your real key.

## Errors

| HTTP | Code | What to do |
| - | - | - |
| 400 Bad Request | `INVALID_REQUEST` | Not an account id, or 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. |
| 404 Not Found | `ACCOUNT_NOT_FOUND` | No account with that id for your key. |

Any endpoint can also answer `401 AUTHENTICATION_FAILED`, `403 SCOPE_REQUIRED` and the 503s in [Errors](https://docs.rampapay.com/errors.md).


## OpenAPI

````yaml api-reference/openapi.json GET /accounts/{id}/transactions
openapi: 3.0.3
info:
  title: Rampa Pay API
  version: 1.0.0
  description: >-
    Hold a USDT balance at Rampa and pay any QR in Bolivia 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, how to top it up, and what moved it.
  - name: Wallet
    description: Test USDT for your crypto account in the sandbox.
  - 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:
  /accounts/{id}/transactions:
    get:
      tags:
        - Accounts
      summary: An account's statement
      description: >-
        Newest first, for either kind of account. **Crypto:** one row per
        movement on your USDT wallet, with the signed `available_change` and
        `reserved_change` and your `balance_after`. A payment books
        `payout_held`, then `payout_settled` or `payout_released`; a top-up
        books `top_up`. **Fiat:** one `payout` row per payment paid from your
        BOB, with its `amount` and the payment's `status`. On both, `reference`
        ties each row to its payment (`po_`) or top-up (`dep_`). The filters
        below explain each type and status; a filter that only applies to the
        other kind of account matches nothing.
      operationId: list-transactions
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
          description: The webhook endpoint's id.
        - 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
              - failed
              - rejected
              - cancelled
          description: >-
            `completed | pending | in_review | failed | rejected | cancelled`.
            Crypto: completed once booked. pending: a top-up still confirming
            on-chain. in_review: a top-up that reached your address but could
            not be credited automatically, until Rampa resolves it. Pending and
            in-review rows come first, with zero changes, balance_after null and
            the deposit's dep_ id. Fiat: the payment's final status; one still
            processing is listed but cannot be filtered on.
        - name: type
          in: query
          required: false
          schema:
            type: string
            enum:
              - top_up
              - payout_held
              - payout_settled
              - payout_released
              - adjustment
              - payout
          description: >-
            `top_up | payout_held | payout_settled | payout_released |
            adjustment | payout`. Crypto: top_up: a USDT transfer to your
            address. payout_held: you paid a QR, and its total moved from
            available to reserved. payout_settled: the payment completed and the
            reserved amount left. payout_released: it failed and the amount
            returned to available. adjustment: in or out by its sign. Fiat:
            payout, a payment paid from your BOB.
        - name: transaction_id
          in: query
          required: false
          schema:
            type: string
          description: '`string`. Only the rows 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 rows, or a deposit's row — pending or credited.
            reference.id never changes, so track rows by it.
        - 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: Crypto · Fiat
          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
                          nullable: true
                        reserved_change:
                          type: string
                          nullable: true
                        balance_after:
                          type: object
                          properties:
                            available:
                              type: string
                            reserved:
                              type: string
                          nullable: true
                        reference:
                          type: object
                          properties:
                            type:
                              type: string
                            id:
                              type: string
                            network:
                              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
                        amount:
                          type: string
                          nullable: true
                  next_cursor:
                    type: string
                    nullable: true
              examples:
                crypto:
                  summary: Crypto
                  value:
                    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
                          network: tron:0x2b6653dc
                          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
                          network: tron:0x2b6653dc
                          tx_hash: >-
                            9f1c2e7a4b3d5c6e8f0a1b2c3d4e5f60718293a4b5c6d7e8f9a0b1c2d3e4f5a6
                          amount: '1000.000000'
                        created_at: '2026-09-27T13:58:20.000Z'
                    next_cursor: null
                fiat:
                  summary: Fiat
                  value:
                    data:
                      - id: po_9Fz3Kd7RwP2mX8cT4nB6vQ1h
                        type: payout
                        direction: out
                        status: completed
                        currency: BOB
                        amount: '1000.00'
                        reference:
                          type: payout
                          id: po_9Fz3Kd7RwP2mX8cT4nB6vQ1h
                          transaction_id: W-1001
                        created_at: '2026-09-27T14:06:05.000Z'
                    next_cursor: null
        '400':
          description: >-
            `INVALID_REQUEST` — Not an account id, or 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.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                      message:
                        type: string
                      request_id:
                        type: string
                      details:
                        type: object
                        properties:
                          errors:
                            type: array
                            items:
                              type: string
              examples:
                INVALID_REQUEST:
                  summary: INVALID_REQUEST
                  value:
                    error:
                      code: INVALID_REQUEST
                      message: 'direction must be one of the following values: in, out'
                      request_id: req_7KxQ2mVb9TfL4wHs8nRe3jDa
                      details:
                        errors:
                          - >-
                            direction must be one of the following values: in,
                            out
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          description: '`ACCOUNT_NOT_FOUND` — No account with that id for your key.'
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                      message:
                        type: string
                      request_id:
                        type: string
              examples:
                ACCOUNT_NOT_FOUND:
                  summary: ACCOUNT_NOT_FOUND
                  value:
                    error:
                      code: ACCOUNT_NOT_FOUND
                      message: ACCOUNT_NOT_FOUND
                      request_id: req_7KxQ2mVb9TfL4wHs8nRe3jDa
components:
  responses:
    Unauthorized:
      description: >-
        `AUTHENTICATION_FAILED` — the key is missing, unknown, revoked or
        expired, or the tenant is suspended.
      content:
        application/json:
          example:
            error:
              code: AUTHENTICATION_FAILED
              message: AUTHENTICATION_FAILED
              request_id: req_7KxQ2mVb9TfL4wHs8nRe3jDa
    Forbidden:
      description: '`SCOPE_REQUIRED` — your key is not enabled for this endpoint. Ask Rampa.'
      content:
        application/json:
          example:
            error:
              code: SCOPE_REQUIRED
              message: SCOPE_REQUIRED
              request_id: req_7KxQ2mVb9TfL4wHs8nRe3jDa
  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.