Manage payout subscriptions with the API

Learn how to create, update, and delete automated recurring payouts to vendors with the Payabli API
View as MarkdownOpen in Claude
Applies to:Developers

Payout subscriptions are bill pay on autopilot. You set the vendor, amount, payment method, and frequency, and the system runs it on schedule. Supported payment methods are ACH, vCard, and check. Each payout goes through the same batching and funding flow as a manual payout.

This is useful any time you’re paying the same vendor the same amount on a regular cadence. Common examples include property management companies paying owners their rent share every month, recurring contractor payments, commissions, or regular vendor bills.

This guide covers the key operations for managing payout subscriptions through the API.

Considerations

When working with payout subscriptions, keep the following in mind:

  • Payout subscriptions are linked to a vendor. Pass a vendorId or vendorNumber in the vendorData object to associate the subscription with an existing vendor.
  • The billData array is optional. If you omit it and don’t set doNotCreateBills to true, the system creates a bill automatically.
  • The paymentMethod object supports ach, vcard, and check methods. The managed method isn’t supported for payout subscriptions.
  • Payout subscription transactions typically run between 2:30 AM and 3:30 AM Eastern time.

Create a payout subscription

Send a POST request to /api/PayoutSubscription to create a new payout subscription. See the API reference for full documentation.

Creates a recurring payout subscription using ACH bank transfer.

POST
/api/PayoutSubscription
1from payabli import payabli, BillPayOutDataRequest
2from payabli.money_out_types import AuthorizePaymentMethod, RequestOutAuthorizeVendorData
3from payabli.payout_subscription import PayoutPaymentDetail, PayoutScheduleDetail
4import datetime
5
6client = payabli(
7 api_key="YOUR_API_KEY_HERE",
8)
9
10client.payout_subscription.create_payout_subscription(
11 entry_point="d193cf9a46",
12 payment_method=AuthorizePaymentMethod(
13 method="ach",
14 ach_holder="Herman Coatings",
15 ach_routing="021000021",
16 ach_account="3453445666",
17 ach_account_type="checking",
18 ),
19 vendor_data=RequestOutAuthorizeVendorData(
20 vendor_id=1501,
21 ),
22 payment_details=PayoutPaymentDetail(
23 total_amount=500,
24 service_fee=0,
25 currency="USD",
26 ),
27 bill_data=[
28 BillPayOutDataRequest(
29 due_date=datetime.date.fromisoformat("2025-08-15"),
30 invoice_date=datetime.date.fromisoformat("2025-08-01"),
31 invoice_number="INV-5001",
32 net_amount="500",
33 )
34 ],
35 schedule_details=PayoutScheduleDetail(
36 start_date="09/01/2025",
37 end_date="09/01/2026",
38 frequency="monthly",
39 ),
40)

A successful request returns the payout subscription ID in responseData and the vendor’s ID in customerId.

Response
1{
2 "responseText": "Success",
3 "responseData": 42,
4 "isSuccess": true,
5 "customerId": 1501
6}

Pause a payout subscription

Pausing a payout subscription stops all future payouts until you unpause it. The next payment date isn’t calculated automatically while paused.

To pause a payout subscription, send a PUT request to /api/PayoutSubscription/{id} with setPause set to true. To resume, send another PUT request with setPause set to false.

PUT
/api/PayoutSubscription/:id
1from payabli import payabli
2
3client = payabli(
4 api_key="YOUR_API_KEY_HERE",
5)
6
7client.payout_subscription.update_payout_subscription(
8 id=42,
9 set_pause=True,
10)

Get payout subscription details

Send a GET request to /api/PayoutSubscription/{id} to retrieve details about a specific payout subscription.

This example gets the details for the payout subscription with ID 42.

GET
/api/PayoutSubscription/:id
1from payabli import payabli
2
3client = payabli(
4 api_key="YOUR_API_KEY_HERE",
5)
6
7client.payout_subscription.get_payout_subscription(
8 id=42,
9)

A successful request returns all available details about the payout subscription. See the API reference for a full response example.

Response
1{
2 "responseText": "Success",
3 "isSuccess": true,
4 "responseData": {
5 "startDate": "2025-09-01T00:00:00Z",
6 "endDate": "2026-09-01T00:00:00Z",
7 "nextDate": "2025-10-01T00:00:00Z",
8 "lastRun": "2025-09-01T06:00:00Z",
9 "idOutSubscription": 42,
10 "status": 1,
11 "events": [
12 {
13 "description": "TransferCreated",
14 "eventTime": "2025-09-01T06:00:00Z",
15 "extraData": {
16 "key": "value"
17 },
18 "refData": "refData",
19 "source": "api"
20 }
21 ],
22 "vendor": {
23 "Address1": "123 Ocean Drive",
24 "Address2": "Suite 400",
25 "BillingData": {
26 "id": 123456,
27 "nickname": "Main Checking Account",
28 "bankName": "Example Bank",
29 "routingAccount": "123456789",
30 "accountNumber": "9876543210",
31 "typeAccount": "Checking",
32 "bankAccountHolderName": "John Doe",
33 "bankAccountHolderType": "Business",
34 "bankAccountFunction": 2,
35 "verified": true,
36 "status": 1,
37 "services": [],
38 "default": true,
39 "accountId": "bank-account-001"
40 },
41 "City": "Bristol",
42 "Contacts": {
43 "ContactEmail": "eric@martinezcoatings.com",
44 "ContactName": "Eric Martinez",
45 "ContactPhone": "5555555555",
46 "ContactTitle": "Owner"
47 },
48 "Country": "US",
49 "CreatedDate": "2022-07-01T15:00:01Z",
50 "customerVendorAccount": "123-456",
51 "customField1": "",
52 "customField2": "",
53 "EIN": "123456789",
54 "Email": "example@email.com",
55 "externalPaypointID": "Paypoint-100",
56 "InternalReferenceId": 1000000,
57 "LastUpdated": "2022-07-01T15:00:01Z",
58 "LocationCode": "LOC123",
59 "Mcc": "7777",
60 "Name1": "Herman's Coatings",
61 "Name2": "Herman's Coating Supply Company, LLC",
62 "ParentOrgName": "PropertyManager Pro",
63 "ParentOrgId": 1000,
64 "payeeName1": "payeeName1",
65 "payeeName2": "payeeName2",
66 "PaypointDbaname": "Sunshine Gutters",
67 "PaypointEntryname": "d193cf9a46",
68 "PaypointLegalname": "Sunshine Services, LLC",
69 "Phone": "2125551234",
70 "remitAddress1": "123 Walnut Street",
71 "remitAddress2": "Suite 900",
72 "remitCity": "Miami",
73 "remitCountry": "US",
74 "remitState": "FL",
75 "remitZip": "31113",
76 "State": "GA",
77 "StoredMethods": [],
78 "Summary": {
79 "ActiveBills": 2,
80 "PendingBills": 4,
81 "InTransitBills": 3,
82 "PaidBills": 18,
83 "OverdueBills": 1,
84 "ApprovedBills": 5,
85 "DisapprovedBills": 1,
86 "TotalBills": 34,
87 "ActiveBillsAmount": 1250.75,
88 "PendingBillsAmount": 2890.5,
89 "InTransitBillsAmount": 1675.25,
90 "PaidBillsAmount": 15420.8,
91 "OverdueBillsAmount": 425,
92 "ApprovedBillsAmount": 3240.9,
93 "DisapprovedBillsAmount": 180,
94 "TotalBillsAmount": 25083.2
95 },
96 "VendorId": 1,
97 "VendorNumber": "1234",
98 "VendorStatus": 1,
99 "Zip": "31113"
100 },
101 "billData": [
102 {
103 "dueDate": "2025-08-15",
104 "invoiceDate": "2025-08-01",
105 "billId": 3001,
106 "invoiceNumber": "INV-5001",
107 "netAmount": "500"
108 }
109 ],
110 "externalPaypointID": "d193cf9a46-10",
111 "method": "ach",
112 "paypointId": 255,
113 "totalAmount": 500,
114 "netAmount": 500,
115 "feeAmount": 0,
116 "paymentData": {
117 "AccountType": "checking",
118 "HolderName": "Herman Coatings",
119 "Initiator": "merchant",
120 "MaskedAccount": "XXXXXX5666",
121 "paymentDetails": {
122 "totalAmount": 500,
123 "currency": "USD",
124 "serviceFee": 0
125 },
126 "Sequence": "subsequent",
127 "StoredMethodUsageType": "recurring"
128 },
129 "frequency": "monthly",
130 "totalCycles": 12,
131 "leftCycles": 11,
132 "entrypageId": 0,
133 "untilCancelled": false,
134 "lastUpdated": "2025-08-01T12:00:00Z",
135 "createdAt": "2025-08-01T12:00:00Z",
136 "paypointLegalname": "Sunshine Services, LLC",
137 "paypointDbaname": "Sunshine Gutters",
138 "paypointEntryname": "d193cf9a46",
139 "parentOrgName": "PropertyManager Pro",
140 "parentOrgId": 236,
141 "source": "api"
142 }
143}

Update a payout subscription

Send a PUT request to /api/PayoutSubscription/{id} to change an existing payout subscription’s payment details, schedule, or payment method. See the API reference for full documentation.

PUT
/api/PayoutSubscription/:id
1from payabli import payabli
2from payabli.payout_subscription import PayoutPaymentDetail, PayoutScheduleDetail
3
4client = payabli(
5 api_key="YOUR_API_KEY_HERE",
6)
7
8client.payout_subscription.update_payout_subscription(
9 id=42,
10 payment_details=PayoutPaymentDetail(
11 total_amount=750,
12 service_fee=0,
13 ),
14 schedule_details=PayoutScheduleDetail(
15 start_date="01/01/2026",
16 end_date="12/31/2026",
17 frequency="monthly",
18 ),
19)

A successful request returns the payout subscription ID in responseData and the vendor’s ID in customerId.

Response
1{
2 "responseText": "Success",
3 "isSuccess": true,
4 "responseData": "42",
5 "customerId": 1501
6}

Delete a payout subscription

Send a DELETE request to /api/PayoutSubscription/{id} to cancel a payout subscription and stop future payouts. See the API reference for full documentation.

This example deletes the payout subscription with the ID 42.

DELETE
/api/PayoutSubscription/:id
1from payabli import payabli
2
3client = payabli(
4 api_key="YOUR_API_KEY_HERE",
5)
6
7client.payout_subscription.delete_payout_subscription(
8 id=42,
9)

A successful deletion returns a response that includes the payout subscription ID (in responseData).

Response
1{
2 "responseText": "Success",
3 "isSuccess": true,
4 "responseData": "42"
5}

See these related resources to help you get the most out of Payabli.

Manage subscriptions with the API - Pay In subscriptions collect payments from customers, payout subscriptions send payments to vendors See Manage subscriptions with the API