Skip to content
Lumean
GET/ledger-transactions

List Transactions

The key owner's money movements: top-ups, charges for completed orders, refunds and referral rewards. Newest first, paginated.

Amounts are in the asset's minor units (see precision); the sign follows the direction of the entry. The public payload omits the full wallet object and keeps wallet_id.

This endpoint exists only while the wallet feature is enabled; otherwise 404.

Required key permission: billing.read.

On this page(3)

Parameters

Values go straight into the request line, and the URL is built for you. Below are each parameter’s type, whether it is required, and its allowed values.

GEThttps://api.lumean.app/api/public/ledger-transactions
  • integerin queryoptional≥ 1

    Page number, starting at 1.

  • integerin queryoptional1..100

    Records per page, 1..100. Defaults to 15.

  • integerin queryoptional

    Show movements for a single wallet only. Ids come from GET /wallets.

  • LedgerTransactionTypein queryoptional

    Filter by movement type. The full set of accepted values ships in the LedgerTransactionType schema; the common ones are deposit (top-up), order_completion (charge for a finished order), order_refund (refund) and referral_reward.

    An unknown value returns 422.

    Allowed values
  • stringin queryoptional≤ 32 chars

    Sort field. Defaults to the operation date. An unknown value is not an error: the list simply falls back to date ordering, newest first.

  • stringin queryoptional≤ 4 chars

    Sort direction. Defaults to desc — newest operations first.

    Allowed values

Possible responses

200

Success. The payload is in data.

Body example
{
  "success": true,
  "message": "string",
  "data": {
    "items": [
      {
        "id": "string",
        "type": "string",
        "status": "string",
        "description": "string",
        "amount": "string",
        "amount_formatted": 1,
        "asset": {
          "id": 1,
          "code": "string",
          "kind": null,
          "precision": 1,
          "name": null,
          "is_active": true,
          "is_default": true,
          "default_balance": 1,
          "deleted_at": "2026-07-17T12:34:56+00:00",
          "created_at": "2026-07-17T12:34:56+00:00",
          "updated_at": "2026-07-17T12:34:56+00:00"
        },
        "direction": "string",
        "created_at": "string",
        "entries": [
          {
            "id": null,
            "wallet_id": null,
            "amount": null,
            "amount_formatted": null,
            "asset": null,
            "entry_type": null,
            "metadata": null,
            "created_at": null,
            "wallet": null
          }
        ],
        "actor_user_id": "string",
        "metadata": "string"
      }
    ],
    "current_page": 1,
    "last_page": 1,
    "per_page": 1,
    "total": 1
  }
}
Response fields
successrequired

Success flag. Branch on the HTTP status code instead: any 2xx response carries true here, while an error comes back in a different shape that need not contain this field at all.

boolean
messagerequired

A human-readable note in the account language. Fine to show to a user; do not parse it — the wording changes without notice and is not an error code.

string
datarequired

The response payload.

LedgerTransactionListLedgerTransactionList
itemsrequired

Records on the current page, in the list’s sort order.

array<LedgerTransaction>LedgerTransaction
array item
idrequired

ID of the money movement.

integer
typerequired

Movement type — a LedgerTransactionType value: deposit (top-up), order_completion (charge for an order), order_refund (refund), policy_block_fee (fee for an attempt rejected by the content policy), and others.

Valuesreferral_rewardinitial_depositdepositunlock_balancelock_balanceadmin_adjustmenttransfertransfer_feesubscription_refundadmin_subscription_grantdeposit_refundadmin_chargeadmin_creditmigration_creditorder_completionorder_refundsubscription_direct_paymenttoken_consumption_chargedeposit_bonusreferral_reward_usdreferral_reward_reversalsubscription_renewalsubscription_token_consumedsubscription_token_refundsubscription_token_forfeitedsubscription_token_creditlegacy_balance_migrationpolicy_block_feeai_gateway_usagegift_code_purchasegift_code_issuegift_code_cancelgift_code_redemptiongift_code_self_redemptiongift_code_discountgift_code_refundreseller_top_upreseller_top_up_refundreseller_debt_repaymentreseller_revoke_transfer
LedgerTransactionTypeLedgerTransactionType
statusrequired

Movement state: posted — booked, pending — awaiting booking, void — cancelled, with no effect on the balance.

Valuespendingpostedvoid
string
descriptionrequired

A description of the movement in words, for display. null when there is none.

nullable
string
amountoptional

Movement amount as an integer in the asset’s minor units (asset.precision), unsigned — the direction is in direction. Absent when the amount cannot be determined.

integer
amount_formattedoptional

The same amount in whole asset units, ready to display. Present only when the asset of the amount is known (wallet movements lack it — take the divisor from asset.precision of the entries[].wallet_id wallet in GET /wallets).

number
assetoptional

The asset of the amount; its precision is the divisor for amount. Present under the same conditions as amount_formatted.

AssetAsset
idrequired

Internal identifier of the asset.

integer
coderequired

Asset code: LUMC is the internal currency, TOKEN the generation tokens.

string
kindrequired

Kind of asset: money or consumable units. It decides whether an amount counts as a payment or as quota consumption.

Valuesmoneyunit
AssetKindAssetKind
precisionrequired

Number of decimal places. The load-bearing field: every integer amount in this asset is divided by 10^precision to obtain the real value. Do not assume the divisor is 100.

integer
namerequired

Display name of the asset, in the account language.

string
deleted_atrequired

When the asset was retired, ISO 8601. null while it is in use.

nullabledate-time
string
created_atrequired

When the asset was created, ISO 8601.

nullabledate-time
string
updated_atrequired

When the asset last changed, ISO 8601.

nullabledate-time
string
directionoptional

credit — money in, debit — money out. The exception is locking and unlocking for an order (type: lock_balance, unlock_balance): the money never leaves the wallet, both postings sit on it, and direction carries no meaning — go by type.

Valuesdebitcredit
string
created_atrequired

When the movement was created, ISO 8601.

string
entriesoptional

Postings to your wallets. A movement that bypasses a wallet (such as a direct subscription payment) has an empty list; the amount is then on the transaction itself.

array<LedgerEntry>LedgerEntry
array item
idrequired

Posting ID.

integer
wallet_idrequired

The posting’s wallet — an id from GET /wallets.

integer
amountrequired

Posting amount as an integer in the wallet asset’s minor units (the divisor is asset.precision of the wallet_id wallet in GET /wallets); the direction is in entry_type.

integer
entry_typerequired

credit — into the wallet, debit — out of it.

Valuescreditdebit
string
created_atrequired

When the posting was created, ISO 8601.

string
current_pagerequired

Current page number, starting from one.

integer
last_pagerequired

Number of the last page. The walk is over once current_page equals last_page.

integer
per_pagerequired

Page size the server applied.

integer
totalrequired

Total number of records matching the filter.

integer
401

The key is missing, unknown, disabled or expired.

Analyse this response
Body example
{
  "success": false,
  "message": "API key is missing. Provide it in the X-API-KEY header.",
  "data": null
}
Response fields
successrequired

Always false in error responses.

boolean
messagerequired

Error text in the key's language (set through the X-Locale header).

string
datarequired

Always null when the request is rejected before processing.

nullable
null
403

The key lacks the required permission, or the object belongs to another user.

Analyse this response
Body example
{
  "success": false,
  "message": "This API key does not have permission to perform this action."
}
Response fields
successrequired

Always false in error responses.

boolean
messagerequired

Error text in the key's language (set through the X-Locale header).

string
422

Validation error. Offending fields are listed in errors.

Analyse this response
Body example
{
  "success": true,
  "message": "string",
  "errors": {}
}
Response fields
successrequired

Always false in error responses.

boolean
messagerequired

A summary of the validation errors in words, in the response language (X-Locale).

string
errorsrequired

A per-field breakdown: the key names a request field, the value lists the complaints about it.

object
*optional
arbitrary keys
array<string>

This page for AI

Open .mdllm.md

API version 1.0.0