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

idstring

The Rutter generated unique ID of the bank statement.

platform_idstring

The platform specific ID of the bank statement.

account_idstringnullable

The Rutter ID of the Bank Account linked to the bank statement. Null when the platform does not identify a single bank account.

preceding_statement_idstringnullableOptional

The Rutter ID of the Bank Statement linked to the bank statement. The preceding statement in sequence, if resolved.

start_datestringnullable

The ISO 8601 timestamp for when the bank statement period starts.

end_datestringnullable

The ISO 8601 timestamp for when the bank statement period ends.

currency_codeenumnullable

The ISO 4217 currency code of the bank statement totals. Null when there is no single currency for the statement totals.

One ofAED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LTL, LVL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, USS, UYI, UYU, UYW, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XFU, XOF, XPD, XPF, XPT, XTS, XXX, YER, ZAR, ZMW, ETH, BTC, or null.
ending_balancenumbernullable

The 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_balancenumbernullable

The 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_urlstringnullable

The 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_chargesnumbernullable

The 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_creditsnumbernullable

The 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_paymentsnumbernullable

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

linesarray

The typed platform references to financial activity in the statement.

Show lines attributes
balance_sectionsarray

The statement balances broken down by business entity and currency. Sections and each monetary value's currency are preserved, not combined into statement-wide totals.

Show balance_sections attributes
last_synced_atstring

The ISO 8601 timestamp when the bank statement was last synced by Rutter.

platform_dataobjectOptional

The raw platform data corresponding to the Rutter object.

Endpoints
GET
/banking/bank_statements
GET
/banking/bank_statements/:id

List Bank Statements

GEThttps://production.rutterapi.com/versioned/banking/bank_statements

Request Parameters

    access_tokenstringqueryRequired

    The access token of the connection.

    cursorstringqueryOptional

    Used to paginate to the next batch of objects. Should be a copy of the next_cursor value from the previous response.

    limitintegerqueryOptional

    Used to limit the number of returned objects. Defaults to 50.

    sortstringqueryOptional

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

    expandarrayqueryOptional

    Include platform specific data (includes additional fields not provided by the Rutter object).

    One or more ofplatform_data.
    last_synced_at_minintegerqueryOptional

    Used 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_maxintegerqueryOptional

    Used 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_minintegerqueryOptional

    Used to filter objects with a updated_at value greater than or equal to the supplied value. Should be a Unix time in milliseconds.

    force_fetchenumqueryOptional

    Used to force a response even if the underlying connection has not finished its initial sync.

    One oftrue or false.

Response Body

200
Example Response Body
JSON
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

GEThttps://production.rutterapi.com/versioned/banking/bank_statements/:id

Request Parameters

    idstringpathRequired

    The unique ID of the object.

    access_tokenstringqueryRequired

    The access token of the connection.

    id_typeenumqueryOptional

    Used to indicate the type of id that is supplied. Defaults to rutter. Not currently supported on Sage Intacct or Sage Business Cloud.

    One ofrutter or platform.
    force_fetchenumqueryOptional

    Used to force a response even if the underlying connection has not finished its initial sync.

    One oftrue or false.

Response Body

200
Example Response Body
JSON
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.

Contact support