Skip to navigation

v1.0.19

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 for more information.

Intelligent boarding clients (beta)

The client adds the businesses, people, paypoints, payment_methods, boarding_templates, and applications clients, on both the sync and async clients. Their methods return envelope models, such as BusinessCreatedEnvelope, with data and warnings fields.

These endpoints only accept OAuth. Pass your OAuth client_id and client_secret when you create the client. See OAuth authentication and Manage API credentials.

client = payabli(client_id="CLIENT_ID", client_secret="CLIENT_SECRET")
template = client.boarding_templates.get_template(uuid_="TEMPLATE_UUID")

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.export_applications was already deprecated. Calling them doesn’t raise a DeprecationWarning.

UnprocessableEntityError.body is no longer PayabliErrorBody

The new applications endpoints return a different error body for HTTP 422, so money_out.authorize_out, capture_out, and payout now raise UnprocessableEntityError with the response JSON as a dict, not a PayabliErrorBody. Code like e.body.response_text now raises AttributeError.

# Before
except UnprocessableEntityError as e:
text = e.body.response_text
# After
except UnprocessableEntityError as e:
body = e.body # the response JSON

Case management bank account services use new types

BankAccountServices.money_in and money_out are now typed Optional[List[CaseManagementMoneyInService]] and Optional[List[CaseManagementMoneyOutService]]. These have the same values as MoneyInService and MoneyOutService, so existing code still works.

v1.0.18

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 for more information.

New methods

  • money_out.get_next_check_number(paypoint_id, account_id) returns NextCheckNumberResponse, whose check_number is a str.
  • ghost_card.delete_ghost_card(card_token) returns DeleteGhostCardResponse. Its response_data has delete_type and card_token.

The async client has the same methods.

next_check = client.money_out.get_next_check_number(paypoint_id=285, account_id="ACCOUNT_ID")
deleted = client.ghost_card.delete_ghost_card(card_token="CARD_TOKEN")

Request changes

  • money_out.reissue_out adds the check_number parameter.
  • subscription.update_subscription adds the invoice_data parameter (Optional[BillData]). Pass invoice_data=None to remove the subscription’s invoice data.
  • VendorData adds issue_1099 (Optional[bool]).

Vendor 1099 flag

VendorQueryRecord, VendorDataResponse, TransferOutDetailVendor, and PayoutSubscriptionVendor add the required field issue_1099 (Issue1099, an alias for bool). AssociatedVendor, VCardGetResponseAssociatedVendor, VendorOutData, and GetMethodResponseResponseDataVendorsItem add issue_1099 (Optional[Issue1099]).

Payouts that paid a bill

BillResponseData and BillQueryRecord2 add transactions (Optional[List[BillTransactionReference]]). Each BillTransactionReference has id_out (int) and payment_id (Optional[str]).

Card-present device details

  • TransactionQueryRecords and TransactionQueryRecordsCustomer add device_entry_mode (Optional[DeviceEntryMode]), emv_auth_data (Optional[EmvAuthData], with request_emv_data and response_emv_data), and device_data (Optional[QueryDeviceData]).
  • DeviceQueryRecord adds the required field operational_status (DeviceQueryRecordOperationalStatus: "online", "busy", or "offline"), plus app_version and os_version (Optional[str]).

Models built without the new required fields, such as test fixtures, now raise ValidationError.