Pay Out cookbook
Use these recipes to get started with Pay Out features and functions. See Pay Out overview for more.
New to the API? Start with the authentication guide on the cookbooks home.
Recipe: Make your first payout
/// OverviewThis complete end-to-end workflow walks through how to send a payment to a vendor using ACH.
/// Step 1: Create a vendor
First, make sure that you have a vendor record. If you already have a vendorNumber, you can skip to step 2.
To create a vendor, send a POST request to /api/Vendor/single/{entry}.
You need the vendorNumber you set for the vendor in the next step.
See Create vendor for the full API reference.
/// Step 2: Create a bill for the vendor
Send a POST request to /api/Bill/single/{entry} to add a bill that represents the invoice you need to pay. This is optional but strongly recommended for tracking.
The billId is returned in responseData. Copy this to use in the next step.
See Create bill for the full API reference.
/// Step 3: Authorize the payout transaction
Authorizing a payout creates the transaction, which is captured for processing later.
Include autoCapture: true in the request body to automatically capture the payout transaction after authorization.
To authorize a payout, send a POST request to /api/MoneyOut/authorize.
The response includes a referenceId (for example, "129-001") that you need to capture the payout for processing in the next step.
See Authorize a transaction for payout for the full API reference.
/// Step 4: Capture the payout for settlement
Capturing an authorized payout adds it to a batch for processing.
If you didn’t set the autoCapture field to true in the payout authorization request, you need to capture the authorization manually.
If you set autoCapture to true, skip this step.
To capture the payout, send a GET request to /api/MoneyOut/capture/{referenceId}.
The payout is now captured and will process with the next batch at 5 PM ET.
See Capture an authorized payout transaction for the full API reference.
/// Step 5: Monitor transaction status
Check the transaction status as it progresses through the payment lifecycle.
To get the transaction details, send a GET request to /api/MoneyOut/details/{referenceId}.
Watch for the status to progress: 1 (Captured) → 2 (Processing) → 3 (Processed) → 5 (Paid).
- Learn more about Pay Out statuses.
- See Get details for a processed payout transaction for the full API reference.
/// What’s next
Congratulations! You just processed your first payout. Next, get to know payables and learn more about managing payouts.
Recipe: Create a vendor
/// OverviewAdd a new vendor record with bank account details for ACH payments.
/// Prerequisites
Before you start, gather the following information. Payabli supports US and Canadian vendors only.
- Vendor business information: name, email, phone, and address
- A
vendorNumberto identify the vendor in your system - Bank account details for ACH payments: routing number, account number, account type, and account holder name
Including bank account details in billingData is not supported if you use managed payouts.
/// Step 1: Create the vendor
Send a POST request to /api/Vendor/single/{entry} to create the vendor. The entry parameter is your entrypoint identifier.
The response returns the Payabli-generated vendorId in responseData.
See Create vendor for the full API reference.
Recipe: Create ACH payout
/// OverviewSend a payment to a vendor via ACH bank transfer with full transaction lifecycle. This recipe is for on-demand payouts and is not supported with managed payouts.
/// Prerequisites
Before you start, make sure you have the following:
- A
vendorNumberfor the vendor you’re paying - The vendor’s ACH information: account holder name, routing number, account number, and account type (checking or savings)
- A
billIdif you’re paying against a bill (recommended)
/// Step 1: Authorize the payout
Authorize the payout. This queues the transaction but doesn’t process it until captured.
To authorize a payout, send a POST request to /api/MoneyOut/authorize.
The response includes a referenceId that you need to cancel a transaction or check its details.
See Authorize a transaction for payout for the full API reference.
/// Step 2: Monitor transaction status
Check the transaction details to monitor the payout through its lifecycle: Captured → Processing → Processed → Paid.
To get the transaction details, send a GET request to /api/MoneyOut/details/{referenceId}.
See Get details for a processed payout transaction for the full API reference.
/// Step 3: (Optional) Cancel if needed
You can cancel authorized or captured transactions before the batch closes at 5 PM ET.
To cancel a payout, send a DELETE request to /api/MoneyOut/cancel/{referenceId}.
See Cancel a payout transaction for the full API reference.
Recipe: Create vCard payout
/// OverviewThis recipe walks through issuing a single-use virtual card to a vendor and sending the card link via email. This recipe is for on-demand payouts and is not supported with managed payouts.
/// Prerequisites
Before you start, make sure you have the following:
- A
vendorNumberfor the vendor you’re paying - The vendor’s email address to send the card link to
/// Step 1: Create the virtual card payout
Authorize a payout with method: "vcard". This creates a single-use virtual card for the vendor.
To authorize the payout, send a POST request to /api/MoneyOut/authorize.
The response includes a referenceId that you can use to cancel the transaction or check its details.
See Authorize a transaction for payout for the full API reference.
/// Step 2: Send the card link
Send the vendor an email with a secure link to view their virtual card details.
To send the card link, send a POST request to /api/vcard/send-card-link.
See Send vCard link for the full API reference.
/// Step 3: Monitor for payment
When the vendor uses the vCard, the transaction status changes to Paid. vCards remain open for 180 days if not used.
Learn more about Pay Out statuses.
Recipe: Create check payout
/// OverviewSend a physical check payment to a vendor with the authorize-and-capture workflow. This recipe is for on-demand payouts and isn’t supported with managed payouts.
/// Prerequisites
Before you start, make sure you have the following:
- A
vendorNumberfor the vendor you’re paying - The vendor record must have
payeeName1set — this is the name printed on the check - A
billIdif you’re paying against a bill (strongly recommended)
/// Step 1: Authorize the payout
Authorize a payout with method: "check". This queues the transaction but doesn’t process it until it’s captured.
To authorize a payout, send a POST request to /api/MoneyOut/authorize.
The checkNumber field is optional. If you don’t include one, Payabli automatically manages check numbering and sequencing.
The response includes a referenceId that you need to cancel the transaction or check its details.
See Authorize a transaction for payout for the full API reference.
/// Step 2: Monitor transaction status
Check the transaction details to monitor the payout through its lifecycle: Captured → Processing → Processed → Paid.
To get the transaction details, send a GET request to /api/MoneyOut/details/{referenceId}.
See Get details for a processed payout transaction for the full API reference.
/// Step 3: (Optional) Cancel if needed
You can cancel authorized or captured transactions before the batch closes at 5 PM ET. Once the status changes to Processed, you can’t cancel the transaction.
To cancel a payout, send a DELETE request to /api/MoneyOut/cancel/{referenceId}.
See Cancel a payout transaction for the full API reference.
/// What’s next
You’ve created a physical check payout. Learn about retrieving check images for record-keeping, or set up Positive Pay for fraud prevention.
Recipe: Approve and pay a bill
/// OverviewRoute a bill through approval and make a payout. This recipe covers the approval workflow from submission to payout.
/// Prerequisites
Before you start, make sure you have the following:
- An existing bill with its
idBill— see Create bill or the manage bills guide - The vendor’s payment information (ACH details or stored method)
- Approver email addresses for your approval workflow
/// Step 1: Send the bill for approval
Submit the bill to one or more approvers by passing an array of their email addresses. The bill status changes to “Sent to Approval”.
Send a POST request to /api/Bill/approval/{idBill}.
See Send bill for approval for the full API reference.
/// Step 2: Approve or reject the bill
Approvers can approve or reject the bill through the Payabli Portal or through the API. To approve or reject programmatically, use true to approve or false to reject.
Send a GET request to /api/Bill/approval/{idBill}/{approved}.
See Approve bill for the full API reference.
/// Step 3: Verify the bill status
Confirm the bill is approved and ready for payout.
Send a GET request to /api/Bill/{idBill}.
Check the Status field in the response. A status of 1 (Active) or 20 (Approved) means the bill is ready for payout.
See Get bill for the full API reference.
/// Step 4: Authorize the payout
Create a payout authorization that references the approved bill.
Send a POST request to /api/MoneyOut/authorize.
The response includes a referenceId that you need to capture the payout.
See Authorize payout for the full API reference.
/// Step 5: Capture the payout
Capture the authorized transaction to process the payment.
Send a GET request to /api/MoneyOut/capture/{referenceId}.
See Capture payout for the full API reference.
/// What’s next
You’ve approved and paid a bill. Learn more about managing bills with the API and explore the ACH payout recipe for more payout options.
Recipe: Send a vendor payment link
/// OverviewGenerate a payment link for a bill and send it to a vendor via email. The vendor selects their preferred payout method (ACH, virtual card, or check) on a secure, hosted page. When they complete it, Payabli automatically authorizes and captures the payout.
/// Prerequisites
Before you start, make sure you have the following:
- A vendor associated with the bill. If you haven’t created one yet, see Manage vendors.
- A
billIdfor an existing bill. If you haven’t created one yet, see Manage bills. - The vendor’s email address
- Your paypoint’s available payout methods (ACH, virtual card, check)
/// Step 1: Generate the payment link
Create a payment link tied to the bill. Don’t include the mail2 query parameter — you’ll send the link in the next step instead.
Send a POST request to /api/PaymentLink/bill/{billId}.
The response includes the payment link ID. Save this — you’ll need it to send the link in the next step.
See Generate payment link from bill for the full API reference.
/// Step 2: Send the payment link
Send the link to the vendor’s email. To send to additional recipients beyond the vendor’s email on file, add their addresses to the mail2 query parameter, separated by semicolons.
Send a GET request to /api/PaymentLink/send/{payLinkId}.
See Send payment link for the full API reference.
/// What’s next
Congratulations! You just sent a vendor payment link. The vendor’s payment method preference is stored automatically for future payouts. Learn more about managing vendor payment links and managing payouts.
Recipe: Reissue a payout
/// OverviewReissue a payout transaction with a different payment method when the original can’t be completed. This recipe covers reissuing as ACH, check, or virtual card. Reissuing is for on-demand payouts only — it isn’t supported with managed payouts.
/// Prerequisites
Before you start, make sure you have the following:
- The
transIdof the original payout transaction - The original transaction must be in Processing or Processed status
- The new payment method details (ACH bank account details, or just the method type for check or virtual card)
- If the original was a check, contact Payabli support to stop the original check before reissuing
/// Step 1: Reissue the payout
Send a POST request to /api/MoneyOut/reissue with the original transaction ID as a query parameter and the new payment method in the request body.
The example below reissues a payout as ACH. For check, set method to "check" (no additional fields needed — the check is mailed to the remittance address from the original transaction). For virtual card, set method to "vcard".
A successful response returns the new transaction ID and a link to the original transaction.
The new transaction goes through the standard authorize-and-capture flow automatically. Check the isSuccess field in the response — an HTTP 200 doesn’t always mean the reissue succeeded.
See Reissue payout for the full API reference.
/// Step 2: Verify the reissue
Check the new transaction’s details to confirm it was created and monitor its progress through the lifecycle.
Send a GET request to /api/MoneyOut/details/{transId}, using the transactionId from the reissue response.
The response includes an Events array that links back to the original transaction for audit purposes.
See Get details for a processed payout transaction for the full API reference.
/// What’s next
You’ve reissued a payout with a new payment method. Learn more about reissue rules and error handling and the payout transaction lifecycle.
Recipe: Cancel a payout
/// OverviewCancel an authorized or captured payout before it processes. Pay Out transactions don’t support refunds, so once a payout reaches processed, you can’t reverse it. If you need to resend the payout with a different payment method, reissue it instead.
/// Prerequisites
Before you start, make sure you have the following:
- The
referenceIdof the payout transaction you want to cancel. - Confirmation that the transaction is still authorized or captured. You can’t cancel a payout that has already processed.
You can cancel an authorized payout at any time. After a payout is captured, you have a small window to cancel it before the batch closes.
/// Cancel the payout
Send a DELETE request to /api/MoneyOut/cancel/{referenceId}.
A successful request returns a 200 response with the canceled transaction’s responseData.ReferenceId.
To cancel several payouts in one request, send a POST request to /api/MoneyOut/cancelAll with an array of reference IDs instead.
See Cancel payout for the full API reference.
/// What’s next
You just canceled a payout. Learn how to reissue a payout if you need to resend the payment, or review the full payout lifecycle to understand when cancellation is available.
Recipe: Create a managed payout
/// OverviewCreate a payout where Payabli’s vendor enablement team contacts the vendor and determines the best payment method. For more details on the enablement process, see Managed payables overview.
/// Prerequisites
Before you start, make sure you have the following:
- A
vendorNumberfor the vendor you’re paying - The vendor’s contact name, phone number, and email address on their vendor record — the vendor enablement team needs these to reach the vendor
- A remittance address for the vendor, in case the payment falls back to a physical check
/// Step 1: Create a bill
Add a bill that represents the invoice you need to pay. This step is optional but strongly recommended for tracking. If you already have a billId, skip to step 2.
To create a bill, send a POST request to /api/Bill/single/{entry}.
The billId is returned in responseData. Copy this to use in the next step.
See Create bill for the full API reference.
/// Step 2: Authorize the payout
Authorize the payout with method: "managed". This tells Payabli to handle vendor enablement and payment method selection automatically.
To authorize a payout, send a POST request to /api/MoneyOut/authorize.
The response includes a referenceId that you need to check the transaction’s details.
See Authorize payout for the full API reference.
/// Step 3: Monitor transaction status
Check the transaction status as it progresses through the managed payables lifecycle.
To get the transaction details, send a GET request to /api/MoneyOut/details/{referenceId}.
Watch for the status to progress: 1 (Captured) → 2 (Processing) → 3 (Processed) → 5 (Paid).
- Learn more about Pay Out statuses.
- See Get payout details for the full API reference.
/// What’s next
You just created a managed payout. Next, learn more about the vendor enablement process and how to manage payouts.
Recipe: Create a ghost card
/// OverviewThis recipe walks through creating a ghost card, a multi-use virtual debit card issued to a vendor for recurring or discretionary spend. Unlike single-use virtual cards, ghost cards aren’t tied to a specific payout and can be reused within configurable spending limits.
/// Prerequisites
Before you start, make sure you have the following:
- A
vendorIdfor the vendor receiving the card. The vendor must belong to the paypoint and have an active status. Only one ghost card can exist per vendor per paypoint. - An
expenseLimitvalue that doesn’t exceed the paypoint’s configured payout credit limit.
/// Step 1: Create the ghost card
Send a POST request to /api/MoneyOutCard/GhostCard/{entry} with the vendor ID and spending controls. Most fields are required. Optional fields are expirationDate, mcc, tcc, misc1, and misc2.
The response includes a ReferenceId in responseData. This is the card token. Store it to reference the card in subsequent operations.
See Create ghost card for the full API reference.
/// Step 2: (Optional) Update the card status
If you need to suspend or cancel the card, send a PATCH request to /api/MoneyOutCard/card/{entry} with the card token and the new status.
Valid status transitions:
Activecan change toInactive,Cancelled, orExpiredInactivecan change toActiveExpiredcan change toActive(renews the card)Cancelledis terminal and can’t be changed
See Update card status for the full API reference.
/// What’s next
You’ve created a ghost card with spending controls. Learn more about managing ghost cards and the Pay Out overview.