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

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

Request body wrapper types removed

The following types are deleted. Their fields are now on the parent request struct directly.

Removed typeFields now onMethod
SubscriptionRequestBodyRequestSchedulesubscription.new_subscription
AuthorizePayoutBodyRequestOutAuthorizemoney_out.authorize_out
ReissuePayoutBodyReissueOutRequestmoney_out.reissue_out
PaymentPageRequestBodyPayLinkDataInvoicepayment_link.add_pay_link_from_invoice

The money_out.authorize_out method also gains allow_duplicated_bills, do_not_create_bills, and force_vendor_creation as direct fields on RequestOutAuthorize. The payout_subscription.create_payout_subscription method changes its request type from PayoutSubscriptionRequestBody to RequestPayoutSchedule.

PayMethodCredit.method is now a required typed enum

1// Before
2PayMethodCredit { method: "card".to_string(), .. }
3
4// After
5PayMethodCredit { method: PayMethodCreditMethod::Card, .. }

Affects MoneyIn::getpaid, getpaidv_2, authorize, authorizev_2, Subscription::new_subscription, and TokenStorage::add_method.

Field type changes

FieldOld typeNew type
BillItem.item_costRequired f64Option<f64> — wrap with Some(5.0)
CustomerData.identifier_fields inner elementsVec<Option<String>>Vec<String> — remove Some() wrappers
BillOutData.termsTerms("NET30".to_string()) newtypeTerms::Net30 enum variant
BillOutData.vendorVendorDataBillOutDataVendor

Boarding structs changed to tuple newtypes

ApplicationDataPayInServicesAch and ApplicationDataPayInServicesCard changed from named-field structs to tuple structs. ApplicationDataPayInContactsItem and ApplicationDataPayInOwnershipItem follow the same pattern.

1// Before
2services: ApplicationDataPayInServices {
3 ach: ApplicationDataPayInServicesAch {
4 ach_setup_fields: AchSetup { ..Default::default() },
5 ..Default::default()
6 },
7 ..Default::default()
8}
9
10contacts: Some(vec![ApplicationDataPayInContactsItem {
11 contacts_fields: Contacts { contact_name: Some("...".to_string()), ..Default::default() },
12 ..Default::default()
13}])
14
15// After
16services: ApplicationDataPayInServices {
17 ach: ApplicationDataPayInServicesAch(AchSetup { ..Default::default() }),
18 ..Default::default()
19}
20
21contacts: Some(vec![ApplicationDataPayInContactsItem(Contacts {
22 contact_name: Some("...".to_string()),
23 ..Default::default()
24})])