---
title: "Retrieve statement information for your account."
method: GET
path: "/v3/accounts/activity/"
tags: ["account_activity"]
---

# Retrieve statement information for your account.

`GET /v3/accounts/activity/`

## Description
This information should be used for accounting reconciliation.<br>
This data is what is being used in <a href="https://smarkets.com/account/statement">our statement page</a>

## Query parameters

- `timestamp_max` string, date-time — Maximum datetime for records
- `timestamp_min` string, date-time — Minimum datetime for records
- `limit` integer — Maximum number of account activity rows to return on a single call
- `market_id` string[] — Market IDs to filter by
- `order_id` string[] — Order IDs to filter by
- `pagination_last_seq` string — Last sequence number of the previous page. This parameter should be used for paginated requests
- `pagination_last_subseq` string — Last sub-sequence number of the previous page. This parameter should be used for paginated requests
- `sort` 'seq,subseq' | '-seq,-subseq' — How to sort the results. When making paginated requests, pagination_last_seq and pagination_last_subseq should be used with the values from the last record of the previous page
- `source` string[] — Account activity sources to filter by.
- `event_info` boolean — Should response be enhanced with include event information
- `include_promotion_data` boolean — Whether to enrich the response with bet token and promotion data.<br> Set to false to skip the promotion lookup when those fields are not needed, in which case they are returned empty

## Response `200`

Account activity fetch success

- object — Account activity fetch success
  - `account_activity` object[], required
    - `amount` string, nullable — Amount relative to the order
    - `bet_token_type` 'free_bet' | 'boost_bet' | 'null', nullable
    - `bonus_bet` boolean
    - `bonus_change` string, nullable — A change in the bonus balance
    - `commission` string, nullable — How much commission was charged
    - `contract_id` string, nullable — This ID uniquely identifies the contract
    - `event_id` string, nullable — This ID uniquely identifies an event
    - `exposure` string, nullable — Current exposure on the account
    - `extra` string, nullable — Additional information about this row
    - `label` string, nullable — Label is a user-defined string that will be stored in the order. It can be used to identify different trading strategies
    - `market_id` string, nullable — This ID uniquely identifies the market
    - `money` string, nullable — Balance of the account
    - `money_change` string, nullable — Change in the account's balance
    - `order_id` string, nullable — This ID uniquely identifies an order
    - `price` integer, nullable — This price is in percentage basis points.<br> Example: 5000 = 50% <br> To convert it to decimal odds, just divide 10000 by it<br> Example: 10000 / 5000 = 2.0 (decimal odds).<br> This price has to conform to a valid tick on the exchange; an invalid price error will be returned if it does not.
    - `quantity` integer, nullable — Quantity is the sum of the total pot (back+lay) in case the order is matched<br> The units are 1/100 of a UK penny.<br> Example: Quantity 500 = 0.05 GBP<br> To convert it to back stake, just multiply by the price and divide by 100000000<br> Example: 100000 (quantity) * 5000 (price) / 100000000 = 5 GBP back stake<br> The minimum stake is £0.05 or currency equivalent
    - `quantity_change` integer, nullable — Change in the quantity in GBP
    - `quantity_user_currency` integer, nullable — Quantity is the sum of the total pot (back+lay) in case the order is matched<br> The units are 1/10000 * one unit of the user's currency.<br> Example: Quantity 500 = 0.05 GBP<br> To convert it to back stake, just multiply by the price and divide by 100000000<br> Example: 100000 (quantity) * 5000 (price) / 100000000 = 5 GBP back stake<br> The minimum stake is £0.05 or currency equivalent
    - `quantity_user_currency_change` integer, nullable — Change in the quantity in user's currency
    - `seq` integer — Sequence number for the statement row
    - `side` 'buy' | 'sell', nullable — side can either be:<ul> <li>buy: backing a contract <li>sell: laying a contract </ul>
    - `source` 'admin.credit' | 'admin.debit' | 'bonus.credit' | 'bonus.debit' | 'commission.update' | 'contract.reduce' | 'contract.resettle' | 'contract.settle' | 'contract.unsettle' | 'contract.void' | 'contract.unvoid' | 'contract.unreduce' | 'deposit' | 'deposit.approve' | 'deposit.deny' | 'deposit.request' | 'execution.reduce' | 'execution.settle' | 'execution.unsettle' | 'execution.unvoid' | 'execution.void' | 'market.partial_unsettle' | 'market.resettle' | 'market.settle' | 'market.unsettle' | 'market.unvoid' | 'market.void' | 'order.book.accept' | 'order.book.cancel' | 'order.book.reduce_qty' | 'order.book.reject' | 'order.cancel.reject' | 'order.cancel_replace.book.accept' | 'order.cancel_replace.book.reject' | 'order.create' | 'order.execute' | 'order.execute.confirm' | 'order.execute.void' | 'order.pending.replace' | 'order.reduce' | 'order.reject.account_suspended' | 'order.reject.insufficient_funds' | 'order.reject.invalid_quantity' | 'order.reject.limit_exceeded' | 'order.reject.market_not_found' | 'order.reject.stake_limit_exceeded' | 'order.settle' | 'order.unsettle' | 'order.unvoid' | 'order.void' | 'withdraw' | 'withdrawal.approve' | 'withdrawal.deny' | 'withdrawal.request' | 'cash_out.complete' | 'cash_out.request' — The source of the account activity row is the trigger that generated the transaction to occur
    - `subseq` integer — Sub sequence number for the statement row
    - `timestamp` string, date-time — When this transaction took place
  - `contracts` object[] — Array of contracts
    - `name` string, required — Name for the contract, as displayed in our website.<br> Examples can be team names, horse names or other winning outcomes for each market.<br> It should not be used to identify the contract.<br> The contract_type field should be used instead.
    - `state_or_outcome` 'live' | 'open' | 'new' | 'halted' | 'winner' | 'loser' | 'deadheat' | 'reduced' | 'voided' | 'unavailable', required — state_or_outcome can have the following values: <ul> <li>new: The contract was just created and is still not available for betting <li>open: open for betting <li>live: open and trading live in-play <li>halted: Trading on this contract has halted <li>winner: settled as winner. <li>loser: settled as loser. <li>deadheat: settled as a deadheat - a tie with other contract. <li>reduced: withdrawn and a reduction factor was applied. <li>voided: no longer available for betting <li>unavailable: not currently available for betting </ul>
  - `events` object[] — Array of events
    - `full_slug` string, required — The URL slug for the event page
    - `name` string, required — The name of the event
    - `parent_id` string, nullable, required — This ID uniquely identifies the parent of the event
    - `slug` string, required — An easier way to identify the event
    - `state` 'new' | 'upcoming' | 'live' | 'ended' | 'settled' | 'cancelled' | 'suspended', required — Event state can have the following values: <ul> <li>upcoming: the event is now open for betting <li>live: the event is now live in-play <li>ended: the event has ended and its markets should be settled <li>settled: the event has ended and its markets should be settled <li>cancelled: the event was cancelled and didn't take place <li>suspended: the event was suspended and during play time </ul>
    - `type` union, required — The type of the event, for instance, the name of the sport<br>
      - 'american_football_match' | 'american_football_outright' | 'baseball_match' | 'baseball_outright' | 'basketball_esports_match' | 'basketball_match' | 'boxing_match' | 'call_of_duty_match' | 'cricket_match' | 'cricket_outright' | 'csgo_match' | 'current_affairs' | 'cycling' | 'darts_match' | 'darts_outright' | 'dota_2_match' | 'football_esports_match' | 'football_match' | 'football_outright' | 'golf_match' | 'golf_outright' | 'greyhound_racing_race' | 'handball_match' | 'horse_racing_race' | 'ice_hockey_match' | 'league_of_legends_match' | 'mma_match' | 'motorsports_race' | 'motorsports_outright' | 'politics' | 'politics_outright' | 'rowing' | 'rugby_league_match' | 'rugby_league_outright' | 'rugby_union_match' | 'rugby_union_outright' | 'sailing_race' | 'sailing_outright' | 'snooker_match' | 'snooker_outright' | 'table_tennis_match' | 'table_tennis_outright' | 'tennis_match' | 'tennis_outright' | 'volleyball_match' | 'generic' | 'top_level_event' | 'tv_entertainment'
      - object
        - `domain` 'accumulator' | 'american_football' | 'australian_rules' | 'baseball' | 'basketball' | 'basketball_esports' | 'boxing' | 'call_of_duty' | 'chess' | 'cricket' | 'csgo' | 'current_affairs' | 'cycling' | 'darts' | 'dota_2' | 'esports' | 'football' | 'football_esports' | 'golf' | 'greyhound_racing' | 'handball' | 'horse_racing' | 'ice_hockey' | 'king_of_glory' | 'league_of_legends' | 'lol_wild_rift' | 'mma' | 'motorsports' | 'olympics' | 'overwatch' | 'poker' | 'politics' | 'pubg' | 'rainbow_six_siege' | 'rocket_league' | 'rowing' | 'rugby_league' | 'rugby_union' | 'sailing' | 'snooker' | 'starcraft' | 'starcraft_2' | 'tv_and_entertainment' | 'table_tennis' | 'tennis' | 'valorant' | 'volleyball' | 'winter_sports' | 'gaelic_football' | 'gaelic_hurling', required — The domain part of the type (football, politics, horse_racing, etc)
        - `scope` 'root' | 'round' | 'category_root' | 'category' | 'single_event' | 'acca_root' | 'acca_category' | 'acca' | 'outright_root' | 'outright_category' | 'outright' | 'tour' | 'antepost_root' | 'antepost_category' | 'antepost', required — The scope part of the event type (single_event, outright, acca, etc)
  - `markets` object[] — Array of markets
    - `contract_selections` integer[], nullable, required — These particular contracts are not related to markets in the same way that most contracts are related to markets.<br> The contract_selections field is only set for accumulator markets and it refers to the contract IDs that the acca is made up of, an example:<br> <br> M1 (Winner market in Man Utd - Liverpool) <ul> <li>M1-C1 (Man Utd) <li>M1-C2 (Draw) <li>M1-C3 (Liverpool) </ul> </ul> M2 (Winner market in Arsenal - Chelsea) <ul> <li>M2-C1 (Arsenal) <li>M2-C2 (Draw) <li>M2-C3 (Chelsea) </ul> <br> Now an accumulator market is created:<br> M3 (Man Utd and Arsenal both to win on 23rd of February) <ul> <li>M3-C1 (Yes) <li>M3-C2 (No) </ul> <br> In this case, M3 will have two contracts (M3-C1 and M3-C2) but contract_selections will be M1-C1 (Man Utd) and M2-C1 (Arsenal).<br>
    - `market_type` object, nullable, required — Market type uniquely identifies the market within an event.<br> Market types are consistent across events of the same type.<br> It is the recommended way to identify markets.
      - `name` string, required
      - `param` string
      - `params` object
    - `name` string, required — Name of the market. This field is for display purposes and should not be used to identify the market.<br> The market_type field should be used instead.
  - `pagination` object
    - `next_page` string, nullable, required — The url query string for clients to fetch the next page of account activity

## Other responses

- `400` — RECKONATOR_REQUEST_TOO_LARGE, REQUEST_VALIDATION_ERROR
- `401` — AUTH_REQUIRED
- `403` — FORBIDDEN
- `414` — REQUEST_TOO_LARGE
- `429` — Rate limit exceeded
- `500` — Internal server error
- `503` — EVENTS_API_RATE_LIMIT, RECKONATOR_UNAVAILABLE, EVENTS_INTERNAL_ERROR, EVENTS_UNAVAILABLE
- `504` — RECKONATOR_UNAVAILABLE

---

[API](https://skmtc.dev/smarkets/apis/smarkets-http-api.md) · [All operations](https://skmtc.dev/smarkets/apis/smarkets-http-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/smarkets/smarkets-http-api/revisions/75f7e3050340/schema)
