Bank Statements
Bank statements describe a statement period and its financial activity. This read-only endpoint is supported for Ramp.
For Ramp, start_date and end_date expose the native statement period boundaries as API dates. In particular, end_date is not rewritten to the inclusive last-day label displayed in Ramp's UI. For example, a native boundary of 2026-11-01T05:00:00Z is exposed as 2026-11-01, while the corresponding UI period may display October 31. Rutter does not subtract a day or infer a billing timezone to make those labels agree. This API contract does not establish Ramp's upstream timezone or timestamp inclusivity/exclusivity semantics.
Use balance_sections for balances broken down by business entity and currency. Each monetary value includes its own currency and an amount in major currency units. Sections are not combined or converted into a single currency. Top-level balances, totals, and currency_code may be null for multi-currency statements or when the platform omits its deprecated summary fields.
Each entry in lines preserves the platform reference ID and its original type, including types such as CARD_TRANSACTION, TRANSFER_PAYMENT, and CASHBACK. transaction_id is null when a corresponding Rutter transaction cannot be resolved. account_id may be null when the platform statement does not identify a single bank account. preceding_statement_id, when present, is a Rutter bank statement ID, not a platform ID.
The statement_url is a stored snapshot from sync. Both list and detail GETs use persisted data; neither performs on-demand PDF URL renewal or contacts Ramp to renew a link. The stored URL may already have expired, so do not treat it as a permanent download link. Expiry is provider-controlled, and exact expiry enforcement is unproven.
A normal refresh can replace an already stored URL when Ramp returns a different URL and persistence/normalization succeeds. URL-only signing changes count as updates and may cause refresh churn even when no financial values changed. This does not guarantee that Ramp will return a different or usable URL, or that an expired link becomes usable simply by making a GET request.
The BankStatement Object
Properties
idstringThe Rutter generated unique ID of the bank statement.
platform_idstringThe platform specific ID of the bank statement.
account_idstringnullableThe Rutter ID of the Bank Account linked to the bank statement. Null when the platform does not identify a single bank account.
preceding_statement_idstringnullableOptionalThe Rutter ID of the Bank Statement linked to the bank statement. The preceding statement in sequence, if resolved.
start_datestringnullableThe ISO 8601 timestamp for when the bank statement period starts.
end_datestringnullableThe ISO 8601 timestamp for when the bank statement period ends.
currency_codeenumnullableThe ISO 4217 currency code of the bank statement totals. Null when there is no single currency for the statement totals.
ending_balancenumbernullableThe ending balance in major currency units. May be null when the platform omits deprecated totals or the statement spans multiple currencies. Use balance_sections instead.
opening_balancenumbernullableThe opening balance in major currency units. May be null when the platform omits deprecated totals or the statement spans multiple currencies. Use balance_sections for the per-entity and per-currency balances.
statement_urlstringnullableThe statement download URL stored during sync. List and detail GETs return the stored URL without on-demand renewal; it may already have expired. A refresh can replace it when Ramp returns a changed URL. Expiry is provider-controlled and exact enforcement is unproven; do not store this as a permanent link.
total_chargesnumbernullableThe total charges in major currency units. May be null when the platform omits deprecated totals or the statement spans multiple currencies. Use balance_sections instead.
total_creditsnumbernullableThe total credits in major currency units. May be null when the platform omits deprecated totals or the statement spans multiple currencies. Use balance_sections instead.
total_paymentsnumbernullableThe total payments in major currency units. May be null when the platform omits deprecated totals or the statement spans multiple currencies. Use balance_sections instead.
linesarrayThe typed platform references to financial activity in the statement.
lines attributesbalance_sectionsarrayThe statement balances broken down by business entity and currency. Sections and each monetary value's currency are preserved, not combined into statement-wide totals.
balance_sections attributeslast_synced_atstringThe ISO 8601 timestamp when the bank statement was last synced by Rutter.
platform_dataobjectOptionalThe raw platform data corresponding to the Rutter object.
List Bank Statements
Request Parameters
access_tokenstringqueryRequiredThe access token of the connection.
cursorstringqueryOptionalUsed to paginate to the next batch of objects. Should be a copy of the next_cursor value from the previous response.
limitintegerqueryOptionalUsed to limit the number of returned objects. Defaults to 50.
sortstringqueryOptionalUsed to sort the response objects, e.g. last_synced_at ASC. If a value is provided but ASC or DESC is not, defaults to ASC. If omitted, defaults to updated_at DESC. Currently supports the updated_at and last_synced_at fields.
expandarrayqueryOptionalInclude platform specific data (includes additional fields not provided by the Rutter object).
last_synced_at_minintegerqueryOptionalUsed to filter objects with a last_synced_at value greater than or equal to the supplied value. Should be a Unix time in milliseconds.
updated_at_maxintegerqueryOptionalUsed to filter objects with a updated_at value less than or equal to the supplied value. Should be a Unix time in milliseconds.
updated_at_minintegerqueryOptionalUsed to filter objects with a updated_at value greater than or equal to the supplied value. Should be a Unix time in milliseconds.
force_fetchenumqueryOptionalUsed to force a response even if the underlying connection has not finished its initial sync.
Response Body
1{
2 "bank_statements": [
3 {
4 "id": "00000000-0000-0000-0000-000000000000",
5 "platform_id": "12345678",
6 "account_id": null,
7 "preceding_statement_id": null,
8 "start_date": "2024-01-01",
9 "end_date": "2024-01-31",
10 "currency_code": null,
11 "ending_balance": null,
12 "opening_balance": null,
13 "statement_url": "https://example.com/statements/january-2024.pdf",
14 "total_charges": null,
15 "total_credits": null,
16 "total_payments": null,
17 "lines": [
18 {
19 "platform_id": "card-transaction-1",
20 "transaction_id": null,
21 "type": "CARD_TRANSACTION"
22 },
23 {
24 "platform_id": "transfer-payment-1",
25 "transaction_id": null,
26 "type": "TRANSFER_PAYMENT"
27 },
28 {
29 "platform_id": "cashback-1",
30 "transaction_id": null,
31 "type": "CASHBACK"
32 }
33 ],
34 "balance_sections": [
35 {
36 "platform_id": "usd-section",
37 "entity_id": "business-entity-1",
38 "charges": {
39 "amount": 200,
40 "currency_code": "USD"
41 },
42 "credits": {
43 "amount": 25,
44 "currency_code": "USD"
45 },
46 "ending_balance": {
47 "amount": 225,
48 "currency_code": "USD"
49 },
50 "opening_balance": {
51 "amount": 100,
52 "currency_code": "USD"
53 },
54 "payments": {
55 "amount": 50,
56 "currency_code": "USD"
57 }
58 },
59 {
60 "platform_id": "eur-section",
61 "entity_id": "business-entity-2",
62 "charges": {
63 "amount": 100,
64 "currency_code": "EUR"
65 },
66 "credits": {
67 "amount": 0,
68 "currency_code": "EUR"
69 },
70 "ending_balance": {
71 "amount": 80,
72 "currency_code": "EUR"
73 },
74 "opening_balance": {
75 "amount": 0,
76 "currency_code": "EUR"
77 },
78 "payments": {
79 "amount": 20,
80 "currency_code": "EUR"
81 }
82 }
83 ],
84 "last_synced_at": "2023-01-02T02:34:56.000Z",
85 "platform_data": {
86 "id": 123,
87 "data": "Varies by platform"
88 }
89 }
90 ],
91 "next_cursor": "MTY3NDgzMTk0Ml82MDY4ZDI0ZC02NGRmLTRmN2EtYTM0Ny0zN2ZmNjY5MGVmMjU=",
92 "connection": {
93 "id": "00000000-0000-0000-0000-000000000000",
94 "orgId": "00000000-0000-0000-0000-000000000000",
95 "platform": "NETSUITE"
96 }
97}
Fetch a Bank Statement
Request Parameters
idstringpathRequiredThe unique ID of the object.
access_tokenstringqueryRequiredThe access token of the connection.
id_typeenumqueryOptionalUsed to indicate the type of id that is supplied. Defaults to rutter. Not currently supported on Sage Intacct or Sage Business Cloud.
force_fetchenumqueryOptionalUsed to force a response even if the underlying connection has not finished its initial sync.
Response Body
1{
2 "bank_statement": {
3 "id": "00000000-0000-0000-0000-000000000000",
4 "platform_id": "12345678",
5 "account_id": null,
6 "preceding_statement_id": null,
7 "start_date": "2024-01-01",
8 "end_date": "2024-01-31",
9 "currency_code": null,
10 "ending_balance": null,
11 "opening_balance": null,
12 "statement_url": "https://example.com/statements/january-2024.pdf",
13 "total_charges": null,
14 "total_credits": null,
15 "total_payments": null,
16 "lines": [
17 {
18 "platform_id": "card-transaction-1",
19 "transaction_id": null,
20 "type": "CARD_TRANSACTION"
21 },
22 {
23 "platform_id": "transfer-payment-1",
24 "transaction_id": null,
25 "type": "TRANSFER_PAYMENT"
26 },
27 {
28 "platform_id": "cashback-1",
29 "transaction_id": null,
30 "type": "CASHBACK"
31 }
32 ],
33 "balance_sections": [
34 {
35 "platform_id": "usd-section",
36 "entity_id": "business-entity-1",
37 "charges": {
38 "amount": 200,
39 "currency_code": "USD"
40 },
41 "credits": {
42 "amount": 25,
43 "currency_code": "USD"
44 },
45 "ending_balance": {
46 "amount": 225,
47 "currency_code": "USD"
48 },
49 "opening_balance": {
50 "amount": 100,
51 "currency_code": "USD"
52 },
53 "payments": {
54 "amount": 50,
55 "currency_code": "USD"
56 }
57 },
58 {
59 "platform_id": "eur-section",
60 "entity_id": "business-entity-2",
61 "charges": {
62 "amount": 100,
63 "currency_code": "EUR"
64 },
65 "credits": {
66 "amount": 0,
67 "currency_code": "EUR"
68 },
69 "ending_balance": {
70 "amount": 80,
71 "currency_code": "EUR"
72 },
73 "opening_balance": {
74 "amount": 0,
75 "currency_code": "EUR"
76 },
77 "payments": {
78 "amount": 20,
79 "currency_code": "EUR"
80 }
81 }
82 ],
83 "last_synced_at": "2023-01-02T02:34:56.000Z",
84 "platform_data": {
85 "id": 123,
86 "data": "Varies by platform"
87 }
88 },
89 "connection": {
90 "id": "00000000-0000-0000-0000-000000000000",
91 "orgId": "00000000-0000-0000-0000-000000000000",
92 "platform": "NETSUITE"
93 }
94}
Have questions?
Contact support for personalized guidance.