# Get Account Statement Returns the bank statement of one of your accounts for a period, oldest first by default. Pass order=desc for newest first. This is the raw banking ledger — every credit and debit that hit the account at the settlement partner, including entries that did not originate from a Cash-In or Cash-Out you created (fees, internal transfers, refunds). ## Account ownership The account must belong to the client behind your credentials. An account owned by someone else returns exactly the same 404 as an account that does not exist — we never confirm the existence of an account that is not yours. ## Available period Statement data is available from a start date set for each client. A from earlier than that date returns 422 LIST_FROM_BEFORE_CUTOFF, and the detail states the first available date. It is the same for every account of the client, and a from on that date is accepted. ## Cursor pagination Send nextCursor from the previous response to fetch the next page. When the response comes back without nextCursor, you have reached the end of the period. To walk backwards, send previousCursor in the very same cursor parameter — a cursor knows which way it goes. It is absent on the first page, so its absence is how you know you are at the start. Keep from, to, limit and order identical across every page — only cursor changes. Both directions return the page in the order you asked for. > ℹ️ There is no total field. Counting the whole window would require a full scan, > which is exactly what cursor pagination avoids. Every page costs the same, whether it is > the first or the nine-hundredth — forwards or backwards. ## Two things worth knowing id is the entry identifier at the settlement partner and is stable over time. Store it if you need to match an entry later. Dates carry milliseconds. Several entries can land in the same second on a busy account, and the millisecond is what lets you line an entry up with the cursor. > ℹ️ Null fields are omitted, not sent as null. This holds across the whole API. An > entry with no counterparty document simply has no document key — read every optional > field as "absent or present", never as "null or a value". Endpoint: GET /account/{number}/statement Version: 2.2.0 Security: bearerAuth ## Header parameters: - `ApplicationToken` (string, required) Fixed GUID that uniquely identifies your integration. Provided during ConnectPSP onboarding. Example: "{{ApplicationToken}}" ## Path parameters: - `number` (string, required) Account number exactly as it appears in your onboarding data — letters, digits and hyphen, up to 32 characters. Example: "123456789" ## Query parameters: - `from` (string, required) Start of the period, inclusive. Accepts a plain date (YYYY-MM-DD) or a full ISO 8601 timestamp (YYYY-MM-DDTHH:mm:ss). Times without an explicit offset are read as America/Sao_Paulo (UTC-3). A plain date becomes 00:00:00.000 of that day in that timezone. The period filters on when the entry hit the account at the settlement partner. Example: "2026-09-21" - `to` (string, required) End of the period, inclusive. Same format rules as from. A plain date becomes 23:59:59.999 of that day in America/Sao_Paulo. Example: "2026-09-21" - `limit` (integer) Maximum number of items per page. Defaults to 50, maximum 1000. Example: 50 - `cursor` (string) Opaque cursor pointing at another page. Copy nextCursor (to go forward) or previousCursor (to go back) from the previous response verbatim. Do not build or parse it yourself, its format may change — a cursor already knows which way it goes. Keep from, to, limit and order identical across every page of the same walk. Example: "MTM4OTU0NzI4MDAwMDAwMDB8YXxufFBIUVlST0I" - `order` (string) Sort direction by date. asc (default) returns the oldest first, desc the newest first. > ⚠️ order cannot change mid-walk. The direction is baked into the cursor. Sending a > different order alongside a cursor returns 422 LIST_ORDER_MISMATCH, because the > next page would otherwise walk backwards — repeating rows you already had and skipping > rows you never got. To change direction, start a new walk without cursor. Enum: "asc", "desc" ## Response 200 fields (application/json): - `account` (object) The account the entries belong to, echoed back so you can confirm which account you read. - `account.number` (string) Example: "123456789" - `account.branch` (string,null) Example: "0001" - `account.type` (string) TRANSACTIONAL covers your users' exposure; PROPRIETARY is your reserve account. Enum: "TRANSACTIONAL", "PROPRIETARY" - `account.bank` (object) - `account.bank.ispb` (string) ISPB of the settlement partner holding the account. Example: "12345678" - `account.bank.name` (string,null) Example: "SETTLEMENT PARTNER A" - `period` (object) The period and direction actually applied, echoed back. - `period.from` (string) Example: "2026-08-01T00:00:00-03:00" - `period.to` (string) Example: "2026-08-01T23:59:59-03:00" - `period.order` (string) Enum: "asc", "desc" - `items` (array) - `items.id` (string) Identifier of the entry at the settlement partner. Stable over time — safe to store and match against later. Example: "3f9a1c7e5b2d4086a1c3e5f70928b4d6" - `items.date` (string) When the entry hit the account, in America/Sao_Paulo (UTC-3), with milliseconds. Several entries can share the same second on a busy account. Example: "2026-08-01T14:32:10.445-03:00" - `items.direction` (string) Enum: "CREDIT", "DEBIT" - `items.type` (string) Entry type, normalized across settlement partners so you only need one parser. | type | Meaning | |---|---| | PIX_IN | PIX received | | PIX_OUT | PIX sent | | PIX_REFUND_IN | PIX refund received | | PIX_REFUND_OUT | PIX refund sent | | TRANSFER_IN | Non-PIX transfer received | | TRANSFER_OUT | Non-PIX transfer sent | | BILL_PAYMENT | Bill (boleto) payment | | OTHER | Anything else | > ℹ️ Treat unknown values as OTHER. New settlement partners bring new labels; > we map what we know and fall back to OTHER rather than failing the response. > Your parser should never break on a value it has not seen. Enum: "PIX_IN", "PIX_OUT", "PIX_REFUND_IN", "PIX_REFUND_OUT", "TRANSFER_IN", "TRANSFER_OUT", "BILL_PAYMENT", "OTHER" - `items.typeRaw` (string,null) The settlement partner's own label, untranslated — useful when you need the detail behind the normalized type. Example: "PIX-TRANSFER" - `items.amount` (number) Always positive. Use direction for the sign. Example: 50 - `items.balanceAfter` (number,null) Account balance right after this entry. Example: 152340.75 - `items.description` (string,null) Example: "PIX withdrawal" - `items.endToEndId` (string,null) PIX EndToEndId. Absent on entries that are not PIX. Example: "E12345678202608011432s0a1b2c3d4e" - `items.originalEndToEndId` (string,null) EndToEndId of the original transaction. Present only on PIX refunds. - `nextCursor` (string) Opaque cursor for the next page. Absent when there are no more pages — that is how you know the walk is finished. Example: "MTM4OTU0NzI4MDAwMDAwMDB8ZHxufDhjNGUyYTZkMGYxYjM5NTc" - `previousCursor` (string) Opaque cursor for the page before this one. Send it in the same cursor parameter. Absent on the first page — that is how you know you are at the start. Example: "MTM4OTU0NzI4MDAwMDAwMDB8ZHxwfDNmOWExYzdlNWIyZDQwODY" ## Response 401 fields (application/problem+json): - `type` (string) URI identifying the error type. It can contain non-ASCII characters. Example: "https://doc.connectpsp.com/errors/duplicated-external-reference" - `title` (string) Short, human-readable summary. Example: "Referência Externa Duplicada" - `status` (integer) HTTP status code. Example: 409 - `code` (string) Machine-readable error code for programmatic handling. Absent on the 401 for a missing or invalid ApplicationToken. Example: "DUPLICATED_EXTERNAL_REFERENCE" - `detail` (string) Human-readable explanation of this specific occurrence. Example: "Já existe uma operação com o externalReference informado: withdraw_xyz789." - `errors` (object) Only on VALIDATION_ERROR. Field name → list of validation messages for that field. - `instance` (string) Request path where the error occurred. Present on some errors, such as INTERNAL_ERROR. - `traceId` (string) Only on INTERNAL_ERROR. Send it to support to locate the occurrence. ## Response 404 fields (application/problem+json): - `type` (string) URI identifying the error type. It can contain non-ASCII characters. Example: "https://doc.connectpsp.com/errors/duplicated-external-reference" - `title` (string) Short, human-readable summary. Example: "Referência Externa Duplicada" - `status` (integer) HTTP status code. Example: 409 - `code` (string) Machine-readable error code for programmatic handling. Absent on the 401 for a missing or invalid ApplicationToken. Example: "DUPLICATED_EXTERNAL_REFERENCE" - `detail` (string) Human-readable explanation of this specific occurrence. Example: "Já existe uma operação com o externalReference informado: withdraw_xyz789." - `errors` (object) Only on VALIDATION_ERROR. Field name → list of validation messages for that field. - `instance` (string) Request path where the error occurred. Present on some errors, such as INTERNAL_ERROR. - `traceId` (string) Only on INTERNAL_ERROR. Send it to support to locate the occurrence. ## Response 422 fields (application/problem+json): - `type` (string) URI identifying the error type. It can contain non-ASCII characters. Example: "https://doc.connectpsp.com/errors/duplicated-external-reference" - `title` (string) Short, human-readable summary. Example: "Referência Externa Duplicada" - `status` (integer) HTTP status code. Example: 409 - `code` (string) Machine-readable error code for programmatic handling. Absent on the 401 for a missing or invalid ApplicationToken. Example: "DUPLICATED_EXTERNAL_REFERENCE" - `detail` (string) Human-readable explanation of this specific occurrence. Example: "Já existe uma operação com o externalReference informado: withdraw_xyz789." - `errors` (object) Only on VALIDATION_ERROR. Field name → list of validation messages for that field. - `instance` (string) Request path where the error occurred. Present on some errors, such as INTERNAL_ERROR. - `traceId` (string) Only on INTERNAL_ERROR. Send it to support to locate the occurrence.