> This is Payabli documentation. For a complete page index, fetch https://docs.payabli.com/llms.txt — append .md to any page URL for lightweight markdown. For section-level indexes, query parameters, and other AI-optimized access methods, see https://docs.payabli.com/ai-agents.md

# TypeScript SDK changelog

This is the changelog for the Payabli TypeScript SDK. It includes updates, bug fixes, and new features.

## October 19, 2026

## v1.0.22

This release includes breaking changes. It adds clients for the intelligent boarding API (beta) and marks the legacy boarding methods as deprecated. See [October 19, 2026](/changelog/api-changelog/2026/10/19) for more information.

### Intelligent boarding clients (beta)

`PayabliClient` adds the `businesses`, `people`, `paypoints`, `paymentMethods`, `boardingTemplates`, and `applications` clients. Their methods return envelope types, such as `Payabli.BusinessDetailEnvelope`, with `data` and `warnings` properties. `package.json` adds an export path for each client, such as `./businesses`.

These endpoints only accept OAuth. Set `bearerAuth` with your OAuth `clientId` and `clientSecret` when you create the client. See [OAuth authentication](/developers/oauth-authentication) and [Manage API credentials](/guides/platform-developer-api-credentials-manage).

```ts
const client = new PayabliClient({
    bearerAuth: { clientId: "CLIENT_ID", clientSecret: "CLIENT_SECRET" },
});
const business: Payabli.BusinessDetailEnvelope = await client.businesses.getBusiness("BUSINESS_REFERENCE");
```

### Legacy boarding methods are deprecated

Legacy boarding will be sunset in Q2 2027. Every method on `boarding` and `templates` now has a `@deprecated` tag, so your editor flags calls to them. `export.exportApplications` was already deprecated.

### `UnprocessableEntityError.body` is now `unknown`

The new applications endpoints return a different error body for HTTP `422`, so `Payabli.UnprocessableEntityError.body` is now `unknown` instead of `Payabli.PayabliErrorBody`. Code that reads its properties, such as after `moneyOut.authorizeOut`, `captureOut`, or `payout`, no longer type-checks.

```ts
// Before
if (err instanceof Payabli.UnprocessableEntityError) { const text = err.body.responseText; }

// After
if (err instanceof Payabli.UnprocessableEntityError) { const body: unknown = err.body; }
```

### Case management bank account services use new types

`BankAccountServices.moneyIn` and `moneyOut` are now typed `Payabli.CaseManagementMoneyInService[]` and `Payabli.CaseManagementMoneyOutService[]`. These have the same values as `MoneyInService` and `MoneyOutService`, so existing code still compiles.

## v1.0.21

This release adds methods to get the next check number and cancel ghost cards, a check number on reissued payouts, invoice data on subscription updates, a 1099 flag on vendors, every payout that paid a bill, and card-present device details. This entry also covers v1.0.20. See [October 19, 2026](/changelog/api-changelog/2026/10/19) for more information.

### New methods

* `moneyOut.getNextCheckNumber(paypointId: number, accountId: string)` returns `Payabli.NextCheckNumberResponse`, whose `checkNumber` is a `string`.
* `ghostCard.deleteGhostCard(cardToken: string)` returns `Payabli.DeleteGhostCardResponse`. Its `responseData` has `deleteType` and `cardToken`.

```ts
const next: Payabli.NextCheckNumberResponse = await client.moneyOut.getNextCheckNumber(285, "ACCOUNT_ID");
const deleted: Payabli.DeleteGhostCardResponse = await client.ghostCard.deleteGhostCard("CARD_TOKEN");
```

### Request changes

* `Payabli.ReissueOutRequest` adds `checkNumber?: Payabli.VendorCheckNumber`.
* `Payabli.RequestUpdateSchedule`, the request for `subscription.updateSubscription`, adds `invoiceData?: Payabli.BillData | null`. Pass `invoiceData: null` to remove the subscription's invoice data.
* `Payabli.VendorData` adds `issue1099?: boolean`.

### Vendor 1099 flag

`VendorQueryRecord`, `VendorDataResponse`, and `TransferOutDetailVendor` add the required property `Issue1099`, and `PayoutSubscriptionVendor` adds the required property `issue1099`. Both are `Payabli.Issue1099`, an alias for `boolean`. `AssociatedVendor`, `VCardGetResponseAssociatedVendor`, and `VendorOutData` add the optional `Issue1099`, and `GetMethodResponseResponseDataVendorsItem` adds the optional `issue1099`.

### Payouts that paid a bill

`BillResponseData` and `BillQueryRecord2` add `transactions: Payabli.BillTransactionReference[] | null`. Each `BillTransactionReference` has `idOut` (`number`) and `paymentId` (`string | null`).

### Card-present device details

* `TransactionQueryRecords` and `TransactionQueryRecordsCustomer` add `DeviceEntryMode` (`Payabli.DeviceEntryMode | null`), `EmvAuthData` (`Payabli.EmvAuthData | null`, with `RequestEmvData` and `ResponseEmvData`), and `DeviceData` (`Payabli.QueryDeviceData | null`).
* `DeviceQueryRecord` adds `operationalStatus` (`Payabli.DeviceQueryRecord.OperationalStatus`), which is `"online"`, `"busy"`, or `"offline"`. The `Payabli.DeviceQueryRecord.OperationalStatus` object also has these values as `Online`, `Busy`, and `Offline`. It also adds `appVersion` and `osVersion` (`string | null`).

These new response properties are required, except the optional `Issue1099` and `issue1099` properties listed earlier. Code that creates these objects, such as tests and mocks, must set them.

## October 14, 2026

## v1.0.19

This release includes breaking changes. The get payout subscription response now uses its own camelCase types. See [October 14, 2026](/changelog/api-changelog/2026/10/14) for more information.

### New types in the get payout subscription response

`Payabli.PayoutSubscriptionQueryRecord` now uses new types for its vendor, bills, and payment data:

| Property      | Before                      | After                                   |
| ------------- | --------------------------- | --------------------------------------- |
| `vendor`      | `Payabli.VendorQueryRecord` | `Payabli.PayoutSubscriptionVendor`      |
| `billData`    | `Payabli.BillPayOutData[]`  | `Payabli.PayoutSubscriptionBill[]`      |
| `paymentData` | `Payabli.QueryPaymentData`  | `Payabli.PayoutSubscriptionPaymentData` |

`paymentData.paymentDetails` is a `Payabli.PayoutSubscriptionPaymentDetails`.

The new types also use the API's camelCase property names, so property access changes along with the type names:

```ts
// Before
const vendor: Payabli.VendorQueryRecord | undefined = sub.responseData?.vendor;
const vendorNumber = vendor?.VendorNumber;

// After
const vendor: Payabli.PayoutSubscriptionVendor | undefined = sub.responseData?.vendor;
const vendorNumber = vendor?.vendorNumber;
```

#### Renamed properties in the get payout subscription response

* `vendor`: `VendorNumber`, `Name1`, `Name2`, `EIN`, `Phone`, `Email`, `RemitEmail`, `Address1`, `Address2`, `City`, `State`, `Zip`, `Country`, `Mcc`, `LocationCode`, `Contacts`, `BillingData`, `PaymentMethod`, `VendorStatus`, `VendorId`, `EnrollmentStatus`, `Summary`, `PaypointLegalname`, `PaypointId`, `PaypointDbaname`, `PaypointEntryname`, `ParentOrgName`, `ParentOrgId`, `CreatedDate`, `LastUpdated`, `InternalReferenceId`, `PaymentPortalUrl`, `CardAccepted`, `AchAccepted`, `CheckAccepted`, `EnrichmentStatus`, `EnrichedBy`, `EnrichedAt`, `EnrichmentId`, and `StoredMethods` are now camelCase, such as `vendorNumber`, `ein`, and `storedMethods`.
* `vendor.contacts`: `ContactName`, `ContactEmail`, `ContactTitle`, and `ContactPhone` are now `contactName`, `contactEmail`, `contactTitle`, and `contactPhone`.
* `billData`: `LotNumber`, `AccountingField1`, `AccountingField2`, `Terms`, and `AdditionalData` are now `lotNumber`, `accountingField1`, `accountingField2`, `terms`, and `additionalData`.
* `paymentData`: `AccountExp`, `AccountType`, `AccountZip`, `HolderName`, `Initiator`, `MaskedAccount`, `Sequence`, `SignatureData`, `StoredId`, and `StoredMethodUsageType` are now camelCase, such as `maskedAccount` and `holderName`.

### New payment data type in list payout subscriptions

`PayoutSubscriptionQueryRecordPascal.PaymentData` is now a `Payabli.PayoutSubscriptionPaymentDataPascal` instead of a `Payabli.QueryPaymentData`.

### Nullable fields

These fields now include `| null`, which affects code that reads them under `strict`:

#### Fields that now allow null

* `BillPayOutData`: `billId`, `AccountingField1`, `AccountingField2`, `Terms`, `attachments`, `comments`, `discount`
* `BillingDataResponse.accountId`
* `PayoutSubscriptionQueryRecord.events`
* `PayoutSubscriptionQueryRecordPascal.Events`

### New fields on payout subscriptions

`PayoutSubscriptionQueryRecord` adds `sameDayAch`, `doNotCreateBills`, `allowDuplicatedBills`, `autoConvertSameDayAch`, and `subscriptionType`. `PayoutSubscriptionQueryRecordPascal` adds the same fields in PascalCase, such as `SameDayAch`. `PayoutSubscriptionPaymentData` adds `walletType` and `payorSignature`, `PayoutSubscriptionPaymentDataPascal` adds `WalletType` and `payorSignature`, and `PayoutSubscriptionPaymentDetails` adds the payout details fields, such as `orderId`, `payabliTransId`, and `surchargeFee`.

### Vendor record changes

`VendorQueryRecord.StoredMethods` is now a `Payabli.VendorStoredMethod[] | null`. `VendorStoredMethod` extends `VendorResponseStoredMethod` and adds `IsDefault`. `VendorQueryRecord` adds `VendorPortal` (`Payabli.VendorPortalAccess | null`), and `BillingDataResponse` adds `country`.

## October 5, 2026

## v1.0.18

This release includes breaking changes. The notification log and stored payment method types now match what the API returns, and OCR results have new amount fields. See [September 22, 2026](/changelog/api-changelog/2026/9/22), [September 29, 2026](/changelog/api-changelog/2026/9/29), [October 1, 2026](/changelog/api-changelog/2026/10/1), [October 2, 2026](/changelog/api-changelog/2026/10/2), and [October 5, 2026](/changelog/api-changelog/2026/10/5) for more information.

### Notification log retry methods return new types

`notificationlogs.retryNotificationLog` now returns `Payabli.NotificationRetryResponse`, which has a single `message` property, instead of `Payabli.NotificationLogDetail`. `notificationlogs.bulkRetryNotificationLogs` now returns `string` instead of `void`.

```ts
// Before
const log: Payabli.NotificationLogDetail = await client.notificationlogs.retryNotificationLog("UUID");

// After
const retry: Payabli.NotificationRetryResponse = await client.notificationlogs.retryNotificationLog("UUID");
const message: string = retry.message;
const bulk: string = await client.notificationlogs.bulkRetryNotificationLogs(["UUID"]);
```

### Notification log types share a new base type

`NotificationLog` and `NotificationLogDetail` now both extend the new `Payabli.NotificationLogBase`. `NotificationLogDetail` no longer extends `NotificationLog`, so you can't pass a detail where a `NotificationLog` is expected.

* Both types add the required properties `organizationName`, `paypointName`, `requestId`, and `responseStatusCode` (`number`).
* `responseStatus` is now `string` instead of `string | null`. It holds a status message such as `OK`. The HTTP status code is in `responseStatusCode`.
* `NotificationLog` adds the required properties `notificationType`, `organizationLogo`, `organizationFavIcon`, and `paypointLogo`.
* On `NotificationLogDetail`, `responseContent` is now a required `string`. `responseHeaders` and `webHeaders` are now always present and typed `T[] | null` instead of optional, so code that checks for `undefined` no longer matches. Check for `null` instead.

Code that creates these objects, such as tests and mocks, must set the new required properties.

### Customer properties on stored payment methods

`GetMethodResponseResponseDataCustomersItem` no longer extends `Payabli.PayorDataRequest`. It now has the customer record's properties. `firstName` and `lastName` are now `firstname` and `lastname`, and `shippingAddress1` is now typed `Payabli.Shippingaddressadditional`.

#### Removed and added properties

Removed: `additionalData`, `billingAddress1`, `billingAddress2`, `billingCity`, `billingCountry`, `billingEmail`, `billingPhone`, `billingState`, `billingZip`, and `shippingAddress2`.

Added: `additionalFields`, `address`, `address1`, `city`, `country`, `customerEvents`, `customerPortal`, `email`, `phone`, `shippingAddress`, `state`, and `zip`.

### New response properties

* `AddMethodResponse` adds `pageIdentifier`, and `AddMethodResponseResponseData` adds `authCode`, `avsResponseText`, `cvvResponseText`, and `vendorId`.
* `GetMethodResponseResponseData` adds `walletType`.
* `OcrResultData` adds `totalAmount` and `discount` (`number | null`).

## September 18, 2026

## v1.0.17

Regenerated the TypeScript SDK to incorporate latest API documentation improvements. See [September 18, 2026](/changelog/api-changelog/2026/9/18) for more information.

## September 16, 2026

## v1.0.16

Regenerated the TypeScript SDK to incorporate latest API documentation improvements. See [September 16, 2026](/changelog/api-changelog/2026/9/16) for more information.

## September 10, 2026

## v1.0.15

Regenerated the TypeScript SDK to incorporate latest API documentation improvements. See [September 10, 2026](/changelog/api-changelog/2026/9/10) for more information.

## September 9, 2026

## v1.0.14

Regenerated the TypeScript SDK to incorporate latest API documentation improvements. See [September 8, 2026](/changelog/api-changelog/2026/9/8) for more information.

## August 28, 2026

## v1.0.13

### New `Summary` field on `PaypointData`

`PaypointData` now types `Summary`, a business description from boarding, alongside the existing `summary` field. See [August 28, 2026](/changelog/api-changelog/2026/8/28) for more information.

## July 28, 2026

## v1.1.1

Regenerated the TypeScript SDK to incorporate latest API documentation improvements. See [July 28, 2026](/changelog/api-changelog/2026/7/28) for more information.

## July 27, 2026

## v1.1.0

Added OAuth2 client-credentials support. Pass `bearerAuth: { clientId, clientSecret }` and the SDK handles the token exchange and refresh automatically:

```typescript
const client = new PayabliClient({
    bearerAuth: {
        clientId: "...",
        clientSecret: "...",
    },
    environment: PayabliEnvironment.Sandbox,
});
```

See the [TypeScript SDK guide](/developers/platform-sdk-typescript-guide) and [Authentication](/developers/authentication) to compare both methods.

### Breaking change: API key auth now requires the `apiKeyAuth` wrapper

Supporting OAuth alongside API key auth required restructuring the constructor's auth options. The top-level `apiKey` field no longer exists — wrap it in `apiKeyAuth`:

```typescript
// Before
const client = new PayabliClient({
    apiKey: "...",
    environment: PayabliEnvironment.Sandbox,
});

// After
const client = new PayabliClient({
    apiKeyAuth: {
        apiKey: "...",
    },
    environment: PayabliEnvironment.Sandbox,
});
```

Existing integrations using the old flat `apiKey` field need to update to this shape.

## July 20, 2026

## v1.0.5

Changed the `VendorQueryRecord.AdditionalData` type from `Record<string, Record<string, unknown>>?` to `Record<string, string>?` to match the API.

## June 30, 2026

## v1.0.3

Regenerated the TypeScript SDK to incorporate latest API documentation improvements. See [June 30, 2026](/changelog/api-changelog/2026/6/30) for more information.

## June 11, 2026

## v1.0.1

Regenerated the TypeScript SDK to incorporate latest API documentation improvements. See [June 11, 2026](/changelog/api-changelog/2026/6/11) for more information.

## June 8, 2026

## v1.0.0

As part of an ongoing effort to improve the consistency and usability of our SDKs, we've updated the SDK generation process.
This update introduces breaking changes to the SDK.
All breaking changes affect only method signatures and namespacing, not core record types or properties.
SDK initialization, configuration, business logic, and workflows remain unchanged.
For more information on precise method signatures and example usage, please see the [SDK reference on GitHub](https://github.com/payabli/sdk-node/blob/main/reference.md)

### Request body wrapper removed

Twenty methods previously accepted `{ body: { ... } }` and now accept the fields directly at the top level.

#### Affected methods

* `bill.addBill`
* `customer.addCustomer`
* `hostedPaymentPages.newPage`
* `invoice.addInvoice`
* `invoice.editInvoice`
* `lineItem.addItem`
* `moneyIn.getpaid`
* `moneyIn.authorize`
* `moneyIn.getpaidv2`
* `moneyIn.authorizev2`
* `moneyOut.authorizeOut`
* `moneyOut.reissueOut`
* `subscription.newSubscription`
* `payoutSubscription.createPayoutSubscription`
* `notificationlogs.searchNotificationLogs`
* `paymentLink.addPayLinkFromInvoice`
* `paymentLink.addPayLinkFromBill`
* `paymentLink.addPayLinkFromBillLotNumber`
* `tokenStorage.addMethod`
* `tokenStorage.updateMethod`

The `bill.sendToApprovalBill` and `moneyOut.captureAllOut` methods retain their `body:` field because those endpoints accept a raw array as the HTTP body.

### `query.listTransfersOrg` signature change

`orgId` is now a required first positional argument and has been removed from `ListTransfersRequestOrg`:

```typescript
// Before
await client.query.listTransfersOrg({ orgId: 123, fromRecord: 0, limitRecord: 20 });

// After
await client.query.listTransfersOrg(123, { fromRecord: 0, limitRecord: 20 });
```

### `MoneyOutTypesRequestOutAuthorize` renamed

The request type for `moneyOut.authorizeOut` is now `RequestOutAuthorize`. The fields are unchanged, but the `body:` wrapper property has been removed — all payout fields are now top-level properties.

### `query.listBatchDetailsOrg` return type changed

Return type changed from `Payabli.QueryResponseSettlements` to `Payabli.QueryBatchesDetailResponse`.

## May 20, 2026

## v0.0.147

Fixed an issue where the TypeScript SDK wasn't properly deserializing the `extraData` field in certain API response models.

## May 11, 2026

## v0.0.146

Regenerated the TypeScript SDK to incorporate latest API documentation improvements. See [May 11, 2026](/changelog/api-changelog/2026/5/11) for more information.

## May 8, 2026

## v0.0.144

Fixed a bug that caused the `CustomerSummary` object to be deserialized incorrectly in customer records.
Fixed a bug that caused the `InvoiceData` object to be deserialized incorrectly in transaction records.
Regenerated the TypeScript SDK to incorporate latest API definition updates.

## April 30, 2026

## v0.0.143

Fixed a bug that caused `moneyIn.getpaidv2` to error when deserializing the response. Regenerated the TypeScript SDK to incorporate latest API definition updates.

## April 13, 2026

## v0.0.141

Regenerated the TypeScript SDK to incorporate latest API documentation improvements. See [April 13, 2026](/changelog/api-changelog/2026/4/13) for more information.

## March 17, 2026

## v0.0.135

Removed unused notification types from the `NotificationStandardRequestContentEventType` type in the TypeScript SDK.

## v0.0.134

Regenerated the TypeScript SDK to incorporate latest API documentation improvements. See [March 16, 2026](/changelog/api-changelog/2026/3/16) for more information.

_Showing the 20 most recent of 31 entries. Append `/llms.txt` to the changelog URL for the complete index._