From 3ba95e64b6eea6893359d17a21d66eab3a93219b Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Thu, 11 Dec 2025 20:14:50 +0000
Subject: [PATCH 1/6] fix(docs): remove extraneous example object fields
---
src/resources/account-holders.ts | 1 -
1 file changed, 1 deletion(-)
diff --git a/src/resources/account-holders.ts b/src/resources/account-holders.ts
index 8809aa58..950a5fd3 100644
--- a/src/resources/account-holders.ts
+++ b/src/resources/account-holders.ts
@@ -42,7 +42,6 @@ export class AccountHolders extends APIResource {
* },
* control_person: {
* address: { ... },
- * birthdate: '1980-04-12',
* dob: '1991-03-08T08:00:00Z',
* email: 'tom@middle-pluto.com',
* first_name: 'Tom',
From 0078e74adc26ff15a7340684c1b07b662e500e01 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Fri, 12 Dec 2025 15:17:49 +0000
Subject: [PATCH 2/6] feat(api): remove v1/aggregate_balances and related
models
---
.stats.yml | 8 +-
MIGRATION.md | 20 ----
api.md | 20 ----
bin/migration-config.json | 20 ----
src/client.ts | 15 ---
src/resources/aggregate-balances.ts | 97 ----------------
src/resources/cards/aggregate-balances.ts | 104 ------------------
src/resources/cards/cards.ts | 18 ---
src/resources/cards/index.ts | 6 -
src/resources/index.ts | 6 -
.../api-resources/aggregate-balances.test.ts | 31 ------
.../cards/aggregate-balances.test.ts | 31 ------
12 files changed, 4 insertions(+), 372 deletions(-)
delete mode 100644 src/resources/aggregate-balances.ts
delete mode 100644 src/resources/cards/aggregate-balances.ts
delete mode 100644 tests/api-resources/aggregate-balances.test.ts
delete mode 100644 tests/api-resources/cards/aggregate-balances.test.ts
diff --git a/.stats.yml b/.stats.yml
index 315b0f37..ca0f3ae4 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
-configured_endpoints: 176
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/lithic%2Flithic-abe6a4f82f696099fa8ecb1cc44f08979e17d56578ae7ea68b0e9182e21df508.yml
-openapi_spec_hash: d2ce51592a9a234c6f34a1168a31f91f
-config_hash: 2b2786c821f62db49cc630ba45329336
+configured_endpoints: 174
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/lithic%2Flithic-4fd8048b287f409ad2b91f7d0f0b7fc13cc9bc4ccc7859666f21203bab3d2f01.yml
+openapi_spec_hash: a554c54d96a7604a770b6a8b1df46395
+config_hash: df0af4ff639b8a6923a6244d2247910c
diff --git a/MIGRATION.md b/MIGRATION.md
index b79795e2..ccc789d3 100644
--- a/MIGRATION.md
+++ b/MIGRATION.md
@@ -104,12 +104,10 @@ client.example.list(undefined, { headers: { ... } });
- `client.tokenizations.resendActivationCode()`
- `client.tokenizations.updateDigitalCardArt()`
- `client.cards.list()`
-- `client.cards.aggregateBalances.list()`
- `client.cards.balances.list()`
- `client.cards.financialTransactions.list()`
- `client.cardBulkOrders.list()`
- `client.balances.list()`
-- `client.aggregateBalances.list()`
- `client.disputes.list()`
- `client.disputes.initiateEvidenceUpload()`
- `client.disputes.listEvidences()`
@@ -147,24 +145,6 @@ client.example.list(undefined, { headers: { ... } });
-### HTTP method naming
-
-Previously some methods could not be named intuitively due to an internal naming conflict. This has been fixed and the affected methods are now correctly named.
-
-```ts
-// Before
-client.authRules.v2.del();
-client.disputes.del();
-client.events.subscriptions.del();
-client.responderEndpoints.del();
-
-// After
-client.authRules.v2.delete();
-client.disputes.delete();
-client.events.subscriptions.delete();
-client.responderEndpoints.delete();
-```
-
### Removed `httpAgent` in favor of `fetchOptions`
The `httpAgent` client option has been removed in favor of a [platform-specific `fetchOptions` property](https://github.com/lithic-com/lithic-node#fetch-options).
diff --git a/api.md b/api.md
index 63c36ec3..8ee34aa4 100644
--- a/api.md
+++ b/api.md
@@ -189,16 +189,6 @@ Methods:
- client.cards.getEmbedHTML(...args) -> Promise<string>
- client.cards.getEmbedURL(...args) -> string
-## AggregateBalances
-
-Types:
-
-- AggregateBalanceListResponse
-
-Methods:
-
-- client.cards.aggregateBalances.list({ ...params }) -> AggregateBalanceListResponsesSinglePage
-
## Balances
Methods:
@@ -235,16 +225,6 @@ Methods:
- client.balances.list({ ...params }) -> BalancesSinglePage
-# AggregateBalances
-
-Types:
-
-- AggregateBalance
-
-Methods:
-
-- client.aggregateBalances.list({ ...params }) -> AggregateBalancesSinglePage
-
# Disputes
Types:
diff --git a/bin/migration-config.json b/bin/migration-config.json
index 094f7b96..802f17f5 100644
--- a/bin/migration-config.json
+++ b/bin/migration-config.json
@@ -36,11 +36,6 @@
}
]
},
- {
- "base": "authRules.v2",
- "name": "delete",
- "oldName": "del"
- },
{
"base": "authRules.v2.backtests",
"name": "retrieve",
@@ -107,11 +102,6 @@
}
]
},
- {
- "base": "disputes",
- "name": "delete",
- "oldName": "del"
- },
{
"base": "disputes",
"name": "deleteEvidence",
@@ -178,11 +168,6 @@
}
]
},
- {
- "base": "events.subscriptions",
- "name": "delete",
- "oldName": "del"
- },
{
"base": "events.eventSubscriptions",
"name": "resend",
@@ -351,11 +336,6 @@
"type": "options"
}
]
- },
- {
- "base": "responderEndpoints",
- "name": "delete",
- "oldName": "del"
}
]
}
diff --git a/src/client.ts b/src/client.ts
index 18d2201e..5dd95364 100644
--- a/src/client.ts
+++ b/src/client.ts
@@ -64,12 +64,6 @@ import {
Accounts,
AccountsCursorPage,
} from './resources/accounts';
-import {
- AggregateBalance,
- AggregateBalanceListParams,
- AggregateBalances,
- AggregateBalancesSinglePage,
-} from './resources/aggregate-balances';
import { AuthStreamEnrollment, AuthStreamSecret } from './resources/auth-stream-enrollment';
import { Balance, BalanceListParams, Balances, BalancesSinglePage } from './resources/balances';
import {
@@ -1106,7 +1100,6 @@ export class Lithic {
cards: API.Cards = new API.Cards(this);
cardBulkOrders: API.CardBulkOrders = new API.CardBulkOrders(this);
balances: API.Balances = new API.Balances(this);
- aggregateBalances: API.AggregateBalances = new API.AggregateBalances(this);
disputes: API.Disputes = new API.Disputes(this);
disputesV2: API.DisputesV2 = new API.DisputesV2(this);
events: API.Events = new API.Events(this);
@@ -1141,7 +1134,6 @@ Lithic.Tokenizations = Tokenizations;
Lithic.Cards = Cards;
Lithic.CardBulkOrders = CardBulkOrders;
Lithic.Balances = Balances;
-Lithic.AggregateBalances = AggregateBalances;
Lithic.Disputes = Disputes;
Lithic.DisputesV2 = DisputesV2;
Lithic.Events = Events;
@@ -1274,13 +1266,6 @@ export declare namespace Lithic {
type BalanceListParams as BalanceListParams,
};
- export {
- AggregateBalances as AggregateBalances,
- type AggregateBalance as AggregateBalance,
- type AggregateBalancesSinglePage as AggregateBalancesSinglePage,
- type AggregateBalanceListParams as AggregateBalanceListParams,
- };
-
export {
Disputes as Disputes,
type Dispute as Dispute,
diff --git a/src/resources/aggregate-balances.ts b/src/resources/aggregate-balances.ts
deleted file mode 100644
index cc5094dc..00000000
--- a/src/resources/aggregate-balances.ts
+++ /dev/null
@@ -1,97 +0,0 @@
-// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-import { APIResource } from '../core/resource';
-import { PagePromise, SinglePage } from '../core/pagination';
-import { RequestOptions } from '../internal/request-options';
-
-export class AggregateBalances extends APIResource {
- /**
- * Get the aggregated balance across all end-user accounts by financial account
- * type
- */
- list(
- query: AggregateBalanceListParams | null | undefined = {},
- options?: RequestOptions,
- ): PagePromise {
- return this._client.getAPIList('/v1/aggregate_balances', SinglePage, {
- query,
- ...options,
- });
- }
-}
-
-export type AggregateBalancesSinglePage = SinglePage;
-
-/**
- * Aggregate Balance across all end-user accounts
- */
-export interface AggregateBalance {
- /**
- * Funds available for spend in the currency's smallest unit (e.g., cents for USD)
- */
- available_amount: number;
-
- /**
- * Date and time for when the balance was first created.
- */
- created: string;
-
- /**
- * 3-character alphabetic ISO 4217 code for the local currency of the balance.
- */
- currency: string;
-
- /**
- * Type of financial account
- */
- financial_account_type: 'ISSUING' | 'OPERATING' | 'RESERVE' | 'SECURITY';
-
- /**
- * Globally unique identifier for the financial account that had its balance
- * updated most recently
- */
- last_financial_account_token: string;
-
- /**
- * Globally unique identifier for the last transaction event that impacted this
- * balance
- */
- last_transaction_event_token: string;
-
- /**
- * Globally unique identifier for the last transaction that impacted this balance
- */
- last_transaction_token: string;
-
- /**
- * Funds not available for spend due to card authorizations or pending ACH release.
- * Shown in the currency's smallest unit (e.g., cents for USD)
- */
- pending_amount: number;
-
- /**
- * The sum of available and pending balance in the currency's smallest unit (e.g.,
- * cents for USD)
- */
- total_amount: number;
-
- /**
- * Date and time for when the balance was last updated.
- */
- updated: string;
-}
-
-export interface AggregateBalanceListParams {
- /**
- * Get the aggregate balance for a given Financial Account type.
- */
- financial_account_type?: 'ISSUING' | 'OPERATING' | 'RESERVE' | 'SECURITY';
-}
-
-export declare namespace AggregateBalances {
- export {
- type AggregateBalance as AggregateBalance,
- type AggregateBalancesSinglePage as AggregateBalancesSinglePage,
- type AggregateBalanceListParams as AggregateBalanceListParams,
- };
-}
diff --git a/src/resources/cards/aggregate-balances.ts b/src/resources/cards/aggregate-balances.ts
deleted file mode 100644
index 1b1da61d..00000000
--- a/src/resources/cards/aggregate-balances.ts
+++ /dev/null
@@ -1,104 +0,0 @@
-// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-import { APIResource } from '../../core/resource';
-import { PagePromise, SinglePage } from '../../core/pagination';
-import { RequestOptions } from '../../internal/request-options';
-
-export class AggregateBalances extends APIResource {
- /**
- * Get the aggregated card balance across all end-user accounts.
- *
- * @example
- * ```ts
- * // Automatically fetches more pages as needed.
- * for await (const aggregateBalanceListResponse of client.cards.aggregateBalances.list()) {
- * // ...
- * }
- * ```
- */
- list(
- query: AggregateBalanceListParams | null | undefined = {},
- options?: RequestOptions,
- ): PagePromise {
- return this._client.getAPIList('/v1/cards/aggregate_balances', SinglePage, {
- query,
- ...options,
- });
- }
-}
-
-export type AggregateBalanceListResponsesSinglePage = SinglePage;
-
-/**
- * Card Aggregate Balance across all end-user accounts
- */
-export interface AggregateBalanceListResponse {
- /**
- * Funds available for spend in the currency's smallest unit (e.g., cents for USD)
- */
- available_amount: number;
-
- /**
- * Date and time for when the balance was first created.
- */
- created: string;
-
- /**
- * 3-character alphabetic ISO 4217 code for the local currency of the balance.
- */
- currency: string;
-
- /**
- * Globally unique identifier for the card that had its balance updated most
- * recently
- */
- last_card_token: string;
-
- /**
- * Globally unique identifier for the last transaction event that impacted this
- * balance
- */
- last_transaction_event_token: string;
-
- /**
- * Globally unique identifier for the last transaction that impacted this balance
- */
- last_transaction_token: string;
-
- /**
- * Funds not available for spend due to card authorizations or pending ACH release.
- * Shown in the currency's smallest unit (e.g., cents for USD)
- */
- pending_amount: number;
-
- /**
- * The sum of available and pending balance in the currency's smallest unit (e.g.,
- * cents for USD)
- */
- total_amount: number;
-
- /**
- * Date and time for when the balance was last updated.
- */
- updated: string;
-}
-
-export interface AggregateBalanceListParams {
- /**
- * Cardholder to retrieve aggregate balances for.
- */
- account_token?: string;
-
- /**
- * Business to retrieve aggregate balances for.
- */
- business_account_token?: string;
-}
-
-export declare namespace AggregateBalances {
- export {
- type AggregateBalanceListResponse as AggregateBalanceListResponse,
- type AggregateBalanceListResponsesSinglePage as AggregateBalanceListResponsesSinglePage,
- type AggregateBalanceListParams as AggregateBalanceListParams,
- };
-}
diff --git a/src/resources/cards/cards.ts b/src/resources/cards/cards.ts
index 4eb4bdda..fd728399 100644
--- a/src/resources/cards/cards.ts
+++ b/src/resources/cards/cards.ts
@@ -2,13 +2,6 @@
import { APIResource } from '../../core/resource';
import * as Shared from '../shared';
-import * as AggregateBalancesAPI from './aggregate-balances';
-import {
- AggregateBalanceListParams,
- AggregateBalanceListResponse,
- AggregateBalanceListResponsesSinglePage,
- AggregateBalances,
-} from './aggregate-balances';
import * as BalancesAPI from './balances';
import { BalanceListParams, Balances } from './balances';
import * as FinancialTransactionsAPI from './financial-transactions';
@@ -25,9 +18,6 @@ import { path } from '../../internal/utils/path';
import { createHmac } from 'crypto';
export class Cards extends APIResource {
- aggregateBalances: AggregateBalancesAPI.AggregateBalances = new AggregateBalancesAPI.AggregateBalances(
- this._client,
- );
balances: BalancesAPI.Balances = new BalancesAPI.Balances(this._client);
financialTransactions: FinancialTransactionsAPI.FinancialTransactions =
new FinancialTransactionsAPI.FinancialTransactions(this._client);
@@ -1523,7 +1513,6 @@ export interface CardWebProvisionParams {
server_session_id?: string;
}
-Cards.AggregateBalances = AggregateBalances;
Cards.Balances = Balances;
Cards.FinancialTransactions = FinancialTransactions;
@@ -1552,13 +1541,6 @@ export declare namespace Cards {
type CardWebProvisionParams as CardWebProvisionParams,
};
- export {
- AggregateBalances as AggregateBalances,
- type AggregateBalanceListResponse as AggregateBalanceListResponse,
- type AggregateBalanceListResponsesSinglePage as AggregateBalanceListResponsesSinglePage,
- type AggregateBalanceListParams as AggregateBalanceListParams,
- };
-
export { Balances as Balances, type BalanceListParams as BalanceListParams };
export {
diff --git a/src/resources/cards/index.ts b/src/resources/cards/index.ts
index 2ff2f8af..c857978c 100644
--- a/src/resources/cards/index.ts
+++ b/src/resources/cards/index.ts
@@ -1,11 +1,5 @@
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-export {
- AggregateBalances,
- type AggregateBalanceListResponse,
- type AggregateBalanceListParams,
- type AggregateBalanceListResponsesSinglePage,
-} from './aggregate-balances';
export { Balances, type BalanceListParams } from './balances';
export {
Cards,
diff --git a/src/resources/index.ts b/src/resources/index.ts
index 416017d6..fa2a60cb 100644
--- a/src/resources/index.ts
+++ b/src/resources/index.ts
@@ -39,12 +39,6 @@ export {
type AccountListParams,
type AccountsCursorPage,
} from './accounts';
-export {
- AggregateBalances,
- type AggregateBalance,
- type AggregateBalanceListParams,
- type AggregateBalancesSinglePage,
-} from './aggregate-balances';
export { AuthRules } from './auth-rules/auth-rules';
export { AuthStreamEnrollment, type AuthStreamSecret } from './auth-stream-enrollment';
export { Balances, type Balance, type BalanceListParams, type BalancesSinglePage } from './balances';
diff --git a/tests/api-resources/aggregate-balances.test.ts b/tests/api-resources/aggregate-balances.test.ts
deleted file mode 100644
index 4e85cd6c..00000000
--- a/tests/api-resources/aggregate-balances.test.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-import Lithic from 'lithic';
-
-const client = new Lithic({
- apiKey: 'My Lithic API Key',
- baseURL: process.env['TEST_API_BASE_URL'] ?? 'http://127.0.0.1:4010',
-});
-
-describe('resource aggregateBalances', () => {
- test('list', async () => {
- const responsePromise = client.aggregateBalances.list();
- const rawResponse = await responsePromise.asResponse();
- expect(rawResponse).toBeInstanceOf(Response);
- const response = await responsePromise;
- expect(response).not.toBeInstanceOf(Response);
- const dataAndResponse = await responsePromise.withResponse();
- expect(dataAndResponse.data).toBe(response);
- expect(dataAndResponse.response).toBe(rawResponse);
- });
-
- test('list: request options and params are passed correctly', async () => {
- // ensure the request options are being passed correctly by passing an invalid HTTP method in order to cause an error
- await expect(
- client.aggregateBalances.list(
- { financial_account_type: 'ISSUING' },
- { path: '/_stainless_unknown_path' },
- ),
- ).rejects.toThrow(Lithic.NotFoundError);
- });
-});
diff --git a/tests/api-resources/cards/aggregate-balances.test.ts b/tests/api-resources/cards/aggregate-balances.test.ts
deleted file mode 100644
index e911373e..00000000
--- a/tests/api-resources/cards/aggregate-balances.test.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-import Lithic from 'lithic';
-
-const client = new Lithic({
- apiKey: 'My Lithic API Key',
- baseURL: process.env['TEST_API_BASE_URL'] ?? 'http://127.0.0.1:4010',
-});
-
-describe('resource aggregateBalances', () => {
- test('list', async () => {
- const responsePromise = client.cards.aggregateBalances.list();
- const rawResponse = await responsePromise.asResponse();
- expect(rawResponse).toBeInstanceOf(Response);
- const response = await responsePromise;
- expect(response).not.toBeInstanceOf(Response);
- const dataAndResponse = await responsePromise.withResponse();
- expect(dataAndResponse.data).toBe(response);
- expect(dataAndResponse.response).toBe(rawResponse);
- });
-
- test('list: request options and params are passed correctly', async () => {
- // ensure the request options are being passed correctly by passing an invalid HTTP method in order to cause an error
- await expect(
- client.cards.aggregateBalances.list(
- { account_token: 'account_token', business_account_token: 'business_account_token' },
- { path: '/_stainless_unknown_path' },
- ),
- ).rejects.toThrow(Lithic.NotFoundError);
- });
-});
From 538d96e5eba1b99e56839f5b0aac87496b681279 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Fri, 19 Dec 2025 10:13:05 +0000
Subject: [PATCH 3/6] feat(api): add external_id to payment_event feat(api):
add get /v1/transfer_limits endpoint feat(api): add post
/v1/book_transfers/{book_transfer_token}/retry endpoint
---
.stats.yml | 8 +-
MIGRATION.md | 1 +
api.md | 11 +
src/client.ts | 17 ++
src/resources/book-transfers.ts | 19 ++
src/resources/index.ts | 7 +
src/resources/payments.ts | 5 +
src/resources/transfer-limits.ts | 226 ++++++++++++++++++++
tests/api-resources/book-transfers.test.ts | 19 ++
tests/api-resources/transfer-limits.test.ts | 28 +++
10 files changed, 337 insertions(+), 4 deletions(-)
create mode 100644 src/resources/transfer-limits.ts
create mode 100644 tests/api-resources/transfer-limits.test.ts
diff --git a/.stats.yml b/.stats.yml
index ca0f3ae4..15f16473 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
-configured_endpoints: 174
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/lithic%2Flithic-4fd8048b287f409ad2b91f7d0f0b7fc13cc9bc4ccc7859666f21203bab3d2f01.yml
-openapi_spec_hash: a554c54d96a7604a770b6a8b1df46395
-config_hash: df0af4ff639b8a6923a6244d2247910c
+configured_endpoints: 176
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/lithic%2Flithic-1916ba0e95ce59f0feeebd6f3d2130990c812be7eabcda6e23c5fa096db912c7.yml
+openapi_spec_hash: b465e7cb5c2dee36b5bdc6d540b2a530
+config_hash: a8a802e2c916a5d36a025bf64ab55ee7
diff --git a/MIGRATION.md b/MIGRATION.md
index ccc789d3..4ed0a385 100644
--- a/MIGRATION.md
+++ b/MIGRATION.md
@@ -142,6 +142,7 @@ client.example.list(undefined, { headers: { ... } });
- `client.fundingEvents.list()`
- `client.networkPrograms.list()`
- `client.accountActivity.list()`
+- `client.transferLimits.list()`
diff --git a/api.md b/api.md
index 8ee34aa4..0ca0a4b9 100644
--- a/api.md
+++ b/api.md
@@ -604,6 +604,7 @@ Methods:
- client.bookTransfers.create({ ...params }) -> BookTransferResponse
- client.bookTransfers.retrieve(bookTransferToken) -> BookTransferResponse
- client.bookTransfers.list({ ...params }) -> BookTransferResponsesCursorPage
+- client.bookTransfers.retry(bookTransferToken, { ...params }) -> BookTransferResponse
- client.bookTransfers.reverse(bookTransferToken, { ...params }) -> BookTransferResponse
# CreditProducts
@@ -717,6 +718,16 @@ Methods:
- client.accountActivity.list({ ...params }) -> AccountActivityListResponsesCursorPage
- client.accountActivity.retrieveTransaction(transactionToken) -> AccountActivityRetrieveTransactionResponse
+# TransferLimits
+
+Types:
+
+- TransferLimitsResponse
+
+Methods:
+
+- client.transferLimits.list({ ...params }) -> TransferLimitsResponseDataSinglePage
+
# Webhooks
Types:
diff --git a/src/client.ts b/src/client.ts
index 5dd95364..55edbc80 100644
--- a/src/client.ts
+++ b/src/client.ts
@@ -71,6 +71,7 @@ import {
BookTransferListParams,
BookTransferResponse,
BookTransferResponsesCursorPage,
+ BookTransferRetryParams,
BookTransferReverseParams,
BookTransfers,
} from './resources/book-transfers';
@@ -190,6 +191,12 @@ import {
TokenizationsCursorPage,
WalletDecisioningInfo,
} from './resources/tokenizations';
+import {
+ TransferLimitListParams,
+ TransferLimits,
+ TransferLimitsResponse,
+ TransferLimitsResponseDataSinglePage,
+} from './resources/transfer-limits';
import { Transfer, TransferCreateParams, Transfers } from './resources/transfers';
import {
AccountHolderCreatedWebhookEvent,
@@ -1122,6 +1129,7 @@ export class Lithic {
fraud: API.Fraud = new API.Fraud(this);
networkPrograms: API.NetworkPrograms = new API.NetworkPrograms(this);
accountActivity: API.AccountActivity = new API.AccountActivity(this);
+ transferLimits: API.TransferLimits = new API.TransferLimits(this);
webhooks: API.Webhooks = new API.Webhooks(this);
}
@@ -1156,6 +1164,7 @@ Lithic.FundingEvents = FundingEvents;
Lithic.Fraud = Fraud;
Lithic.NetworkPrograms = NetworkPrograms;
Lithic.AccountActivity = AccountActivity;
+Lithic.TransferLimits = TransferLimits;
Lithic.Webhooks = Webhooks;
export declare namespace Lithic {
@@ -1422,6 +1431,7 @@ export declare namespace Lithic {
type BookTransferResponsesCursorPage as BookTransferResponsesCursorPage,
type BookTransferCreateParams as BookTransferCreateParams,
type BookTransferListParams as BookTransferListParams,
+ type BookTransferRetryParams as BookTransferRetryParams,
type BookTransferReverseParams as BookTransferReverseParams,
};
@@ -1481,6 +1491,13 @@ export declare namespace Lithic {
type AccountActivityListParams as AccountActivityListParams,
};
+ export {
+ TransferLimits as TransferLimits,
+ type TransferLimitsResponse as TransferLimitsResponse,
+ type TransferLimitsResponseDataSinglePage as TransferLimitsResponseDataSinglePage,
+ type TransferLimitListParams as TransferLimitListParams,
+ };
+
export {
Webhooks as Webhooks,
type AccountHolderCreatedWebhookEvent as AccountHolderCreatedWebhookEvent,
diff --git a/src/resources/book-transfers.ts b/src/resources/book-transfers.ts
index 2fd73ae3..f1f0a7d0 100644
--- a/src/resources/book-transfers.ts
+++ b/src/resources/book-transfers.ts
@@ -36,6 +36,17 @@ export class BookTransfers extends APIResource {
});
}
+ /**
+ * Retry a book transfer that has been declined
+ */
+ retry(
+ bookTransferToken: string,
+ body: BookTransferRetryParams,
+ options?: RequestOptions,
+ ): APIPromise {
+ return this._client.post(path`/v1/book_transfers/${bookTransferToken}/retry`, { body, ...options });
+ }
+
/**
* Reverse a book transfer
*/
@@ -383,6 +394,13 @@ export interface BookTransferListParams extends CursorPageParams {
status?: 'DECLINED' | 'SETTLED';
}
+export interface BookTransferRetryParams {
+ /**
+ * Globally unique identifier for the retry.
+ */
+ retry_token: string;
+}
+
export interface BookTransferReverseParams {
/**
* Optional descriptor for the reversal.
@@ -396,6 +414,7 @@ export declare namespace BookTransfers {
type BookTransferResponsesCursorPage as BookTransferResponsesCursorPage,
type BookTransferCreateParams as BookTransferCreateParams,
type BookTransferListParams as BookTransferListParams,
+ type BookTransferRetryParams as BookTransferRetryParams,
type BookTransferReverseParams as BookTransferReverseParams,
};
}
diff --git a/src/resources/index.ts b/src/resources/index.ts
index fa2a60cb..db788dcb 100644
--- a/src/resources/index.ts
+++ b/src/resources/index.ts
@@ -47,6 +47,7 @@ export {
type BookTransferResponse,
type BookTransferCreateParams,
type BookTransferListParams,
+ type BookTransferRetryParams,
type BookTransferReverseParams,
type BookTransferResponsesCursorPage,
} from './book-transfers';
@@ -274,6 +275,12 @@ export {
type TransactionSimulateVoidParams,
type TransactionsCursorPage,
} from './transactions/transactions';
+export {
+ TransferLimits,
+ type TransferLimitsResponse,
+ type TransferLimitListParams,
+ type TransferLimitsResponseDataSinglePage,
+} from './transfer-limits';
export { Transfers, type Transfer, type TransferCreateParams } from './transfers';
export {
Webhooks,
diff --git a/src/resources/payments.ts b/src/resources/payments.ts
index 4ab96af0..8d2a4486 100644
--- a/src/resources/payments.ts
+++ b/src/resources/payments.ts
@@ -406,6 +406,11 @@ export namespace Payment {
| 'PROGRAM_DAILY_LIMIT_EXCEEDED'
| 'PROGRAM_MONTHLY_LIMIT_EXCEEDED'
>;
+
+ /**
+ * Payment event external ID, for example, ACH trace number.
+ */
+ external_id?: string | null;
}
export interface ACHMethodAttributes {
diff --git a/src/resources/transfer-limits.ts b/src/resources/transfer-limits.ts
new file mode 100644
index 00000000..0dc70708
--- /dev/null
+++ b/src/resources/transfer-limits.ts
@@ -0,0 +1,226 @@
+// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+import { APIResource } from '../core/resource';
+import { PagePromise, SinglePage } from '../core/pagination';
+import { RequestOptions } from '../internal/request-options';
+
+export class TransferLimits extends APIResource {
+ /**
+ * Get transfer limits for a specified date
+ */
+ list(
+ query: TransferLimitListParams | null | undefined = {},
+ options?: RequestOptions,
+ ): PagePromise {
+ return this._client.getAPIList('/v1/transfer_limits', SinglePage, {
+ query,
+ ...options,
+ });
+ }
+}
+
+export type TransferLimitsResponseDataSinglePage = SinglePage;
+
+export interface TransferLimitsResponse {
+ /**
+ * List of transfer limits
+ */
+ data: Array;
+
+ /**
+ * Whether there are more transfer limits
+ */
+ has_more: boolean;
+}
+
+export namespace TransferLimitsResponse {
+ export interface Data {
+ /**
+ * Company ID
+ */
+ company_id: string;
+
+ /**
+ * Daily limits with progress
+ */
+ daily_limit: Data.DailyLimit;
+
+ /**
+ * The date for the limit view (ISO format)
+ */
+ date: string;
+
+ /**
+ * Whether the company is a FBO; based on the company ID prefix
+ */
+ is_fbo: boolean;
+
+ /**
+ * Monthly limits with progress
+ */
+ monthly_limit: Data.MonthlyLimit;
+
+ /**
+ * Program transaction limits
+ */
+ program_limit_per_transaction: Data.ProgramLimitPerTransaction;
+ }
+
+ export namespace Data {
+ /**
+ * Daily limits with progress
+ */
+ export interface DailyLimit {
+ /**
+ * Credit limits
+ */
+ credit: DailyLimit.Credit;
+
+ /**
+ * Debit limits
+ */
+ debit: DailyLimit.Debit;
+ }
+
+ export namespace DailyLimit {
+ /**
+ * Credit limits
+ */
+ export interface Credit {
+ /**
+ * The limit amount
+ */
+ limit: number;
+
+ /**
+ * Amount originated towards limit
+ */
+ amount_originated?: number;
+ }
+
+ /**
+ * Debit limits
+ */
+ export interface Debit {
+ /**
+ * The limit amount
+ */
+ limit: number;
+
+ /**
+ * Amount originated towards limit
+ */
+ amount_originated?: number;
+ }
+ }
+
+ /**
+ * Monthly limits with progress
+ */
+ export interface MonthlyLimit {
+ /**
+ * Credit limits
+ */
+ credit: MonthlyLimit.Credit;
+
+ /**
+ * Debit limits
+ */
+ debit: MonthlyLimit.Debit;
+ }
+
+ export namespace MonthlyLimit {
+ /**
+ * Credit limits
+ */
+ export interface Credit {
+ /**
+ * The limit amount
+ */
+ limit: number;
+
+ /**
+ * Amount originated towards limit
+ */
+ amount_originated?: number;
+ }
+
+ /**
+ * Debit limits
+ */
+ export interface Debit {
+ /**
+ * The limit amount
+ */
+ limit: number;
+
+ /**
+ * Amount originated towards limit
+ */
+ amount_originated?: number;
+ }
+ }
+
+ /**
+ * Program transaction limits
+ */
+ export interface ProgramLimitPerTransaction {
+ /**
+ * Credit limits
+ */
+ credit: ProgramLimitPerTransaction.Credit;
+
+ /**
+ * Debit limits
+ */
+ debit: ProgramLimitPerTransaction.Debit;
+ }
+
+ export namespace ProgramLimitPerTransaction {
+ /**
+ * Credit limits
+ */
+ export interface Credit {
+ /**
+ * The limit amount
+ */
+ limit: number;
+
+ /**
+ * Amount originated towards limit
+ */
+ amount_originated?: number;
+ }
+
+ /**
+ * Debit limits
+ */
+ export interface Debit {
+ /**
+ * The limit amount
+ */
+ limit: number;
+
+ /**
+ * Amount originated towards limit
+ */
+ amount_originated?: number;
+ }
+ }
+ }
+}
+
+export interface TransferLimitListParams {
+ /**
+ * Date for which to retrieve transfer limits (ISO 8601 format)
+ */
+ date?: string;
+}
+
+export declare namespace TransferLimits {
+ export {
+ type TransferLimitsResponse as TransferLimitsResponse,
+ type TransferLimitsResponseDataSinglePage as TransferLimitsResponseDataSinglePage,
+ type TransferLimitListParams as TransferLimitListParams,
+ };
+}
diff --git a/tests/api-resources/book-transfers.test.ts b/tests/api-resources/book-transfers.test.ts
index aae73ccc..2b9a0f5d 100644
--- a/tests/api-resources/book-transfers.test.ts
+++ b/tests/api-resources/book-transfers.test.ts
@@ -85,6 +85,25 @@ describe('resource bookTransfers', () => {
).rejects.toThrow(Lithic.NotFoundError);
});
+ test('retry: only required params', async () => {
+ const responsePromise = client.bookTransfers.retry('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', {
+ retry_token: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
+ });
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
+
+ test('retry: required and optional params', async () => {
+ const response = await client.bookTransfers.retry('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', {
+ retry_token: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
+ });
+ });
+
test('reverse', async () => {
const responsePromise = client.bookTransfers.reverse('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', {});
const rawResponse = await responsePromise.asResponse();
diff --git a/tests/api-resources/transfer-limits.test.ts b/tests/api-resources/transfer-limits.test.ts
new file mode 100644
index 00000000..6c88b03d
--- /dev/null
+++ b/tests/api-resources/transfer-limits.test.ts
@@ -0,0 +1,28 @@
+// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+import Lithic from 'lithic';
+
+const client = new Lithic({
+ apiKey: 'My Lithic API Key',
+ baseURL: process.env['TEST_API_BASE_URL'] ?? 'http://127.0.0.1:4010',
+});
+
+describe('resource transferLimits', () => {
+ test('list', async () => {
+ const responsePromise = client.transferLimits.list();
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
+
+ test('list: request options and params are passed correctly', async () => {
+ // ensure the request options are being passed correctly by passing an invalid HTTP method in order to cause an error
+ await expect(
+ client.transferLimits.list({ date: '2019-12-27' }, { path: '/_stainless_unknown_path' }),
+ ).rejects.toThrow(Lithic.NotFoundError);
+ });
+});
From e7c375bf328756a708d54e8a33e2ed154ebfeb93 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Tue, 23 Dec 2025 09:31:56 +0000
Subject: [PATCH 4/6] feat(api): add WIRE_DRAWDOWN_REQUEST transfer type
docs(api): clarify description of token / retry_token when it serves as
idempotency key feat(api): remove unnecessary X-Lithic-Pagination header
---
.stats.yml | 6 +++---
README.md | 18 ------------------
src/client.ts | 1 -
src/resources/book-transfers.ts | 3 ++-
src/resources/external-payments.ts | 4 ++++
src/resources/management-operations.ts | 4 ++++
src/resources/payments.ts | 3 ++-
7 files changed, 15 insertions(+), 24 deletions(-)
diff --git a/.stats.yml b/.stats.yml
index 15f16473..f9404c37 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 176
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/lithic%2Flithic-1916ba0e95ce59f0feeebd6f3d2130990c812be7eabcda6e23c5fa096db912c7.yml
-openapi_spec_hash: b465e7cb5c2dee36b5bdc6d540b2a530
-config_hash: a8a802e2c916a5d36a025bf64ab55ee7
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/lithic%2Flithic-854de7cc8f79e150ffe98f038ce9f39367010b2bdfffc9992be2738697dc4880.yml
+openapi_spec_hash: fd471b20f3eda1e00cdebf028cbfe867
+config_hash: 9dddee5f7af579864599849cb28a0770
diff --git a/README.md b/README.md
index 082b77a9..967bcdd1 100644
--- a/README.md
+++ b/README.md
@@ -156,23 +156,6 @@ while (page.hasNextPage()) {
}
```
-## Default Headers
-
-We automatically send the `X-Lithic-Pagination` header set to `cursor`.
-
-If you need to, you can override it by setting default headers on a per-request basis.
-
-```ts
-import Lithic from 'lithic';
-
-const client = new Lithic();
-
-const card = await client.cards.create(
- { type: 'SINGLE_USE' },
- { headers: { 'X-Lithic-Pagination': 'My-Custom-Value' } },
-);
-```
-
## Webhooks
Lithic uses webhooks to notify your application when events happen. The library provides signature verification via the `standardwebhooks` package.
@@ -231,7 +214,6 @@ export default async function POST(req: Request) {
> [!NOTE]
> If you're using the pages router, you will need [this trick](https://vancelucas.com/blog/how-to-access-raw-body-data-with-next-js/) to get the raw body.
-
## Advanced Usage
### Accessing raw Response data (e.g., headers)
diff --git a/src/client.ts b/src/client.ts
index 55edbc80..5cbc3a2c 100644
--- a/src/client.ts
+++ b/src/client.ts
@@ -1029,7 +1029,6 @@ export class Lithic {
'X-Stainless-Retry-Count': String(retryCount),
...(options.timeout ? { 'X-Stainless-Timeout': String(Math.trunc(options.timeout / 1000)) } : {}),
...getPlatformHeaders(),
- 'X-Lithic-Pagination': 'cursor',
},
await this.authHeaders(options),
this._options.defaultHeaders,
diff --git a/src/resources/book-transfers.ts b/src/resources/book-transfers.ts
index f1f0a7d0..93880beb 100644
--- a/src/resources/book-transfers.ts
+++ b/src/resources/book-transfers.ts
@@ -396,7 +396,8 @@ export interface BookTransferListParams extends CursorPageParams {
export interface BookTransferRetryParams {
/**
- * Globally unique identifier for the retry.
+ * Customer-provided token that will serve as an idempotency token. This token will
+ * become the transaction token.
*/
retry_token: string;
}
diff --git a/src/resources/external-payments.ts b/src/resources/external-payments.ts
index 20c6aed7..c51ffd83 100644
--- a/src/resources/external-payments.ts
+++ b/src/resources/external-payments.ts
@@ -211,6 +211,10 @@ export interface ExternalPaymentCreateParams {
payment_type: 'DEPOSIT' | 'WITHDRAWAL';
+ /**
+ * Customer-provided token that will serve as an idempotency token. This token will
+ * become the transaction token.
+ */
token?: string;
memo?: string;
diff --git a/src/resources/management-operations.ts b/src/resources/management-operations.ts
index a7f0e833..b4ee63b2 100644
--- a/src/resources/management-operations.ts
+++ b/src/resources/management-operations.ts
@@ -237,6 +237,10 @@ export interface ManagementOperationCreateParams {
financial_account_token: string;
+ /**
+ * Customer-provided token that will serve as an idempotency token. This token will
+ * become the transaction token.
+ */
token?: string;
memo?: string;
diff --git a/src/resources/payments.ts b/src/resources/payments.ts
index 8d2a4486..aba57c65 100644
--- a/src/resources/payments.ts
+++ b/src/resources/payments.ts
@@ -317,7 +317,8 @@ export interface Payment {
| 'WIRE_INBOUND_PAYMENT'
| 'WIRE_INBOUND_ADMIN'
| 'WIRE_OUTBOUND_PAYMENT'
- | 'WIRE_OUTBOUND_ADMIN';
+ | 'WIRE_OUTBOUND_ADMIN'
+ | 'WIRE_DRAWDOWN_REQUEST';
/**
* User-defined identifier
From 0b4c11edeffb476c403be5b84c1e310fd5dfc063 Mon Sep 17 00:00:00 2001
From: Sam El-Borai
Date: Fri, 26 Dec 2025 20:03:03 +0100
Subject: [PATCH 5/6] chore: formatting
---
.github/workflows/release-doctor.yml | 1 -
README.md | 2 +-
bin/cli | 14 ++++++++++----
3 files changed, 11 insertions(+), 6 deletions(-)
diff --git a/.github/workflows/release-doctor.yml b/.github/workflows/release-doctor.yml
index ab38d227..f8e50efc 100644
--- a/.github/workflows/release-doctor.yml
+++ b/.github/workflows/release-doctor.yml
@@ -19,4 +19,3 @@ jobs:
bash ./bin/check-release-environment
env:
NPM_TOKEN: ${{ secrets.LITHIC_NPM_TOKEN || secrets.NPM_TOKEN }}
-
diff --git a/README.md b/README.md
index 967bcdd1..736886dd 100644
--- a/README.md
+++ b/README.md
@@ -184,7 +184,7 @@ switch (event.event_type) {
```ts
// Verify signature without parsing the event
-lithic.webhooks.verifySignature(body, headers)
+lithic.webhooks.verifySignature(body, headers);
// Parse only - skips signature verification
const event = lithic.webhooks.parseUnsafe(body);
diff --git a/bin/cli b/bin/cli
index 21b41a9a..8f314993 100755
--- a/bin/cli
+++ b/bin/cli
@@ -8,15 +8,21 @@ const commands = {
fn: () => {
const result = spawnSync(
'npx',
- ['-y', 'https://github.com/stainless-api/migrate-ts/releases/download/0.0.2/stainless-api-migrate-0.0.2-6.tgz', '--migrationConfig', require.resolve('./migration-config.json'), ...process.argv.slice(3)],
+ [
+ '-y',
+ 'https://github.com/stainless-api/migrate-ts/releases/download/0.0.2/stainless-api-migrate-0.0.2-6.tgz',
+ '--migrationConfig',
+ require.resolve('./migration-config.json'),
+ ...process.argv.slice(3),
+ ],
{ stdio: 'inherit' },
);
if (result.status !== 0) {
process.exit(result.status);
}
- }
- }
-}
+ },
+ },
+};
function exitWithHelp() {
console.log(`Usage: lithic `);
From 49f703eee4de4a5cb1e6cf50f8e1cc3c54279bd7 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Fri, 26 Dec 2025 19:03:35 +0000
Subject: [PATCH 6/6] release: 0.127.0
---
.release-please-manifest.json | 2 +-
CHANGELOG.md | 28 ++++++++++++++++++++++++++++
package.json | 2 +-
src/version.ts | 2 +-
4 files changed, 31 insertions(+), 3 deletions(-)
diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index 0ad84350..88624072 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,3 +1,3 @@
{
- ".": "0.126.0"
+ ".": "0.127.0"
}
diff --git a/CHANGELOG.md b/CHANGELOG.md
index d30a0ce5..5796475c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,33 @@
# Changelog
+## 0.127.0 (2025-12-26)
+
+Full Changelog: [v0.126.0...v0.127.0](https://github.com/lithic-com/lithic-node/compare/v0.126.0...v0.127.0)
+
+### Features
+
+* **api:** add external_id to payment_event ([538d96e](https://github.com/lithic-com/lithic-node/commit/538d96e5eba1b99e56839f5b0aac87496b681279))
+* **api:** add get /v1/transfer_limits endpoint ([538d96e](https://github.com/lithic-com/lithic-node/commit/538d96e5eba1b99e56839f5b0aac87496b681279))
+* **api:** add post /v1/book_transfers/{book_transfer_token}/retry endpoint ([538d96e](https://github.com/lithic-com/lithic-node/commit/538d96e5eba1b99e56839f5b0aac87496b681279))
+* **api:** add WIRE_DRAWDOWN_REQUEST transfer type ([e7c375b](https://github.com/lithic-com/lithic-node/commit/e7c375bf328756a708d54e8a33e2ed154ebfeb93))
+* **api:** remove unnecessary X-Lithic-Pagination header ([e7c375b](https://github.com/lithic-com/lithic-node/commit/e7c375bf328756a708d54e8a33e2ed154ebfeb93))
+* **api:** remove v1/aggregate_balances and related models ([0078e74](https://github.com/lithic-com/lithic-node/commit/0078e74adc26ff15a7340684c1b07b662e500e01))
+
+
+### Bug Fixes
+
+* **docs:** remove extraneous example object fields ([3ba95e6](https://github.com/lithic-com/lithic-node/commit/3ba95e64b6eea6893359d17a21d66eab3a93219b))
+
+
+### Chores
+
+* formatting ([0b4c11e](https://github.com/lithic-com/lithic-node/commit/0b4c11edeffb476c403be5b84c1e310fd5dfc063))
+
+
+### Documentation
+
+* **api:** clarify description of token / retry_token when it serves as idempotency key ([e7c375b](https://github.com/lithic-com/lithic-node/commit/e7c375bf328756a708d54e8a33e2ed154ebfeb93))
+
## 0.126.0 (2025-12-11)
Full Changelog: [v0.125.0...v0.126.0](https://github.com/lithic-com/lithic-node/compare/v0.125.0...v0.126.0)
diff --git a/package.json b/package.json
index 701cf9b0..ab8bebb0 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "lithic",
- "version": "0.126.0",
+ "version": "0.127.0",
"description": "The official TypeScript library for the Lithic API",
"author": "Lithic ",
"types": "dist/index.d.ts",
diff --git a/src/version.ts b/src/version.ts
index dc70112b..d6d8f1ad 100644
--- a/src/version.ts
+++ b/src/version.ts
@@ -1 +1 @@
-export const VERSION = '0.126.0'; // x-release-please-version
+export const VERSION = '0.127.0'; // x-release-please-version