> 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

# C# SDK changelog

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

## October 27, 2026

## v1.1.21

This release includes breaking changes. It corrects the organization details types to match the API, renames the ticket amount properties on paypoint credentials, and adds an organizations client for the intelligent boarding API (beta). See [October 20, 2026](/changelog/api-changelog/2026/10/20) and [October 22, 2026](/changelog/api-changelog/2026/10/22) and [October 27, 2026](/changelog/api-changelog/2026/10/27) for more information.

### Basic organization details return a response envelope

`Organization.GetBasicOrganizationAsync` and `Organization.GetBasicOrganizationByIdAsync` now return `GetBasicOrganizationResponse` instead of `OrganizationQueryRecord`. The organization details are in `ResponseData`, alongside `IsSuccess` and `ResponseText`.

```csharp
// Before
OrganizationQueryRecord org = await client.Organization.GetBasicOrganizationAsync("my-org");

// After
GetBasicOrganizationResponse basic = await client.Organization.GetBasicOrganizationAsync("my-org");
OrganizationQueryRecord? org = basic.ResponseData;
```

### Organization details types match the API

`OrganizationQueryRecord` changes these property types:

* `BillingInfo` is now `InstrumentResponse?` instead of `Instrument?`. `InstrumentResponse` has `AchAccount`, `AchRouting`, `BillingAddress`, `BillingCity`, `BillingCountry`, `BillingState`, and `BillingZip` (`string?`).
* `Contacts` is now `IEnumerable<ContactsResponse>?` instead of `IEnumerable<Contacts>?`. `ContactsResponse` has `ContactName`, `ContactEmail`, `ContactTitle`, and `ContactPhone` (`string?`).
* `OrgLogo` is now `string?`, the logo's URL, instead of `FileContent?`.

It also adds `OrgFavicon` (`string?`), the URL of the organization's favicon. The property names are unchanged, but their JSON names now match the PascalCase names the API returns, such as `OrgId` and `BillingInfo`.

### Ticket amount properties renamed

`PayabliCredentialsPascal`, the type of `PaypointData.Credentials` items, renames `MaxTicket` to `Maxticket` and `MinTicket` to `Minticket` (`double?`).

```csharp
// Before
var credentials = new PayabliCredentialsPascal { MaxTicket = 1000, MinTicket = 1 };

// After
var credentials = new PayabliCredentialsPascal { Maxticket = 1000, Minticket = 1 };
```

### Organizations client (beta)

The client adds `Organizations`, with `ListOrganizationsAsync`, `CreateOrganizationAsync`, `GetOrganizationAsync`, and `UpdateOrganizationAsync`. `CreateOrganizationAsync` takes a `OneOf<CreateOrganizationWithInlineBusiness, CreateOrganizationWithBusinessReference, CreateOrganizationAllFields>`. The methods return envelope types, such as `PaypointDetailEnvelope`. These endpoints only accept OAuth. See [OAuth authentication](/developers/oauth-authentication).

```csharp
PaypointDetailEnvelope detail = await client.Organizations.GetOrganizationAsync("org-reference");
```

### Other changes

* `MethodsListOut` adds `Rtp` and `Wire` (`bool?`).
* `PaypointSummaryResponse` adds `ExternalId` (`string?`).
* `Paypoints.ListPaypointsAsync` now throws `BadRequestError` for HTTP `400`.

## October 19, 2026

## v1.1.20

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)

`PayabliApiClient` adds the `Businesses`, `People`, `Paypoints`, `PaymentMethods`, `BoardingTemplates`, and `Applications` clients. Their methods return envelope types, such as `BusinessDetailEnvelope`, with `Data` and `Warnings` properties.

These endpoints only accept OAuth. Pass 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).

```csharp
var client = new PayabliApiClient(clientId: "CLIENT_ID", clientSecret: "CLIENT_SECRET");
BusinessDetailEnvelope business = await client.Businesses.GetBusinessAsync("BUSINESS_REFERENCE");
```

### Legacy boarding methods are deprecated

Legacy boarding will be sunset in Q2 2027. Every method on `Boarding` and `Templates` now has a deprecation warning in its documentation. `Export.ExportApplicationsAsync` was already deprecated. The methods don't have the `[Obsolete]` attribute, so the compiler doesn't warn you.

### `UnprocessableEntityError.Body` is now `object`

The new applications endpoints return a different error body for HTTP `422`, so `UnprocessableEntityError.Body` is now `object` instead of `PayabliErrorBody`. Code that reads its properties, such as after `MoneyOut.AuthorizeOutAsync`, `CaptureOutAsync`, or `PayoutAsync`, no longer compiles.

```csharp
// Before
catch (UnprocessableEntityError e) { string text = e.Body.ResponseText; }

// After
catch (UnprocessableEntityError e) { object body = e.Body; }
```

### Case management bank account services use new types

`BankAccountServices.MoneyIn` is now `IEnumerable<CaseManagementMoneyInService>?`, and `MoneyOut` is now `IEnumerable<CaseManagementMoneyOutService>?`. The new types have the same values as `MoneyInService` and `MoneyOutService`.

```csharp
// Before
MoneyIn = new List<MoneyInService> { MoneyInService.Ach },

// After
MoneyIn = new List<CaseManagementMoneyInService> { CaseManagementMoneyInService.Ach },
```

## v1.1.19

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. See [October 19, 2026](/changelog/api-changelog/2026/10/19) for more information.

### New methods

* `MoneyOut.GetNextCheckNumberAsync(long paypointId, string accountId)` returns `NextCheckNumberResponse`, whose `CheckNumber` is a `string`.
* `GhostCard.DeleteGhostCardAsync(string cardToken)` returns `DeleteGhostCardResponse`. Its `ResponseData` has `DeleteType` and `CardToken` (`string?`).

```csharp
NextCheckNumberResponse next = await client.MoneyOut.GetNextCheckNumberAsync(285, "ACCOUNT_ID");
DeleteGhostCardResponse deleted = await client.GhostCard.DeleteGhostCardAsync("CARD_TOKEN");
```

### Request changes

* `ReissueOutRequest` adds `CheckNumber` (`string?`).
* `RequestUpdateSchedule`, the request for `Subscription.UpdateSubscriptionAsync`, adds `InvoiceData` (`BillData?`).
* `VendorData` adds `Issue1099` (`bool?`).

### Vendor 1099 flag

`VendorQueryRecord`, `VendorDataResponse`, `TransferOutDetailVendor`, and `PayoutSubscriptionVendor` add the required property `Issue1099` (`bool`). `AssociatedVendor`, `VCardGetResponseAssociatedVendor`, `VendorOutData`, and `GetMethodResponseResponseDataVendorsItem` add `Issue1099` (`bool?`).

### Payouts that paid a bill

`BillResponseData` and `BillQueryRecord2` add `Transactions` (`IEnumerable<BillTransactionReference>?`). Each `BillTransactionReference` has `IdOut` (`long`) and `PaymentId` (`string?`).

### Card-present device details

* `TransactionQueryRecords` and `TransactionQueryRecordsCustomer` add `DeviceEntryMode` (`string?`), `EmvAuthData` (`EmvAuthData?`, with `RequestEmvData` and `ResponseEmvData`), and `DeviceData` (`QueryDeviceData?`).
* `DeviceQueryRecord` adds the required property `OperationalStatus` (`DeviceQueryRecordOperationalStatus`, with the values `Online`, `Busy`, and `Offline`), plus `AppVersion` and `OsVersion` (`string?`).

Code that creates `VendorQueryRecord`, `VendorDataResponse`, `TransferOutDetailVendor`, `PayoutSubscriptionVendor`, or `DeviceQueryRecord` objects without setting the new required properties, such as tests and mocks, no longer compiles. Code that only reads them isn't affected.

## October 14, 2026

## v1.1.18

This release includes breaking changes. The get payout subscription response now uses its own camelCase types, which fixes a `JsonException` that `GetPayoutSubscriptionAsync` threw on every call. This release also covers v1.1.17, which shipped without a changelog entry. See [October 14, 2026](/changelog/api-changelog/2026/10/14) for more information.

### New types in the get payout subscription response

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

| Property      | Before                         | After                                  |
| ------------- | ------------------------------ | -------------------------------------- |
| `Vendor`      | `VendorQueryRecord?`           | `PayoutSubscriptionVendor?`            |
| `BillData`    | `IEnumerable<BillPayOutData>?` | `IEnumerable<PayoutSubscriptionBill>?` |
| `PaymentData` | `QueryPaymentData?`            | `PayoutSubscriptionPaymentData?`       |

`PayoutSubscriptionPaymentData.PaymentDetails` is a `PayoutSubscriptionPaymentDetails?`. Update any code that names the old types:

```csharp
// Before
VendorQueryRecord? vendor = subscription.ResponseData?.Vendor;

// After
PayoutSubscriptionVendor? vendor = subscription.ResponseData?.Vendor;
```

### New payment data type in list payout subscriptions

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

### New fields on payout subscriptions

`PayoutSubscriptionQueryRecord` and `PayoutSubscriptionQueryRecordPascal` add `SameDayAch`, `DoNotCreateBills`, `AllowDuplicatedBills`, `AutoConvertSameDayAch` (`bool?`), and `SubscriptionType` (`string?`). The payment data types add `WalletType` and `PayorSignature`, and `PayoutSubscriptionPaymentDetails` adds the payout details fields, such as `OrderId`, `PayabliTransId`, and `SurchargeFee`.

### Vendor record changes

`VendorQueryRecord.StoredMethods` is now an `IEnumerable<VendorStoredMethod>?` instead of an `IEnumerable<VendorResponseStoredMethod>?`. `VendorStoredMethod` adds `IsDefault` (`bool?`). `VendorQueryRecord` adds `VendorPortal` (`VendorPortalAccess?`), and `BillingDataResponse` adds `Country` (`string?`).

## October 5, 2026

## v1.1.16

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. This entry also covers v1.1.14 and v1.1.15. 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.RetryNotificationLogAsync` now returns `NotificationRetryResponse`, which has a single `Message` property, instead of `NotificationLogDetail`. `Notificationlogs.BulkRetryNotificationLogsAsync` now returns `WithRawResponseTask<string>` instead of `WithRawResponseTask`. Existing `await` calls still compile.

```csharp
// Before
NotificationLogDetail log = await client.Notificationlogs.RetryNotificationLogAsync("UUID");

// After
NotificationRetryResponse retry = await client.Notificationlogs.RetryNotificationLogAsync("UUID");
string message = retry.Message;
string bulk = await client.Notificationlogs.BulkRetryNotificationLogsAsync(new List<string> { "UUID" });
```

### Notification log properties

* `ResponseStatus` on `NotificationLog` and `NotificationLogDetail` is now `required string` instead of `string?`. It holds a status message such as `OK`. The HTTP status code is in the new `ResponseStatusCode` (`int`).
* Both types add the required properties `OrganizationName`, `PaypointName`, `RequestId`, and `ResponseStatusCode`.
* `NotificationLog` adds the required properties `NotificationType`, `OrganizationLogo`, `OrganizationFavIcon`, and `PaypointLogo`.
* On `NotificationLogDetail`, `ResponseContent` is now `required string` instead of `string?`.
* There's a new `NotificationLogBase` record.

Code that creates these objects without setting the new required properties, such as tests and mocks, no longer compiles. Code that only reads them isn't affected.

### Customer properties on stored payment methods

On `GetMethodResponseResponseDataCustomersItem`, `FirstName` and `LastName` are now `Firstname` and `Lastname`.

#### 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` (`double?`).

## September 18, 2026

## v1.1.13

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

## September 16, 2026

## v1.1.12

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

## September 10, 2026

## v1.1.11

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

## September 9, 2026

## v1.1.10

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

## August 28, 2026

## v1.1.9

### New `BusinessSummary` field on `PaypointData`

`PaypointData` now includes `BusinessSummary`, a business description from boarding. See [August 28, 2026](/changelog/api-changelog/2026/8/28) for more information.

## August 24, 2026

## v1.1.7

Added XML documentation comments to the published package, so method summaries, parameter descriptions, and code samples now show up as IntelliSense tooltips in certain IDEs.

Renamed `PayabliApiEnvironment` to `PayabliApiClientEnvironment`. Update any code that references `BaseUrl = PayabliApiEnvironment.Sandbox` or `.Production` to use the new type name.

## July 28, 2026

## v1.1.1

Regenerated the C# 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 `clientId`/`clientSecret` and the SDK handles the token exchange and refresh automatically:

```csharp
var client = new PayabliApiClient(
    clientId: "...",
    clientSecret: "...",
    clientOptions: new ClientOptions { BaseUrl = PayabliApiEnvironment.Sandbox }
);
```

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

### Breaking change: API key auth now requires named arguments

Supporting OAuth alongside API key auth added new constructor parameters, which shifts the positional argument order.

Positional calls that relied on `apiKey` being first and `clientOptions` being second will break. Use named arguments instead:

```csharp
// Before
var client = new PayabliApiClient(
    "...",
    new ClientOptions { BaseUrl = PayabliApiEnvironment.Sandbox }
);

// After
var client = new PayabliApiClient(
    apiKey: "...",
    clientOptions: new ClientOptions { BaseUrl = PayabliApiEnvironment.Sandbox }
);
```

Existing integrations using positional arguments need to switch to named arguments.

## July 20, 2026

## v1.0.12

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

## July 17, 2026

## v1.0.10

Increased support for additional date formats on bill `dueDate` and `invoiceDate` fields to prevent crashes when deserializing a non-ISO date string returned by [`MoneyOut.PayoutDetails`](/developers/api-reference/moneyout/get-details-for-a-processed-payout-transaction) in the `Bills` array.

## June 30, 2026

## v1.0.3

Regenerated the C# 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.2

Regenerated the C# 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-csharp/blob/main/reference.md).

### Explicit empty request objects and body wrapping

Almost all breaking changes in the C# SDK are one of two patterns:

1. Methods that previously took only positional parameters now require a typed `XxxRequest` object as the final argument, even when it carries no data (pass `new XxxRequest()`).
2. Methods that previously accepted a domain type as the last argument now wrap it inside a `Body` property on a request envelope.

```csharp
// Pattern 1 — before / after
await client.Bill.DeleteBillAsync(285);
await client.Bill.DeleteBillAsync(285, new DeleteBillRequest());

// Pattern 2 — before / after
await client.Bill.EditBillAsync(285, new BillOutData { NetAmount = 3762.87 });
await client.Bill.EditBillAsync(285, new EditBillRequest { Body = new BillOutData { NetAmount = 3762.87 } });
```

The tables below list every affected method (sorted by resource).

#### Bill

| Method                                   | Change                                  |
| ---------------------------------------- | --------------------------------------- |
| `GetBillAsync(idBill)`                   | + `new GetBillRequest()`                |
| `EditBillAsync(idBill, BillOutData)`     | Body wrapped in `EditBillRequest`       |
| `DeleteBillAsync(idBill)`                | + `new DeleteBillRequest()`             |
| `ModifyApprovalBillAsync(idBill, items)` | + `new ModifyApprovalBillRequest { … }` |

#### Boarding

| Method                                            | Change                                          |
| ------------------------------------------------- | ----------------------------------------------- |
| `GetApplicationAsync(appId)`                      | + `new GetApplicationRequest()`                 |
| `DeleteApplicationAsync(appId)`                   | + `new DeleteApplicationRequest()`              |
| `GetByIdLinkApplicationAsync(boardingLinkId)`     | + `new GetByIdLinkApplicationRequest()`         |
| `GetByTemplateIdLinkApplicationAsync(templateId)` | + `new GetByTemplateIdLinkApplicationRequest()` |
| `GetLinkApplicationAsync(boardingLinkReference)`  | + `new GetLinkApplicationRequest()`             |
| `GetApplicationsByPaypointIdAsync(paypointId)`    | + `new GetApplicationsByPaypointIdRequest()`    |
| `UpdateApplicationAsync(appId, ApplicationData)`  | Body wrapped in `UpdateApplicationRequest`      |

#### ChargeBacks

| Method                                       | Change                                   |
| -------------------------------------------- | ---------------------------------------- |
| `GetChargebackAsync(id)`                     | + `new GetChargebackRequest()`           |
| `GetChargebackAttachmentAsync(id, fileName)` | + `new GetChargebackAttachmentRequest()` |

#### Cloud

| Method                                | Change                         |
| ------------------------------------- | ------------------------------ |
| `HistoryDeviceAsync(entry, deviceId)` | + `new HistoryDeviceRequest()` |
| `RemoveDeviceAsync(entry, deviceId)`  | + `new RemoveDeviceRequest()`  |

#### Customer

| Method                                              | Change                                   |
| --------------------------------------------------- | ---------------------------------------- |
| `GetCustomerAsync(customerId)`                      | + `new GetCustomerRequest()`             |
| `UpdateCustomerAsync(customerId, CustomerData)`     | Body wrapped in `UpdateCustomerRequest`  |
| `DeleteCustomerAsync(customerId)`                   | + `new DeleteCustomerRequest()`          |
| `RequestConsentAsync(customerId)`                   | + `new RequestConsentRequest()`          |
| `LinkCustomerTransactionAsync(customerId, transId)` | + `new LinkCustomerTransactionRequest()` |

#### HostedPaymentPages

| Method                                          | Change                            |
| ----------------------------------------------- | --------------------------------- |
| `LoadPageAsync(entry, subdomain)`               | + `new LoadPageRequest()`         |
| `SavePageAsync(entry, subdomain, PayabliPages)` | Body wrapped in `SavePageRequest` |

#### Invoice

| Method                                                | Change                                     |
| ----------------------------------------------------- | ------------------------------------------ |
| `GetInvoiceAsync(idInvoice)`                          | + `new GetInvoiceRequest()`                |
| `DeleteInvoiceAsync(idInvoice)`                       | + `new DeleteInvoiceRequest()`             |
| `DeleteAttachedFromInvoiceAsync(idInvoice, filename)` | + `new DeleteAttachedFromInvoiceRequest()` |
| `GetInvoiceNumberAsync(entry)`                        | + `new GetInvoiceNumberRequest()`          |
| `GetInvoicePdfAsync(idInvoice)`                       | + `new GetInvoicePdfRequest()`             |

#### LineItem

| Method                                  | Change                              |
| --------------------------------------- | ----------------------------------- |
| `GetItemAsync(lineItemId)`              | + `new GetItemRequest()`            |
| `DeleteItemAsync(lineItemId)`           | + `new DeleteItemRequest()`         |
| `UpdateItemAsync(lineItemId, LineItem)` | Body wrapped in `UpdateItemRequest` |

#### MoneyIn

| Method                                      | Change                                                    |
| ------------------------------------------- | --------------------------------------------------------- |
| `DetailsAsync(transId)`                     | + `new DetailsRequest()`                                  |
| `CaptureAsync(transId, amount)`             | + `new CaptureMoneyInRequest()`                           |
| `CaptureAuthAsync(transId, CaptureRequest)` | Renamed to `CaptureAuthRequest { Body = CaptureRequest }` |
| `RefundAsync(transId, amount)`              | + `new RefundRequest()`                                   |
| `ReverseAsync(transId, amount)`             | + `new ReverseRequest()`                                  |
| `ReverseCreditAsync(transId)`               | + `new ReverseCreditRequest()`                            |
| `VoidAsync(transId)`                        | + `new VoidRequest()`                                     |
| `Refundv2Async(transId)`                    | + `new Refundv2Request()`                                 |
| `Refundv2AmountAsync(transId, amount)`      | + `new Refundv2AmountRequest()`                           |
| `Capturev2Async(transId, CaptureRequest)`   | Renamed to `Capturev2Request { Body = CaptureRequest }`   |
| `Voidv2Async(transId)`                      | + `new Voidv2Request()`                                   |

#### MoneyOut

| Method                                                | Change                                    |
| ----------------------------------------------------- | ----------------------------------------- |
| `AuthorizeOutAsync(MoneyOutTypesRequestOutAuthorize)` | Type renamed to `RequestOutAuthorize`     |
| `CancelOutDeleteAsync(referenceId)`                   | + `new CancelOutDeleteRequest()`          |
| `CancelOutGetAsync(referenceId)`                      | + `new CancelOutGetRequest()`             |
| `GetCheckImageAsync(assetName)`                       | + `new GetCheckImageRequest()`            |
| `PayoutDetailsAsync(transId)`                         | + `new PayoutDetailsRequest()`            |
| `UpdateCheckPaymentStatusAsync(transId, status)`      | + `new UpdateCheckPaymentStatusRequest()` |
| `VCardGetAsync(cardToken)`                            | + `new VCardGetRequest()`                 |

#### Notification

| Method                                   | Change                                                                                                               |
| ---------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
| `GetNotificationAsync(nId)`              | + `new GetNotificationRequest()`                                                                                     |
| `DeleteNotificationAsync(nId)`           | + `new DeleteNotificationRequest()`                                                                                  |
| `GetReportFileAsync(id)`                 | + `new GetReportFileRequest()`                                                                                       |
| `UpdateNotificationAsync(nId, OneOf<…>)` | `OneOf` union replaced with `UpdateNotificationNotificationRequest { Body = new NotificationStandardRequest { … } }` |

#### Notificationlogs

| Method                            | Change                                |
| --------------------------------- | ------------------------------------- |
| `GetNotificationLogAsync(uuid)`   | + `new GetNotificationLogRequest()`   |
| `RetryNotificationLogAsync(uuid)` | + `new RetryNotificationLogRequest()` |

#### Ocr

| Method                                                   | Change                                   |
| -------------------------------------------------------- | ---------------------------------------- |
| `OcrDocumentFormAsync(typeResult, FileContentImageOnly)` | Body wrapped in `OcrDocumentFormRequest` |
| `OcrDocumentJsonAsync(typeResult, FileContentImageOnly)` | Body wrapped in `OcrDocumentJsonRequest` |

#### Organization

| Method                                 | Change                                    |
| -------------------------------------- | ----------------------------------------- |
| `GetOrganizationAsync(orgId)`          | + `new GetOrganizationRequest()`          |
| `GetBasicOrganizationAsync(entry)`     | + `new GetBasicOrganizationRequest()`     |
| `GetBasicOrganizationByIdAsync(orgId)` | + `new GetBasicOrganizationByIdRequest()` |
| `GetSettingsOrganizationAsync(orgId)`  | + `new GetSettingsOrganizationRequest()`  |
| `DeleteOrganizationAsync(orgId)`       | + `new DeleteOrganizationRequest()`       |

#### PaymentLink

| Method                                                              | Change                                          |
| ------------------------------------------------------------------- | ----------------------------------------------- |
| `GetPayLinkFromIdAsync(paylinkId)`                                  | + `new GetPayLinkFromIdRequest()`               |
| `DeletePayLinkFromIdAsync(payLinkId)`                               | + `new DeletePayLinkFromIdRequest()`            |
| `PushPayLinkFromIdAsync(payLinkId, PushPayLinkRequest)`             | Body wrapped in `PushPayLinkFromIdRequest`      |
| `UpdatePayLinkOutFromIdAsync(paylinkId, PaymentPageRequestBodyOut)` | Body wrapped in `UpdatePayLinkOutFromIdRequest` |

#### PaymentMethodDomain

| Method                                      | Change                                      |
| ------------------------------------------- | ------------------------------------------- |
| `GetPaymentMethodDomainAsync(domainId)`     | + `new GetPaymentMethodDomainRequest()`     |
| `DeletePaymentMethodDomainAsync(domainId)`  | + `new DeletePaymentMethodDomainRequest()`  |
| `CascadePaymentMethodDomainAsync(domainId)` | + `new CascadePaymentMethodDomainRequest()` |
| `VerifyPaymentMethodDomainAsync(domainId)`  | + `new VerifyPaymentMethodDomainRequest()`  |

#### PayoutSubscription

| Method                              | Change                                    |
| ----------------------------------- | ----------------------------------------- |
| `GetPayoutSubscriptionAsync(id)`    | + `new GetPayoutSubscriptionRequest()`    |
| `DeletePayoutSubscriptionAsync(id)` | + `new DeletePayoutSubscriptionRequest()` |

#### Paypoint

| Method                               | Change                             |
| ------------------------------------ | ---------------------------------- |
| `GetBasicEntryAsync(entry)`          | + `new GetBasicEntryRequest()`     |
| `GetBasicEntryByIdAsync(idPaypoint)` | + `new GetBasicEntryByIdRequest()` |
| `GetPageAsync(entry, subdomain)`     | + `new GetPageRequest()`           |
| `RemovePageAsync(entry, subdomain)`  | + `new RemovePageRequest()`        |
| `SettingsPageAsync(entry)`           | + `new SettingsPageRequest()`      |
| `SaveLogoAsync(entry, FileContent)`  | + `new SaveLogoRequest { … }`      |

#### Query

| Method                     | Change                                                                         |
| -------------------------- | ------------------------------------------------------------------------------ |
| `ListTransfersOrgAsync`    | New required positional `orgId` parameter added before the request object      |
| `ListBatchDetailsOrgAsync` | Return type changed: `QueryResponseSettlements` → `QueryBatchesDetailResponse` |

#### Subscription

| Method                           | Change                              |
| -------------------------------- | ----------------------------------- |
| `GetSubscriptionAsync(subId)`    | + `new GetSubscriptionRequest()`    |
| `RemoveSubscriptionAsync(subId)` | + `new RemoveSubscriptionRequest()` |

#### Templates

| Method                                          | Change                           |
| ----------------------------------------------- | -------------------------------- |
| `GetTemplateAsync(templateId)`                  | + `new GetTemplateRequest()`     |
| `DeleteTemplateAsync(templateId)`               | + `new DeleteTemplateRequest()`  |
| `GetlinkTemplateAsync(templateId, ignoreEmpty)` | + `new GetlinkTemplateRequest()` |

#### TokenStorage

| Method                        | Change                        |
| ----------------------------- | ----------------------------- |
| `RemoveMethodAsync(methodId)` | + `new RemoveMethodRequest()` |

#### User

| Method                                          | Change                               |
| ----------------------------------------------- | ------------------------------------ |
| `DeleteUserAsync(userId)`                       | + `new DeleteUserRequest()`          |
| `EditUserAsync(userId, UserData)`               | Body wrapped in `EditUserRequest`    |
| `EditMfaUserAsync(userId, MfaData)`             | Body wrapped in `EditMfaUserRequest` |
| `ResendMfaCodeAsync(usrname, entry, entryType)` | + `new ResendMfaCodeRequest()`       |

#### Vendor

| Method                                  | Change                              |
| --------------------------------------- | ----------------------------------- |
| `AddVendorAsync(entry, VendorData)`     | Body wrapped in `AddVendorRequest`  |
| `EditVendorAsync(idVendor, VendorData)` | Body wrapped in `EditVendorRequest` |
| `DeleteVendorAsync(idVendor)`           | + `new DeleteVendorRequest()`       |
| `GetVendorAsync(idVendor)`              | + `new GetVendorRequest()`          |

### Typed enums replaced certain strings

Certain fields that were previously untyped strings have been replaced with typed enums:

* `PayMethodCredit.Method` changed from `string` (`"card"`) to `PayMethodCreditMethod.Card`
* `BillOutData.Terms` changed from `string` (`"NET30"`) to `Terms.Net30`
* `BillOutData.Vendor` changed from `VendorData` to `BillOutDataVendor`

## May 20, 2026

## v0.0.312

Fixed an issue where the C# SDK wasn't properly deserializing the `ExtraData` field in certain API response models.

## May 11, 2026

## v0.0.311

Regenerated the C# 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.309

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 C# SDK to incorporate latest API definition updates.

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