# Create payout subscription POST https://api-sandbox.payabli.com/api/PayoutSubscription Content-Type: application/json Creates a payout subscription to automatically send payouts to a vendor on a recurring schedule. See [Manage payout subscriptions](/guides/pay-out-developer-payout-subscriptions-manage) for a step-by-step guide. Reference: https://docs.payabli.com/developers/api-reference/payout-subscription/create-payout-subscription ## OpenAPI Specification ```yaml openapi: 3.1.0 info: title: payabliApi version: 1.0.0 paths: /PayoutSubscription: post: operationId: create-payout-subscription summary: Create payout subscription description: >- Creates a payout subscription to automatically send payouts to a vendor on a recurring schedule. See [Manage payout subscriptions](/guides/pay-out-developer-payout-subscriptions-manage) for a step-by-step guide. tags: - subpackage_payoutSubscription parameters: - name: requestToken in: header required: true schema: type: string - name: idempotencyKey in: header required: false schema: $ref: '#/components/schemas/type_:IdempotencyKey' responses: '200': description: Success content: application/json: schema: $ref: >- #/components/schemas/type_payoutSubscription:AddPayoutSubscriptionResponse '400': description: Bad request/ invalid data content: application/json: schema: description: Any type '401': description: Unauthorized request. content: application/json: schema: description: Any type '500': description: Internal API Error content: application/json: schema: description: Any type '503': description: Database connection error content: application/json: schema: $ref: '#/components/schemas/type_:PayabliApiResponse' requestBody: content: application/json: schema: $ref: >- #/components/schemas/type_payoutSubscription:PayoutSubscriptionRequestBody servers: - url: https://api-sandbox.payabli.com/api - url: https://api.payabli.com/api components: schemas: type_: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. This key persists for 2 minutes. After 2 minutes, you can reuse the key if needed. title: IdempotencyKey type_:Entrypointfield: type: string description: The entrypoint identifier. title: Entrypointfield type_:Subdomain: type: string description: >- Refers to the payment page identifier. If provided, then the transaction is linked to the payment page. title: Subdomain type_:AccountId: type: string description: Custom identifier for payment connector. title: AccountId type_:Source: type: string description: Custom identifier to indicate the transaction or request source. title: Source type_payoutSubscription:PayoutSetPause: type: boolean description: >- Flag indicating if the payout subscription is paused. When a payout subscription is paused, no payouts are processed until it's unpaused, and the next payment date isn't calculated automatically. title: PayoutSetPause type_:AchSecCode: type: string description: >- Standard Entry Class (SEC) code is a three letter code that describes how an ACH payment was authorized. Supported values are: - PPD (Prearranged Payment and Deposit) - Used for credits or debits where an accountholder authorizes a company to initiate either a single or recurring transaction to their personal bank account. Common examples include direct deposit of payroll, mortgage payments, or utility bills. This is the default value for subscription payments. - WEB (Internet-Initiated/Mobile Entry) - Used for debit entries when authorization is obtained from an accountholder via the internet or a wireless network. Common examples are online bill payments, ecommerce purchases, and mobile app payments where the consumer enters their banking information online. - TEL (Telephone-Initiated Entry) - Used for one-time debit entries where authorization is obtained from a consumer via telephone. Common examples are phone-based purchases or bill payments where the consumer provides their banking information over the phone. - CCD (Corporate Credit or Debit) - Used for fund transfers between business accounts. This code is specifically for business-to-business transactions. Common examples include vendor payments and other business-to-business payments. - BOC (Back Office Conversion) - Used to convert paper checks received in-person at a point-of-sale or staffed payment location into electronic ACH debits. Required for Remote Deposit Capture (RDC) transactions. Only supports consumer checks; business, government, and mailed checks aren't eligible. title: AchSecCode type_:AchHolderType: type: string enum: - personal - business default: personal description: 'The bank''s accountholder type: personal or business.' title: AchHolderType type_:Initiator: type: string description: >- **Strongly recommended** The cardholder-initiated transaction (CIT) or merchant-initiated transaction (MIT) indicator for the transaction. If you don't specify a value, Payabli defaults to `merchant`. Available values: - `payor`: For cardholder-initiated transactions - `merchant`: For merchant-initiated transactions See [Understanding CIT and MIT Indicators](/guides/pay-in-transactions-cit-mit-overview) for more information. title: Initiator type_:StoredMethodUsageType: type: string description: >- **Strongly recommended** The usage type for the stored method, used for merchant-initiated transactions (MIT). If you don't specify a value, Payabli defaults to `unscheduled`. Available values: - `unscheduled`: This type is used for transactions that are one-time or otherwise not pre-scheduled. - `subscription`: This type is used for subscription payments. For example, monthly rental fees or ongoing service subscriptions. - `recurring`: This type is used for recurring payments that occur per a set plan. For example, splitting an HOA special assessment over 6 monthly payments. See [Understanding CIT and MIT Indicators](/guides/pay-in-transactions-cit-mit-overview) for more information. title: StoredMethodUsageType type___moneyOutTypes__:AuthorizePaymentMethod: type: object properties: method: type: string description: Payment method type - "managed", "vcard", "check", or "ach" achHolder: type: string description: >- Account holder name for ACH payments. Required when method is "ach" and not using `storedMethodId`. achRouting: type: string description: >- Bank routing number for ACH payments. Required when method is "ach" and not using `storedMethodId`. achAccount: type: string description: >- Bank account number for ACH payments. Required when method is "ach" and not using `storedMethodId`. achAccountType: type: string description: >- Account type for ACH payments ("checking" or "savings"). Required when method is "ach" and not using `storedMethodId`. achCode: $ref: '#/components/schemas/type_:AchSecCode' achHolderType: $ref: '#/components/schemas/type_:AchHolderType' storedMethodId: type: string description: >- ID of the stored ACH payment method. Only applicable when method is `ach`. Use this to reference a previously saved ACH method instead of providing bank details directly. initiator: $ref: '#/components/schemas/type_:Initiator' storedMethodUsageType: $ref: '#/components/schemas/type_:StoredMethodUsageType' required: - method description: >- Payment method object for vendor payouts. - `{ method: "managed" }` - Managed payment method - `{ method: "vcard" }` - Virtual card payment method - `{ method: "check" }` - Check payment method - `{ method: "ach", achHolder: "...", achRouting: "...", achAccount: "...", achAccountType: "..." }` - ACH payment method with bank details - `{ method: "ach", storedMethodId: "..." }` - ACH payment method using stored method ID title: AuthorizePaymentMethod type_payoutSubscription:PayoutPaymentDetail: type: object properties: totalAmount: type: number format: double description: >- Total payout amount. If a service fee is included, this amount should include the service fee. serviceFee: type: number format: double description: >- Service fee to be deducted from the total amount. This amount must be a number, percentages aren't accepted. currency: type: string description: >- Currency code ISO-4217. If no code is provided, the currency in the paypoint setting is used. Default is `USD`. checkNumber: type: string description: >- A check number for the payout. Required when the payment method is `check`. orderDescription: type: string description: Description of the payout order. orderId: type: string description: Order identifier associated with the payout. orderIdAlternative: type: string description: Alternative order identifier. paymentDescription: type: string description: Description of the payment. settlementDescriptor: type: string description: Settlement descriptor for the payout. groupNumber: type: string description: Group number for the payout. source: type: string description: Source identifier for the payout. payabliTransId: type: string description: Payabli transaction identifier. unbundled: type: boolean description: >- When `true`, each bill is processed as a separate payout. When `false` or not provided, multiple bills are paid with a single payout. required: - totalAmount description: Payment details for payout subscriptions. title: PayoutPaymentDetail type_:VendorNumber: type: string description: >- Custom number identifying the vendor. Must be unique in paypoint. Can't be blank. title: VendorNumber type_:VendorName1: type: string description: >- Primary name for vendor. Required for new vendor. Allowed characters are letters, numbers, spaces, and the following symbols `. , ' & ( ) title: VendorName1 type_:VendorName2: type: string description: >- Secondary name for vendor. If provided, allowed characters are the same as the `name1` field. Letters, numbers, spaces, and `. , ' & ( ) title: VendorName2 type_:VendorEin: type: string description: >- EIN/Tax ID for vendor. Must be nine digits formatted as `XX-XXXXXXX` (for example, `12-3456789`). title: VendorEin type_:VendorPhone: type: string description: >- Vendor's phone number. Phone number can't contain non-digit characters like hyphens or parentheses. title: VendorPhone type_:Email: type: string format: email description: Email address. title: Email type_:AddressNullable: type: string description: The address. title: AddressNullable type_:Mcc: type: string description: >- Business Merchant Category Code (MCC). [This resource](https://github.com/greggles/mcc-codes/blob/main/mcc_codes.csv) lists MCC codes. title: Mcc type_:AdditionalDataString: type: string description: >- Custom dictionary of key:value pairs. You can use this field to store any data related to the object or for your system. Example usage: ```json { "additionalData": { "key1": "value1", "key2": "value2", "key3": "value3" } } ``` title: AdditionalDataString type_:Contacts: type: object properties: contactEmail: $ref: '#/components/schemas/type_:Email' description: Contact email address. contactName: type: string description: Contact name. contactPhone: type: string description: Contact phone number. contactTitle: type: string description: Contact title. additionalData: $ref: '#/components/schemas/type_:AdditionalDataString' title: Contacts type_:ContactsField: type: array items: $ref: '#/components/schemas/type_:Contacts' description: List of contacts. title: ContactsField type_:BankName: type: string description: Name of bank for account. title: BankName type_:RoutingAccount: type: string description: Routing number of bank account. title: RoutingAccount type_:AccountNumber: type: string description: >- Account number for bank account. This value is returned masked in responses. title: AccountNumber type_:TypeAccount: type: string enum: - Checking - Savings description: 'Type of bank account: Checking or Savings.' title: TypeAccount type_:BankAccountHolderName: type: string description: The accountholder's name. title: BankAccountHolderName type___moneyOutTypes__:RequestOutAuthorizeVendorBillingData: type: object properties: bankName: $ref: '#/components/schemas/type_:BankName' routingAccount: $ref: '#/components/schemas/type_:RoutingAccount' accountNumber: $ref: '#/components/schemas/type_:AccountNumber' typeAccount: $ref: '#/components/schemas/type_:TypeAccount' bankAccountHolderName: $ref: '#/components/schemas/type_:BankAccountHolderName' description: >- Object containing vendor's bank information. This object is deprecated for this endpoint. Use the `paymentMethod` object in payout authorize requests instead. title: RequestOutAuthorizeVendorBillingData type_:Vendorstatus: type: integer description: |- Vendor's status. Allowed values: - `0` Inactive - `1` Active - `-99` Deleted title: Vendorstatus type_:Remitaddress1: type: string description: >- Remittance street address. Used for mailing paper checks. Required if any remittance address field is provided. Allowed characters are letters, numbers, spaces, and `. , title: Remitaddress1 type_:Remitaddress2: type: string description: >- Remittance address additional line, such as a suite or unit number. Used for mailing paper checks. Always optional. title: Remitaddress2 type_:Remitcity: type: string description: >- Remittance address city. Used for mailing paper checks. Required if any remittance address field is provided. title: Remitcity type_:Remitstate: type: string description: >- Remittance address state or province. Used for mailing paper checks. Required if any remittance address field is provided. Must be a valid US state or Canadian province abbreviation. title: Remitstate type_:Remitzip: type: string description: >- Remittance address ZIP or postal code. Used for mailing paper checks. Required if any remittance address field is provided. For US addresses, use five digits or ZIP+4 format. title: Remitzip type_:Remitcountry: type: string description: >- Remittance address country. Used for mailing paper checks. Must be `US` or `CA`. Defaults to `US` if not provided. title: Remitcountry type_: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 data related to the object or for your system. If you are using [custom identifiers](/developers/developer-guides/entities-customers), pass those in this object. Max length for a value is 100 characters. Example usage: ```json { "additionalData": { "key1": "value1", "key2": "value2", "key3": "value3" } } ``` title: AdditionalData type_:AddressAddtlNullable: type: string description: Additional line for the address. title: AddressAddtlNullable type_:LocationCode: type: string description: A location code used to identify the vendor's location. title: LocationCode type_:PayeeName: type: string description: Alternative name used to receive paper check. title: PayeeName type_:VendorPaymentMethod: type: object properties: method: type: string description: Payment method type - "managed", "vcard", "check", or "ach" storedMethodId: type: string description: >- ID of the stored ACH payment method. Only applicable when method is "ach". Required when using a previously saved ACH method when the vendor has more than one saved method. See the [Payouts with saved ACH payment methods](/developers/developer-guides/pay-out-manage-payouts) section for more details. required: - method description: >- Payment method object to use for the payout. - `{ method: "managed" }` - Managed payment method - `{ method: "vcard" }` - Virtual card payment method - `{ method: "check" }` - Check payment method - `{ method: "ach", storedMethodId?: "..." }` - ACH payment method with optional stored method ID title: VendorPaymentMethod type_:Vendorid: type: integer description: Payabli identifier for vendor record. title: Vendorid type___moneyOutTypes__:RequestOutAuthorizeVendorData: type: object properties: vendorNumber: $ref: '#/components/schemas/type_:VendorNumber' name1: $ref: '#/components/schemas/type_:VendorName1' name2: $ref: '#/components/schemas/type_:VendorName2' ein: $ref: '#/components/schemas/type_:VendorEin' phone: $ref: '#/components/schemas/type_:VendorPhone' email: $ref: '#/components/schemas/type_:Email' address1: $ref: '#/components/schemas/type_:AddressNullable' city: type: string state: type: string zip: type: string country: type: string mcc: $ref: '#/components/schemas/type_:Mcc' contacts: $ref: '#/components/schemas/type_:ContactsField' billingData: $ref: >- #/components/schemas/type___moneyOutTypes__:RequestOutAuthorizeVendorBillingData vendorStatus: $ref: '#/components/schemas/type_:Vendorstatus' remitAddress1: $ref: '#/components/schemas/type_:Remitaddress1' remitAddress2: $ref: '#/components/schemas/type_:Remitaddress2' remitCity: $ref: '#/components/schemas/type_:Remitcity' remitState: $ref: '#/components/schemas/type_:Remitstate' remitZip: $ref: '#/components/schemas/type_:Remitzip' remitCountry: $ref: '#/components/schemas/type_:Remitcountry' customerVendorAccount: type: string customField1: type: string customField2: type: string additionalData: $ref: '#/components/schemas/type_:AdditionalData' address2: $ref: '#/components/schemas/type_:AddressAddtlNullable' internalReferenceId: type: integer format: int64 locationCode: $ref: '#/components/schemas/type_:LocationCode' payeeName1: $ref: '#/components/schemas/type_:PayeeName' payeeName2: $ref: '#/components/schemas/type_:PayeeName' paymentMethod: $ref: '#/components/schemas/type_:VendorPaymentMethod' vendorId: $ref: '#/components/schemas/type_:Vendorid' description: Object containing vendor data. title: RequestOutAuthorizeVendorData type_:Comments: type: string description: Any comment or description. title: Comments type_:InvoiceNumber: type: string description: >- Custom number identifying the bill or invoice. Must be unique in paypoint. title: InvoiceNumber type_:NetAmountstring: type: string description: Net Amount owed in bill. Required when adding a bill. title: NetAmountstring type_:Terms: type: string description: >- Payment terms for invoice. If no terms are defined, then response data for this field defaults to `NET30`. **Available Values:** - `PIA`: Payment in advance - `CIA`: Cash in advance - `UR`: Upon receipt - `NET10`: 10 days after invoice date - `NET20`: 20 days after invoice date - `NET30`: 30 days after invoice date - `NET45`: 45 days after invoice date - `NET60`: 60 days after invoice date - `NET90`: 90 days after invoice date - `EOM`: Due end of this month - `MFI`: 1st of the month following the invoice date - `5MFI`: 5th of the month following the invoice date - `10MFI`: 10th of the month following the invoice date - `15MFI`: 15th of the month following the invoice date - `20MFI`: 20th of the month following the invoice date - `2/10NET30`: 2% discount if paid within 10 days, otherwise net 30 days - `UF`: Until further notice - `10UF`: 10 days until further notice - `20UF`: 20 days until further notice - `25UF`: 25 days until further notice - `50UF`: 50 days until further notice title: Terms type_:AccountingField: type: string description: Optional custom field. title: AccountingField type_: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 type_:FileContent: type: object properties: fContent: type: string description: >- Content of file, Base64-encoded. Ignored if furl is specified. Max upload size is 30 MB. filename: type: string description: The name of the attached file. ftype: $ref: '#/components/schemas/type_:FileContentFtype' description: The MIME type of the file (if content is provided) furl: type: string description: Optional URL provided to show or download the file remotely description: Contains details about a file. Max upload size is 30 MB. title: FileContent type_:Attachments: type: array items: $ref: '#/components/schemas/type_:FileContent' description: >- Array of `fileContent` objects with attached documents. Max upload size is 30 MB. title: Attachments type_:BillPayOutDataRequest: type: object properties: billId: type: integer format: int64 description: Bill ID in Payabli. comments: $ref: '#/components/schemas/type_:Comments' description: >- Any comments about bill. **For managed payouts, this field has a limit of 100 characters**. dueDate: type: string format: date description: Bill due date in format YYYY-MM-DD or MM/DD/YYYY. invoiceDate: type: string format: date description: Bill date in format YYYY-MM-DD or MM/DD/YYYY. invoiceNumber: $ref: '#/components/schemas/type_:InvoiceNumber' description: >- Custom number identifying the bill. Must be unique in paypoint. **Required** for new bill and when `billId` isn't provided. netAmount: $ref: '#/components/schemas/type_:NetAmountstring' description: Net Amount owed in bill. Required when adding a bill. discount: type: string description: Bill discount amount. terms: $ref: '#/components/schemas/type_:Terms' description: Description of payment terms. accountingField1: $ref: '#/components/schemas/type_:AccountingField' accountingField2: $ref: '#/components/schemas/type_:AccountingField' additionalData: $ref: '#/components/schemas/type_:AdditionalDataString' attachments: $ref: '#/components/schemas/type_:Attachments' description: >- Bill image attachment. Send the bill image as Base64-encoded string, or as a publicly accessible link. For full details on using this field with a payout authorization, see [the documentation](/developers/developer-guides/pay-out-manage-payouts). title: BillPayOutDataRequest type_:Frequency: type: string enum: - onetime - weekly - every2weeks - every6months - monthly - every3months - annually description: Frequency for operation. title: Frequency type_payoutSubscription:PayoutScheduleDetail: type: object properties: startDate: type: string description: >- Subscription start date in any of the accepted formats: YYYY-MM-DD, MM/DD/YYYY. This must be a future date. endDate: type: string description: >- Subscription end date in any of the accepted formats: YYYY-MM-DD, MM/DD/YYYY or the value `untilcancelled` to indicate a scheduled payout with infinite cycle. frequency: $ref: '#/components/schemas/type_:Frequency' description: Frequency of the payout subscription. title: PayoutScheduleDetail type_payoutSubscription:PayoutSubscriptionRequestBody: type: object properties: entryPoint: $ref: '#/components/schemas/type_:Entrypointfield' subdomain: $ref: '#/components/schemas/type_:Subdomain' accountId: $ref: '#/components/schemas/type_:AccountId' source: $ref: '#/components/schemas/type_:Source' setPause: $ref: '#/components/schemas/type_payoutSubscription:PayoutSetPause' paymentMethod: $ref: '#/components/schemas/type___moneyOutTypes__:AuthorizePaymentMethod' description: >- Payment method for the payout subscription. Supports `ach`, `vcard`, and `check`. The `managed` method isn't supported for payout subscriptions. paymentDetails: $ref: '#/components/schemas/type_payoutSubscription:PayoutPaymentDetail' description: Object describing details of the payout. vendorData: $ref: >- #/components/schemas/type___moneyOutTypes__:RequestOutAuthorizeVendorData description: >- Object identifying the vendor for this subscription. Only a `vendorId` or `vendorNumber` is needed to link to an existing vendor. billData: type: array items: $ref: '#/components/schemas/type_:BillPayOutDataRequest' description: >- Array of bills associated with the payout subscription. If omitted and `doNotCreateBills` isn't set to `true`, the system creates a bill automatically. scheduleDetails: $ref: '#/components/schemas/type_payoutSubscription:PayoutScheduleDetail' description: Object describing the schedule for the payout subscription. required: - entryPoint - paymentMethod - vendorData title: PayoutSubscriptionRequestBody type_:IsSuccess: type: boolean description: >- Boolean indicating whether the operation was successful. A `true` value indicates success. A `false` value indicates failure. title: IsSuccess type_:ResponseText: type: string description: 'Response text for operation: ''Success'' or ''Declined''.' title: ResponseText type_:CustomerId: type: integer format: int64 description: The Payabli-generated unique ID for the customer. title: CustomerId type_payoutSubscription:AddPayoutSubscriptionResponse: type: object properties: isSuccess: $ref: '#/components/schemas/type_:IsSuccess' responseText: $ref: '#/components/schemas/type_:ResponseText' responseData: type: integer description: The identifier of the newly created payout subscription. customerId: $ref: '#/components/schemas/type_:CustomerId' description: >- The identifier of the vendor associated with the payout subscription. required: - responseText - responseData description: Success response title: AddPayoutSubscriptionResponse type_:Responsedata: type: object additionalProperties: description: Any type description: The object containing the response data. title: Responsedata type_:PayabliApiResponse: type: object properties: isSuccess: $ref: '#/components/schemas/type_:IsSuccess' responseData: $ref: '#/components/schemas/type_:Responsedata' responseText: $ref: '#/components/schemas/type_:ResponseText' required: - responseText title: PayabliApiResponse securitySchemes: ApiKeyAuth: type: apiKey in: header name: requestToken ``` ## SDK Code Examples ```typescript ACHPayoutSubscription import { PayabliClient } from "@payabli/sdk-node"; async function main() { const client = new PayabliClient({ apiKey: "YOUR_API_KEY_HERE", }); await client.payoutSubscription.createPayoutSubscription({ body: { entryPoint: "d193cf9a46", paymentMethod: { method: "ach", achHolder: "Herman Coatings", achRouting: "021000021", achAccount: "3453445666", achAccountType: "checking", }, vendorData: { vendorId: 1501, }, paymentDetails: { totalAmount: 500, serviceFee: 0, currency: "USD", }, billData: [ { dueDate: "2025-08-15", invoiceDate: "2025-08-01", invoiceNumber: "INV-5001", netAmount: "500", }, ], scheduleDetails: { startDate: "09/01/2025", endDate: "09/01/2026", frequency: "monthly", }, }, }); } main(); ``` ```python ACHPayoutSubscription from payabli import payabli, BillPayOutDataRequest from payabli.money_out_types import AuthorizePaymentMethod, RequestOutAuthorizeVendorData from payabli.payout_subscription import PayoutPaymentDetail, PayoutScheduleDetail import datetime client = payabli( api_key="YOUR_API_KEY_HERE", ) client.payout_subscription.create_payout_subscription( entry_point="d193cf9a46", payment_method=AuthorizePaymentMethod( method="ach", ach_holder="Herman Coatings", ach_routing="021000021", ach_account="3453445666", ach_account_type="checking", ), vendor_data=RequestOutAuthorizeVendorData( vendor_id=1501, ), payment_details=PayoutPaymentDetail( total_amount=500, service_fee=0, currency="USD", ), bill_data=[ BillPayOutDataRequest( due_date=datetime.date.fromisoformat("2025-08-15"), invoice_date=datetime.date.fromisoformat("2025-08-01"), invoice_number="INV-5001", net_amount="500", ) ], schedule_details=PayoutScheduleDetail( start_date="09/01/2025", end_date="09/01/2026", frequency="monthly", ), ) ``` ```csharp ACHPayoutSubscription using PayabliPayabliApi; using System.Threading.Tasks; using System.Collections.Generic; using System; namespace Usage; public class Example { public async Task Do() { var client = new PayabliPayabliApiClient( apiKey: "YOUR_API_KEY_HERE" ); await client.PayoutSubscription.CreatePayoutSubscriptionAsync( new RequestPayoutSchedule { Body = new PayoutSubscriptionRequestBody { EntryPoint = "d193cf9a46", PaymentMethod = new AuthorizePaymentMethod { Method = "ach", AchHolder = "Herman Coatings", AchRouting = "021000021", AchAccount = "3453445666", AchAccountType = "checking" }, VendorData = new RequestOutAuthorizeVendorData { VendorId = 1501 }, PaymentDetails = new PayoutPaymentDetail { TotalAmount = 500, ServiceFee = 0, Currency = "USD" }, BillData = new List(){ new BillPayOutDataRequest { DueDate = DateOnly.Parse("2025-08-15"), InvoiceDate = DateOnly.Parse("2025-08-01"), InvoiceNumber = "INV-5001", NetAmount = "500" }, } , ScheduleDetails = new PayoutScheduleDetail { StartDate = "09/01/2025", EndDate = "09/01/2026", Frequency = Frequency.Monthly } } } ); } } ``` ```go ACHPayoutSubscription package main import ( "fmt" "strings" "net/http" "io" ) func main() { url := "https://api-sandbox.payabli.com/api/PayoutSubscription" payload := strings.NewReader("{\n \"entryPoint\": \"d193cf9a46\",\n \"paymentMethod\": {\n \"method\": \"ach\",\n \"achHolder\": \"Herman Coatings\",\n \"achRouting\": \"021000021\",\n \"achAccount\": \"3453445666\",\n \"achAccountType\": \"checking\"\n },\n \"vendorData\": {\n \"vendorId\": 1501\n },\n \"paymentDetails\": {\n \"totalAmount\": 500,\n \"serviceFee\": 0,\n \"currency\": \"USD\"\n },\n \"billData\": [\n {\n \"dueDate\": \"2025-08-15\",\n \"invoiceDate\": \"2025-08-01\",\n \"invoiceNumber\": \"INV-5001\",\n \"netAmount\": \"500\"\n }\n ],\n \"scheduleDetails\": {\n \"startDate\": \"09/01/2025\",\n \"endDate\": \"09/01/2026\",\n \"frequency\": \"monthly\"\n }\n}") req, _ := http.NewRequest("POST", url, payload) req.Header.Add("requestToken", "") req.Header.Add("Content-Type", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby ACHPayoutSubscription require 'uri' require 'net/http' url = URI("https://api-sandbox.payabli.com/api/PayoutSubscription") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Post.new(url) request["requestToken"] = '' request["Content-Type"] = 'application/json' request.body = "{\n \"entryPoint\": \"d193cf9a46\",\n \"paymentMethod\": {\n \"method\": \"ach\",\n \"achHolder\": \"Herman Coatings\",\n \"achRouting\": \"021000021\",\n \"achAccount\": \"3453445666\",\n \"achAccountType\": \"checking\"\n },\n \"vendorData\": {\n \"vendorId\": 1501\n },\n \"paymentDetails\": {\n \"totalAmount\": 500,\n \"serviceFee\": 0,\n \"currency\": \"USD\"\n },\n \"billData\": [\n {\n \"dueDate\": \"2025-08-15\",\n \"invoiceDate\": \"2025-08-01\",\n \"invoiceNumber\": \"INV-5001\",\n \"netAmount\": \"500\"\n }\n ],\n \"scheduleDetails\": {\n \"startDate\": \"09/01/2025\",\n \"endDate\": \"09/01/2026\",\n \"frequency\": \"monthly\"\n }\n}" response = http.request(request) puts response.read_body ``` ```java ACHPayoutSubscription import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.post("https://api-sandbox.payabli.com/api/PayoutSubscription") .header("requestToken", "") .header("Content-Type", "application/json") .body("{\n \"entryPoint\": \"d193cf9a46\",\n \"paymentMethod\": {\n \"method\": \"ach\",\n \"achHolder\": \"Herman Coatings\",\n \"achRouting\": \"021000021\",\n \"achAccount\": \"3453445666\",\n \"achAccountType\": \"checking\"\n },\n \"vendorData\": {\n \"vendorId\": 1501\n },\n \"paymentDetails\": {\n \"totalAmount\": 500,\n \"serviceFee\": 0,\n \"currency\": \"USD\"\n },\n \"billData\": [\n {\n \"dueDate\": \"2025-08-15\",\n \"invoiceDate\": \"2025-08-01\",\n \"invoiceNumber\": \"INV-5001\",\n \"netAmount\": \"500\"\n }\n ],\n \"scheduleDetails\": {\n \"startDate\": \"09/01/2025\",\n \"endDate\": \"09/01/2026\",\n \"frequency\": \"monthly\"\n }\n}") .asString(); ``` ```php ACHPayoutSubscription request('POST', 'https://api-sandbox.payabli.com/api/PayoutSubscription', [ 'body' => '{ "entryPoint": "d193cf9a46", "paymentMethod": { "method": "ach", "achHolder": "Herman Coatings", "achRouting": "021000021", "achAccount": "3453445666", "achAccountType": "checking" }, "vendorData": { "vendorId": 1501 }, "paymentDetails": { "totalAmount": 500, "serviceFee": 0, "currency": "USD" }, "billData": [ { "dueDate": "2025-08-15", "invoiceDate": "2025-08-01", "invoiceNumber": "INV-5001", "netAmount": "500" } ], "scheduleDetails": { "startDate": "09/01/2025", "endDate": "09/01/2026", "frequency": "monthly" } }', 'headers' => [ 'Content-Type' => 'application/json', 'requestToken' => '', ], ]); echo $response->getBody(); ``` ```swift ACHPayoutSubscription import Foundation let headers = [ "requestToken": "", "Content-Type": "application/json" ] let parameters = [ "entryPoint": "d193cf9a46", "paymentMethod": [ "method": "ach", "achHolder": "Herman Coatings", "achRouting": "021000021", "achAccount": "3453445666", "achAccountType": "checking" ], "vendorData": ["vendorId": 1501], "paymentDetails": [ "totalAmount": 500, "serviceFee": 0, "currency": "USD" ], "billData": [ [ "dueDate": "2025-08-15", "invoiceDate": "2025-08-01", "invoiceNumber": "INV-5001", "netAmount": "500" ] ], "scheduleDetails": [ "startDate": "09/01/2025", "endDate": "09/01/2026", "frequency": "monthly" ] ] as [String : Any] let postData = JSONSerialization.data(withJSONObject: parameters, options: []) let request = NSMutableURLRequest(url: NSURL(string: "https://api-sandbox.payabli.com/api/PayoutSubscription")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "POST" request.allHTTPHeaderFields = headers request.httpBody = postData as Data let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ``` ```typescript VcardPayoutSubscription import { PayabliClient } from "@payabli/sdk-node"; async function main() { const client = new PayabliClient({ apiKey: "YOUR_API_KEY_HERE", }); await client.payoutSubscription.createPayoutSubscription({ body: { entryPoint: "d193cf9a46", paymentMethod: { method: "vcard", }, vendorData: { vendorId: 1501, }, paymentDetails: { totalAmount: 250, serviceFee: 0, }, billData: [ { dueDate: "2025-09-01", invoiceDate: "2025-08-15", invoiceNumber: "INV-7820", netAmount: "250", }, ], scheduleDetails: { startDate: "09/01/2025", endDate: "untilcancelled", frequency: "weekly", }, }, }); } main(); ``` ```python VcardPayoutSubscription from payabli import payabli, BillPayOutDataRequest from payabli.money_out_types import AuthorizePaymentMethod, RequestOutAuthorizeVendorData from payabli.payout_subscription import PayoutPaymentDetail, PayoutScheduleDetail import datetime client = payabli( api_key="YOUR_API_KEY_HERE", ) client.payout_subscription.create_payout_subscription( entry_point="d193cf9a46", payment_method=AuthorizePaymentMethod( method="vcard", ), vendor_data=RequestOutAuthorizeVendorData( vendor_id=1501, ), payment_details=PayoutPaymentDetail( total_amount=250, service_fee=0, ), bill_data=[ BillPayOutDataRequest( due_date=datetime.date.fromisoformat("2025-09-01"), invoice_date=datetime.date.fromisoformat("2025-08-15"), invoice_number="INV-7820", net_amount="250", ) ], schedule_details=PayoutScheduleDetail( start_date="09/01/2025", end_date="untilcancelled", frequency="weekly", ), ) ``` ```csharp VcardPayoutSubscription using PayabliPayabliApi; using System.Threading.Tasks; using System.Collections.Generic; using System; namespace Usage; public class Example { public async Task Do() { var client = new PayabliPayabliApiClient( apiKey: "YOUR_API_KEY_HERE" ); await client.PayoutSubscription.CreatePayoutSubscriptionAsync( new RequestPayoutSchedule { Body = new PayoutSubscriptionRequestBody { EntryPoint = "d193cf9a46", PaymentMethod = new AuthorizePaymentMethod { Method = "vcard" }, VendorData = new RequestOutAuthorizeVendorData { VendorId = 1501 }, PaymentDetails = new PayoutPaymentDetail { TotalAmount = 250, ServiceFee = 0 }, BillData = new List(){ new BillPayOutDataRequest { DueDate = DateOnly.Parse("2025-09-01"), InvoiceDate = DateOnly.Parse("2025-08-15"), InvoiceNumber = "INV-7820", NetAmount = "250" }, } , ScheduleDetails = new PayoutScheduleDetail { StartDate = "09/01/2025", EndDate = "untilcancelled", Frequency = Frequency.Weekly } } } ); } } ``` ```go VcardPayoutSubscription package main import ( "fmt" "strings" "net/http" "io" ) func main() { url := "https://api-sandbox.payabli.com/api/PayoutSubscription" payload := strings.NewReader("{\n \"entryPoint\": \"d193cf9a46\",\n \"paymentMethod\": {\n \"method\": \"vcard\"\n },\n \"vendorData\": {\n \"vendorId\": 1501\n },\n \"paymentDetails\": {\n \"totalAmount\": 250,\n \"serviceFee\": 0\n },\n \"billData\": [\n {\n \"dueDate\": \"2025-09-01\",\n \"invoiceDate\": \"2025-08-15\",\n \"invoiceNumber\": \"INV-7820\",\n \"netAmount\": \"250\"\n }\n ],\n \"scheduleDetails\": {\n \"startDate\": \"09/01/2025\",\n \"endDate\": \"untilcancelled\",\n \"frequency\": \"weekly\"\n }\n}") req, _ := http.NewRequest("POST", url, payload) req.Header.Add("requestToken", "") req.Header.Add("Content-Type", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby VcardPayoutSubscription require 'uri' require 'net/http' url = URI("https://api-sandbox.payabli.com/api/PayoutSubscription") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Post.new(url) request["requestToken"] = '' request["Content-Type"] = 'application/json' request.body = "{\n \"entryPoint\": \"d193cf9a46\",\n \"paymentMethod\": {\n \"method\": \"vcard\"\n },\n \"vendorData\": {\n \"vendorId\": 1501\n },\n \"paymentDetails\": {\n \"totalAmount\": 250,\n \"serviceFee\": 0\n },\n \"billData\": [\n {\n \"dueDate\": \"2025-09-01\",\n \"invoiceDate\": \"2025-08-15\",\n \"invoiceNumber\": \"INV-7820\",\n \"netAmount\": \"250\"\n }\n ],\n \"scheduleDetails\": {\n \"startDate\": \"09/01/2025\",\n \"endDate\": \"untilcancelled\",\n \"frequency\": \"weekly\"\n }\n}" response = http.request(request) puts response.read_body ``` ```java VcardPayoutSubscription import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.post("https://api-sandbox.payabli.com/api/PayoutSubscription") .header("requestToken", "") .header("Content-Type", "application/json") .body("{\n \"entryPoint\": \"d193cf9a46\",\n \"paymentMethod\": {\n \"method\": \"vcard\"\n },\n \"vendorData\": {\n \"vendorId\": 1501\n },\n \"paymentDetails\": {\n \"totalAmount\": 250,\n \"serviceFee\": 0\n },\n \"billData\": [\n {\n \"dueDate\": \"2025-09-01\",\n \"invoiceDate\": \"2025-08-15\",\n \"invoiceNumber\": \"INV-7820\",\n \"netAmount\": \"250\"\n }\n ],\n \"scheduleDetails\": {\n \"startDate\": \"09/01/2025\",\n \"endDate\": \"untilcancelled\",\n \"frequency\": \"weekly\"\n }\n}") .asString(); ``` ```php VcardPayoutSubscription request('POST', 'https://api-sandbox.payabli.com/api/PayoutSubscription', [ 'body' => '{ "entryPoint": "d193cf9a46", "paymentMethod": { "method": "vcard" }, "vendorData": { "vendorId": 1501 }, "paymentDetails": { "totalAmount": 250, "serviceFee": 0 }, "billData": [ { "dueDate": "2025-09-01", "invoiceDate": "2025-08-15", "invoiceNumber": "INV-7820", "netAmount": "250" } ], "scheduleDetails": { "startDate": "09/01/2025", "endDate": "untilcancelled", "frequency": "weekly" } }', 'headers' => [ 'Content-Type' => 'application/json', 'requestToken' => '', ], ]); echo $response->getBody(); ``` ```swift VcardPayoutSubscription import Foundation let headers = [ "requestToken": "", "Content-Type": "application/json" ] let parameters = [ "entryPoint": "d193cf9a46", "paymentMethod": ["method": "vcard"], "vendorData": ["vendorId": 1501], "paymentDetails": [ "totalAmount": 250, "serviceFee": 0 ], "billData": [ [ "dueDate": "2025-09-01", "invoiceDate": "2025-08-15", "invoiceNumber": "INV-7820", "netAmount": "250" ] ], "scheduleDetails": [ "startDate": "09/01/2025", "endDate": "untilcancelled", "frequency": "weekly" ] ] as [String : Any] let postData = JSONSerialization.data(withJSONObject: parameters, options: []) let request = NSMutableURLRequest(url: NSURL(string: "https://api-sandbox.payabli.com/api/PayoutSubscription")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "POST" request.allHTTPHeaderFields = headers request.httpBody = postData as Data let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ```