Payabli Subscription API
The Subscription API from Payabli — 2 operation(s) for subscription.
The Subscription API from Payabli — 2 operation(s) for subscription.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/payabli-subscription-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
openapi: 3.2.0
info:
title: reference Subscription API
version: 1.0.0
servers:
- url: https://api-sandbox.payabli.com/api
description: Sandbox
- url: https://api.payabli.com/api
description: Production
tags:
- name: Subscription
paths:
/Subscription/add:
post:
operationId: NewSubscription
summary: Create Subscription
description: Creates a subscription or scheduled payment to run at a specified time and frequency. You can use stored payment method tokens for card, ACH, and digital wallets by passing them into the `paymentMethod.storedMethodId` field.
tags:
- Subscription
parameters:
- name: forceCustomerCreation
in: query
description: When `true`, the request creates a new customer record, regardless of whether customer identifiers match an existing customer. Defaults to `false`.
required: false
schema:
$ref: '#/components/schemas/ForceCustomerCreation'
- name: Authorization
in: header
description: 'OAuth2 Bearer access token from the client-credentials flow. See [OAuth authentication](/developers/oauth-authentication).
'
required: true
schema:
type: string
- name: idempotencyKey
in: header
description: _Optional but recommended_ A unique ID that you can include to prevent duplicating objects or transactions in the case that a request is sent more than once. This key isn't generated in Payabli, you must generate it yourself. This key persists for 2 minutes. After 2 minutes, you can reuse the key if needed.
required: false
schema:
$ref: '#/components/schemas/IdempotencyKey'
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/AddSubscriptionResponse'
'400':
description: Bad request / invalid data.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
'401':
description: Unauthorized request.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
'500':
description: Internal server error.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
'503':
description: Database connection error.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SubscriptionRequestBody'
/Subscription/{subId}:
get:
operationId: GetSubscription
summary: Get a subscription
description: Retrieves a single subscription's details.
tags:
- Subscription
parameters:
- name: subId
in: path
description: The subscription ID.
required: true
schema:
type: integer
- name: Authorization
in: header
description: 'OAuth2 Bearer access token from the client-credentials flow. See [OAuth authentication](/developers/oauth-authentication).
'
required: true
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/SubscriptionQueryRecords'
'400':
description: Bad request / invalid data.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
'401':
description: Unauthorized request.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
'500':
description: Internal server error.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
'503':
description: Database connection error.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
put:
operationId: UpdateSubscription
summary: Update a subscription
description: Updates a subscription's details.
tags:
- Subscription
parameters:
- name: subId
in: path
description: The subscription ID.
required: true
schema:
type: integer
- name: Authorization
in: header
description: 'OAuth2 Bearer access token from the client-credentials flow. See [OAuth authentication](/developers/oauth-authentication).
'
required: true
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateSubscriptionResponse'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RequestUpdateSchedule'
delete:
operationId: RemoveSubscription
summary: Delete a subscription
description: Deletes a subscription, autopay, or recurring payment and prevents future charges.
tags:
- Subscription
parameters:
- name: subId
in: path
description: The subscription ID.
required: true
schema:
type: integer
- name: Authorization
in: header
description: 'OAuth2 Bearer access token from the client-credentials flow. See [OAuth authentication](/developers/oauth-authentication).
'
required: true
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/RemoveSubscriptionResponse'
'400':
description: Bad request / invalid data.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
'401':
description: Unauthorized request.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
'500':
description: Internal server error.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
'503':
description: Database connection error.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
components:
schemas:
ItemDescription:
type: string
description: Item or product description. Max length of 250 characters.
title: ItemDescription
SplitFundingContent:
type: object
properties:
accountId:
type: string
description: The accountId for the account the split should be sent to.
amount:
type: number
format: double
description: Amount from the transaction to send to this recipient.
description:
type: string
description: A description for the split.
recipientEntryPoint:
type: string
description: The entrypoint the split should be sent to.
title: SplitFundingContent
ExternalPaypointId:
type: string
description: 'A custom identifier for the paypoint, if applicable.
'
title: ExternalPaypointId
Dbaname:
type: string
description: 'The alternate or common name that this business is doing business under,
usually referred to as a DBA name.
'
title: Dbaname
PayMethodCredit:
type: object
properties:
cardcvv:
$ref: '#/components/schemas/Cardcvv'
cardexp:
$ref: '#/components/schemas/Cardexp'
cardHolder:
$ref: '#/components/schemas/Cardholder'
cardnumber:
$ref: '#/components/schemas/Cardnumber'
cardzip:
$ref: '#/components/schemas/Cardzip'
initiator:
$ref: '#/components/schemas/Initiator'
method:
type: string
enum:
- card
description: Method to use for the transaction. For transactions with a credit or debit card, or a tokenized card, use `card`.
saveIfSuccess:
$ref: '#/components/schemas/SaveIfSuccess'
required:
- cardexp
- cardnumber
- method
title: PayMethodCredit
SummaryCommodityCode:
type: string
description: Commodity code.
title: SummaryCommodityCode
Sequence:
type: string
description: "The order of the transaction for cardholder-initiated transaction (CIT)\nand merchant-initiated transaction (MIT) purposes. This field is\nautomatically detected and populated by Payabli.\n\nAvailable values:\n\n- `first`: The first use of the payment method. This is almost always\n a cardholder-initiated transaction.\n- `subsequent`: For merchant-initiated transactions after the first use\n of the payment method.\n\nSee\n[Understanding CIT and MIT Indicators](/guides/pay-in-transactions-cit-mit-overview)\nfor more information.\n"
title: Sequence
PaymentCategories:
type: object
properties:
amount:
type: number
format: double
description: Price/cost per unit of item or category.
description:
type: string
description: Description of item or category
label:
type: string
description: Name of item or category.
qty:
type: integer
default: 1
description: Quantity of item or category
required:
- amount
- label
title: PaymentCategories
IsSuccess:
type: boolean
description: 'Boolean indicating whether the operation was successful. A `true` value
indicates success. A `false` value indicates failure.
'
title: IsSuccess
SubscriptionQueryRecords:
type: object
properties:
CreatedAt:
$ref: '#/components/schemas/CreatedAt'
description: Timestamp of when the subscription ws created, in UTC.
Customer:
$ref: '#/components/schemas/QueryTransactionPayorData'
EndDate:
type:
- string
- 'null'
format: date-time
description: The subscription's end date.
EntrypageId:
$ref: '#/components/schemas/EntrypageId'
ExternalPaypointID:
$ref: '#/components/schemas/ExternalPaypointId'
FeeAmount:
type: number
format: double
description: Fee applied to the subscription.
Frequency:
type: string
description: The subscription's frequency.
IdSub:
type: integer
format: int64
description: The subscription's ID.
invoiceData:
$ref: '#/components/schemas/BillData'
LastRun:
type:
- string
- 'null'
format: date-time
description: The last time the subscription was processed.
LastUpdated:
$ref: '#/components/schemas/LastModified'
description: The last date and time the subscription was updated.
LeftCycles:
type: integer
description: The number of cycles the subscription has left.
Method:
type: string
description: The subscription's payment method.
NetAmount:
$ref: '#/components/schemas/Netamountnullable'
description: The subscription amount, minus any fees.
NextDate:
type:
- string
- 'null'
format: date-time
description: The next date the subscription will be processed.
ParentOrgName:
$ref: '#/components/schemas/OrgParentName'
PaymentData:
$ref: '#/components/schemas/QueryPaymentData'
PaypointDbaname:
$ref: '#/components/schemas/Dbaname'
description: The paypoint's DBA name.
PaypointEntryname:
$ref: '#/components/schemas/Entrypointfield'
description: The paypoint's entryname.
PaypointId:
$ref: '#/components/schemas/PaypointId'
PaypointLegalname:
$ref: '#/components/schemas/Legalname'
description: The paypoint's legal name.
PlanId:
type: integer
description: Payment plan ID.
Source:
$ref: '#/components/schemas/Source'
StartDate:
type:
- string
- 'null'
format: date-time
description: The subscription start date.
StoredMethod:
oneOf:
- $ref: '#/components/schemas/VendorResponseStoredMethod'
- type: 'null'
description: 'The full stored payment method record linked to the subscription
and charged on each billing cycle. Returned as `null` for legacy
subscriptions that don''t have a linked stored method.
The shape is the same across payment vehicles (card, ACH, check).
Only the populated fields differ. For example, `ABA` is populated
for ACH, while `ExpDate` and `binData` are populated for card.'
SubEvents:
type: array
items:
$ref: '#/components/schemas/GeneralEvents'
description: Events associated with the subscription.
SubStatus:
type: integer
description: 'The subscription''s status.
- 0: Paused
- 1: Active'
SubscriptionType:
oneOf:
- $ref: '#/components/schemas/SubscriptionType'
- type: 'null'
description: Subscription type or category. Returns `null` when no type is assigned.
TotalAmount:
type: number
format: double
description: The subscription amount, including any fees.
TotalCycles:
type: integer
description: The total number of cycles the subscription is set to run.
UntilCancelled:
type: boolean
description: When `true`, the subscription has no explicit end date and will run until canceled.
required:
- EndDate
- LastRun
- NextDate
- StartDate
- StoredMethod
title: SubscriptionQueryRecords
Storedmethodid:
type: string
description: 'Payabli identifier of a tokenized payment method. If this field is
used in a request, the `method` field is overridden and the payment
is made using the payment token.
'
title: Storedmethodid
AchSecCode:
type: string
description: "Standard Entry Class (SEC) code is a three letter code that describes\nhow an ACH payment was authorized. Supported values are:\n\n- **PPD** (Prearranged Payment and Deposit) — Used for credits or debits\n where an accountholder authorizes a company to initiate either a single\n or recurring transaction to their personal bank account. Common examples\n include direct deposit of payroll, mortgage payments, or utility bills.\n This is the default value for subscription payments.\n- **WEB** (Internet-Initiated/Mobile Entry) — Used for debit entries when\n authorization is obtained from an accountholder via the internet or a\n wireless network. Common examples are online bill payments, ecommerce\n purchases, and mobile app payments where the consumer enters their\n banking information online.\n- **TEL** (Telephone-Initiated Entry) — Used for one-time debit entries\n where authorization is obtained from a consumer via telephone. Common\n examples are phone-based purchases or bill payments where the consumer\n provides their banking information over the phone.\n- **CCD** (Corporate Credit or Debit) — Used for fund transfers between\n business accounts. This code is specifically for business-to-business\n transactions. Common examples include vendor payments and other\n business-to-business payments.\n- **BOC** (Back Office Conversion) — Used to convert paper checks received\n in-person at a point-of-sale or staffed payment location into electronic\n ACH debits. Required for Remote Deposit Capture (RDC) transactions. Only\n supports consumer checks; business, government, and mailed checks\n aren't eligible.\n"
title: AchSecCode
RemoveSubscriptionResponse:
type: object
properties:
isSuccess:
$ref: '#/components/schemas/IsSuccess'
responseData:
type: string
description: 'If `isSuccess` = true, this contains the identifier of the subscription.
If `isSuccess` = false, this contains the reason for the failure.'
responseText:
$ref: '#/components/schemas/ResponseText'
required:
- responseText
description: Success response
title: RemoveSubscriptionResponse
IdempotencyKey:
type: string
description: '_Optional but recommended._ A unique ID that you can include to prevent
duplicating objects or transactions in the case that a request is sent
more than once. This key isn''t generated in Payabli; you must generate it
yourself. The key persists for 2 minutes. After 2 minutes, you can reuse
the key if needed.
'
title: IdempotencyKey
PayorDataRequest:
type: object
properties:
additionalData:
$ref: '#/components/schemas/AdditionalData'
billingAddress1:
$ref: '#/components/schemas/BillingAddressNullable'
billingAddress2:
$ref: '#/components/schemas/BillingAddressAddtlNullable'
billingCity:
$ref: '#/components/schemas/BillingCityNullable'
billingCountry:
$ref: '#/components/schemas/BillingCountryNullable'
billingEmail:
$ref: '#/components/schemas/Email'
billingPhone:
$ref: '#/components/schemas/PhoneNumber'
billingState:
$ref: '#/components/schemas/BillingStateNullable'
billingZip:
$ref: '#/components/schemas/BillingZip'
description: 'Customer''s billing ZIP code. For Pay In functions, this field supports 5-digit and 9-digit ZIP codes and alphanumeric Canadian postal codes. For example: "37615-1234" or "37615".'
company:
type: string
description: Customer's company name.
customerId:
$ref: '#/components/schemas/CustomerId'
customerNumber:
$ref: '#/components/schemas/CustomerNumberNullable'
firstName:
type: string
description: Customer/Payor first name.
identifierFields:
$ref: '#/components/schemas/Identifierfields'
lastName:
type: string
description: Customer/Payor last name.
shippingAddress1:
$ref: '#/components/schemas/Shippingaddress'
shippingAddress2:
$ref: '#/components/schemas/Shippingaddressadditional'
shippingCity:
$ref: '#/components/schemas/Shippingcity'
shippingCountry:
$ref: '#/components/schemas/Shippingcountry'
shippingState:
$ref: '#/components/schemas/Shippingstate'
shippingZip:
$ref: '#/components/schemas/Shippingzip'
description: Customer information. May be required, depending on the paypoint's settings. Required for subscriptions.
title: PayorDataRequest
FileContentFtype:
type: string
enum:
- pdf
- doc
- docx
- jpg
- jpeg
- png
- gif
- txt
description: The MIME type of the file (if content is provided).
title: FileContentFtype
BillingCountryNullable:
type: string
description: Billing address country.
title: BillingCountryNullable
AdditionalDataMap:
type: object
additionalProperties:
type: string
description: "Custom dictionary of key:value pairs. You can use this field to store any\ndata related to the object or for your system. If you are using\n[custom identifiers](/developers/developer-guides/entities-customers),\npass those in this object. Max length for a value is 100 characters.\n\n```json\n{\n \"additionalData\": {\n \"key1\": \"value1\",\n \"key2\": \"value2\",\n \"key3\": \"value3\"\n }\n}\n```\n"
title: AdditionalDataMap
Cardzip:
type: string
description: 'ZIP or postal code for the billing address of cardholder. We **strongly
recommend** that you include this field when using `card` as a method.
'
title: Cardzip
Cardholder:
type: string
description: Cardholder name.
title: Cardholder
SplitFunding:
type: array
items:
$ref: '#/components/schemas/SplitFundingContent'
description: Split funding instructions for the transaction. The total amount of the splits must match the total amount of the transaction.
title: SplitFunding
InvoiceAmount:
type: number
format: double
description: The invoice amount.
title: InvoiceAmount
BillDataPaymentTerms:
type: string
enum:
- PIA
- CIA
- UR
- NET10
- NET20
- NET30
- NET45
- NET60
- NET90
- EOM
- MFI
- 5MFI
- 10MFI
- 15MFI
- 20MFI
- 2/10NET30
- UF
- 10UF
- 20UF
- 25UF
- 50UF
description: 'Payment terms for invoice. If no terms are defined, then response data for
this field defaults to `NET30`. Mirrors the values in
[`Terms`](#schema-terms).
'
title: BillDataPaymentTerms
BillingCityNullable:
type: string
description: Billing city.
title: BillingCityNullable
GeneralEvents:
type: object
properties:
description:
type: string
description: Event description.
eventTime:
type: string
format: date-time
description: Event timestamp, in UTC.
extraData:
type:
- string
- 'null'
description: Extra data.
refData:
type: string
description: Reference data.
source:
$ref: '#/components/schemas/Source'
description: The event source.
title: GeneralEvents
BillItem:
type: object
properties:
itemCategories:
type: array
items:
type: string
description: Array of tags classifying item or product.
itemCommodityCode:
$ref: '#/components/schemas/ItemCommodityCode'
itemCost:
type: number
format: double
description: Item or product price per unit.
itemDescription:
$ref: '#/components/schemas/ItemDescription'
itemMode:
type: integer
description: 'Internal class of item or product: value `0` is only for invoices,
`1` for bills, and `2` is common for both. Required on invoice line
items — invoice creation fails with `Invalid item data` if it''s omitted.
'
itemProductCode:
$ref: '#/components/schemas/ItemProductCode'
itemProductName:
$ref: '#/components/schemas/ItemProductName'
itemQty:
type: integer
description: Quantity of item or product.
itemTaxAmount:
type: number
format: double
description: Tax amount applied to item or product.
itemTaxRate:
type: number
format: double
description: Tax rate applied to item or product.
itemTotalAmount:
type: number
format: double
description: 'Per-line total for this item (unit cost times quantity). Distinct from
the invoice''s overall total, `invoiceAmount`. Required on invoice line items.
'
itemUnitOfMeasure:
$ref: '#/components/schemas/ItemUnitofMeasure'
title: BillItem
Orderdescription:
type: string
description: Text description of the transaction.
title: Orderdescription
Accounttype:
type: string
description: Bank account type or card brand.
title: Accounttype
AchHolderType:
type: string
enum:
- personal
- business
default: personal
description: 'The bank''s accountholder type: personal or business.
'
title: AchHolderType
AdditionalData:
type: object
additionalProperties:
type: object
additionalProperties:
description: Any type
description: "Custom dictionary of key:value pairs. You can use this field to store any\ndata related to the object or for your system. If you are using\n[custom identifiers](/developers/developer-guides/entities-customers),\npass those in this object. Max length for a value is 100 characters.\nExample usage:\n\n```json\n{\n \"additionalData\": {\n \"key1\": \"value1\",\n \"key2\": \"value2\",\n \"key3\": \"value3\"\n }\n}\n```\n"
title: AdditionalData
ItemProductName:
type: string
description: Item or product name. Max length of 250 characters.
title: ItemProductName
SaveIfSuccess:
type: boolean
description: 'When `true`, Payabli saves the payment method if the transaction is
successful. The payment method ID is returned in the response as
`methodReferenceId`. Defaults to `false`.
'
title: SaveIfSuccess
VendorResponseStoredMethod:
type: object
properties:
IdPmethod:
type:
- string
- 'null'
Method:
type:
- string
- 'null'
Descriptor:
type:
- string
- 'null'
MaskedAccount:
type:
- string
- 'null'
ExpDate:
type:
- string
- 'null'
HolderName:
type:
- string
- 'null'
AchSecCode:
type:
- string
- 'null'
AchHolderType:
type:
- string
- 'null'
IsValidatedACH:
type:
- boolean
- 'null'
BIN:
type:
- string
- 'null'
binData:
oneOf:
- $ref: '#/components/schemas/BinData'
- type: 'null'
ABA:
type:
- string
- 'null'
PostalCode:
type:
- string
- 'null'
MethodType:
type:
- string
- 'null'
WalletType:
type:
- string
- 'null'
description: Digital wallet type if applicable.
LastUpdated:
type:
- string
- 'null'
format: date-time
CardUpdatedOn:
type:
- string
- 'null'
format: date-time
description: Date and time the card was last updated.
required:
- IdPmethod
- Method
- Descriptor
- MaskedAccount
- ExpDate
- HolderName
- AchSecCode
- AchHolderType
- IsValidatedACH
- BIN
- binData
- ABA
- PostalCode
- MethodType
- WalletType
- LastUpdated
- CardUpdatedOn
description: Stored payment method information
title: VendorResponseStoredMethod
Achrouting:
type: string
description: ABA/routing number of Bank account.
title: Achrouting
TermsConditions:
type: string
description: Custom terms and conditions included in the invoice.
title: TermsConditions
Attachments:
type: array
items:
$ref: '#/components/schemas/FileContent'
description: 'Array of `fileContent` objects with attached documents. Max upload size is
30 MB.
'
title: Attachments
PhoneNumber:
type: string
description: Phone number.
title: PhoneNumber
CustomerNumberNullable:
type: string
description: 'User-provided unique identifier for the customer. This is typically the
customer ID from your own system.
'
title: CustomerNumberNullable
Entrypointfield:
type: string
description: The entrypoint identifier.
title: Entrypointfield
AccountId:
type: string
description: Custom identifier for payment connector.
title: AccountId
Invoicestatus:
type: integer
description: Invoice status code.
title: Invoicestatus
Shippingcountry:
type: string
description: Shipping address country.
title: Shippingcountry
InvoiceType:
type: integer
description: 'Invoice type. Value `0` is for single/one-time invoices, `1` for
scheduled invoices.
'
title: InvoiceType
RequestSchedulePaymentMethod:
oneOf:
- $ref: '#/components/schemas/PayMethodCredit'
- $ref: '#/components/schemas/PayMethodACH'
- $ref: '#/components/schemas/RequestSchedulePaymentMethodInitiator'
description: Information about the payment method for the transaction. Required and recommended fields for each payment method type are described in each schema below.
title: RequestSchedulePaymentMethod
BinData:
type: object
properties:
binMatchedLength:
type: string
description: 'The number of characters from the beginning of the card number that
were matched against a Bank Identification Number (BIN) or the Card
Range table.'
binCardBrand:
type: string
description: 'The card brand. For example, Visa, Mastercard, American Express,
Discover.'
binCardType:
type: string
description: 'The type of card: `Credit` or `Debit`. Case can vary between
processors, so compare this value case-insensitively.'
binCardCategory:
type: string
description: 'The category of the card, which indicates the card product. For example: Standard, Gold, Platinum, etc. The binCardCategory for prepaid cards is marked `PREPAID`.'
binCardIssuer:
type: string
description: The name of the financial institution that issued the card.
binCardIssuerCountry:
type: string
description: The issuing financial institution's country name.
binCardIssuerCountryCodeA2:
type: string
description: The issuing financial institution's two-character ISO country code. See [this resource](https://www.iso.org/obp/ui/#search) for a list of codes.
binCardIssuerCountryNumber:
type: string
description: The issuing financial institution's ISO standard numeric country code. See [this resource](https://www.iso.org/obp/ui/#search) for a list of codes.
binCardIsRegulated:
type: string
description: Indicates whether the card is regulated.
binCardUseCategory:
type: string
description: The use category classification for the card.
binCardIssuerCountryCodeA3:
type: string
description: 'The issuing financial institution''s three-character ISO country code.
See [this resource](https://www.iso.org/obp/ui/#search) for a list of
codes.'
description: 'Object containing information related to the card. This object is `null`
unless the payment method is card. If the payment method is Apple Pay, the
binData will be related to the DPAN (device primary account number), not
the card connected to Apple Pay.'
title: BinData
Source:
type: string
description: Custom identifier to indicate the transaction or request source.
title: Source
ShippingFromZip:
type: string
description: Sender shipping ZIP code.
title: ShippingFromZip
CustomerId:
# --- truncated at 32 KB (58 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/payabli/refs/heads/main/openapi/payabli-subscription-api-openapi.yml