Payabli moneyOut API
The moneyOut API from Payabli — 12 operation(s) for moneyout.
The moneyOut API from Payabli — 12 operation(s) for moneyout.
openapi: 3.1.0
info:
title: API reference Bill moneyOut 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: moneyOut
paths:
/MoneyOut/authorize:
post:
operationId: AuthorizeOut
summary: Authorize a payout
description: 'Authorizes a transaction for payout.
If you don''t pass `autoCapture` with a value of `true`, authorized transactions aren''t flagged for settlement until captured. Use the `referenceId` returned in the response to capture the transaction.
When `autoCapture` is `true`, Payabli captures the transaction asynchronously after authorization. The response confirms only that the transaction was authorized; it doesn''t confirm that capture succeeded. To confirm capture, listen for the [`payout_transaction_approvedcaptured`](/developers/api-reference/webhooks-overview/payout-transaction-approved-captured) webhook event.
If a velocity fraud alert is triggered, the endpoint returns a `202` response with `responseCode` `9051`, and the authorization is held for risk review rather than rejected. If a risk policy blocks the transaction, the endpoint returns a `422` response with `responseCode` `9005`, a terminal rejection.
For check payouts, Payabli validates the remit (mailing) address at authorization. If the address fails deliverability validation, the endpoint returns a `422` response and doesn''t charge the paypoint. Correct the address and re-authorize. Other payout rails (ACH, RTP, virtual card, wire, and managed payables) aren''t affected.'
tags:
- moneyOut
parameters:
- name: allowDuplicatedBills
in: query
description: When `true`, the authorization bypasses the requirement for unique bills, identified by vendor invoice number. This allows you to make more than one payout authorization for a bill, like a split payment.
required: false
schema:
type: boolean
default: false
- name: doNotCreateBills
in: query
description: When `true`, Payabli won't automatically create a bill for this payout transaction.
required: false
schema:
type: boolean
default: false
- name: forceVendorCreation
in: query
description: When `true`, the request creates a new vendor record, regardless of whether the vendor already exists.
required: false
schema:
type: boolean
default: false
- 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/AuthCapturePayoutResponse'
'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'
'422':
description: 'Blocked by fraud control. Returned when a risk policy blocks the transaction
(response code `9005`). This is a terminal outcome — the transaction is
rejected and won''t proceed, so the body carries `isSuccess: false` and
`responseCode: 9005`.
'
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/AuthorizePayoutBody'
/MoneyOut/capture/{referenceId}:
get:
operationId: CaptureOut
summary: Capture an authorized payout transaction
description: 'Captures a single authorized payout transaction by ID. If the transaction was authorized with `autoCapture` set to `true`, you don''t need to call this endpoint to capture the transaction for processing.
If a velocity fraud alert is triggered, the endpoint returns a `202` response with `responseCode` `9051`, and the capture is held for risk review rather than rejected. If a risk policy blocks the transaction, the endpoint returns a `422` response with `responseCode` `9005`, a terminal rejection.'
tags:
- moneyOut
parameters:
- name: referenceId
in: path
description: The ID for the payout transaction.
required: true
schema:
type: string
- 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/AuthCapturePayoutResponse'
'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'
'422':
description: 'Blocked by fraud control. Returned when a risk policy blocks the transaction
(response code `9005`). This is a terminal outcome — the transaction is
rejected and won''t proceed, so the body carries `isSuccess: false` and
`responseCode: 9005`.
'
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'
/MoneyOut/captureAll:
post:
operationId: CaptureAllOut
summary: Capture a list of authorized payout transactions
description: Captures an array of authorized payout transactions for settlement. The maximum number of transactions that can be captured in a single request is 500.
tags:
- moneyOut
parameters:
- 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/CaptureAllOutResponse'
'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:
type: array
items:
type: string
/MoneyOut/cancel/{referenceId}:
delete:
operationId: CancelOutDelete
summary: Cancel a payout transaction
description: Cancel a payout transaction by ID.
tags:
- moneyOut
parameters:
- name: referenceId
in: path
description: The ID for the payout transaction.
required: true
schema:
type: string
- 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/PayabliApiResponse0000'
'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'
get:
operationId: CancelOutGet
summary: Cancel a payout transaction
description: Cancel a payout transaction by ID.
tags:
- moneyOut
parameters:
- name: referenceId
in: path
description: The ID for the payout transaction.
required: true
schema:
type: string
- 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/PayabliApiResponse0000'
'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'
/MoneyOut/cancelAll:
post:
operationId: CancelAllOut
summary: Cancel list of payout transactions
description: Cancels an array of payout transactions.
tags:
- moneyOut
parameters:
- 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/CaptureAllOutResponse'
'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:
type: array
items:
type: string
/MoneyOut/details/{transId}:
get:
operationId: PayoutDetails
summary: Get details for a processed payout transaction
description: Returns details for a processed money out transaction.
tags:
- moneyOut
parameters:
- name: transId
in: path
description: ReferenceId for the transaction (PaymentId).
required: true
schema:
type: string
- 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/BillDetailResponse'
'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'
/MoneyOut/checkimage/{assetName}:
get:
operationId: GetCheckImage
summary: Get check image
description: 'Retrieve the image of a check associated with a processed transaction.
The check image is returned in the response body as a base64-encoded string.
The check image is only available for payouts that have been processed.'
tags:
- moneyOut
parameters:
- name: assetName
in: path
description: "Name of the check asset to retrieve. This is returned as `filename` in the `CheckData` object\nin the response when you make a GET request to `/MoneyOut/details/{transId}`.\n```\n \"CheckData\": {\n \"ftype\": \"PDF\",\n \"filename\": \"check133832686289732320_01JKBNZ5P32JPTZY8XXXX000000.pdf\",\n \"furl\": \"\",\n \"fContent\": \"\"\n }\n```\n"
required: true
schema:
type: string
- 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: A base64-encoded string of the check image.
content:
application/json:
schema:
type: string
'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'
/MoneyOut/status/{transId}/{checkPaymentStatus}:
patch:
operationId: UpdateCheckPaymentStatus
summary: Update check payment status
description: 'Updates the status of a processed check payment transaction. This endpoint handles the status transition, updates related bills, creates audit events, and triggers notifications.
The transaction must meet all of the following criteria:
- **Status**: Must be in Processing or Processed status.
- **Payment method**: Must be a check payment method.
### Allowed status values
| Value | Status | Description |
|-------|--------|-------------|
| `0` | Cancelled/Voided | Cancels the check transaction. Reverts associated bills to their previous state (Approved or Active), creates "Cancelled" events, and sends a `payout_transaction_voidedcancelled` notification if the notification is enabled. |
| `5` | Paid | Marks the check transaction as paid. Updates associated bills to "Paid" status, creates "Paid" events, and sends a `payout_transaction_paid` notification if the notification is enabled. |'
tags:
- moneyOut
parameters:
- name: transId
in: path
description: The Payabli transaction ID for the check payment.
required: true
schema:
type: string
- name: checkPaymentStatus
in: path
description: The new status to apply to the check transaction. To mark a check as `Paid`, send 5. To mark a check as `Cancelled`, send 0.
required: true
schema:
$ref: '#/components/schemas/AllowedCheckPaymentStatus'
- 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/PayabliApiResponse00Responsedatanonobject'
'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'
/MoneyOut/reissue:
post:
operationId: ReissueOut
summary: Reissue a payout transaction
description: 'Reissues a payout transaction with a new payment method. This creates a new transaction linked to the original and marks the original transaction as reissued.
The original transaction must be in **Processing** or **Processed** status. The payment method in the request body is used directly. The endpoint doesn''t fall back to vendor-managed payment methods.
The new transaction goes through the standard authorize-and-capture flow automatically. Both the original and new transactions are linked through their event histories for audit purposes.'
tags:
- moneyOut
parameters:
- name: transId
in: query
description: The transaction ID of the payout to reissue.
required: true
schema:
type: string
- 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/ReissuePayoutResponse'
'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'
'403':
description: Consent error.
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/ReissuePayoutBody'
/MoneyOut/vcard/{cardToken}:
get:
operationId: VCardGet
summary: Get a virtual card
description: Retrieves vCard details for a single card in an entrypoint.
tags:
- moneyOut
parameters:
- name: cardToken
in: path
description: ID for a virtual card.
required: true
schema:
type: string
- 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/VCardGetResponse'
'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'
/MoneyOutCard/vcard/{cardToken}/renew:
put:
operationId: RenewVCard
summary: Renew a virtual card
description: 'Renews an expired or expiring virtual card by extending its expiration date to a future month.
The card must be a virtual card that hasn''t been fully used. The new expiration date must be in `MM-YYYY` or `MM/YYYY` format and no more than 2 years and 363 days in the future. The card expires on the last day of the month you specify.
On success, `referenceId` holds the renewed card''s token (the card processor may issue a new token). The response reuses the standard payout result object, so the payment-transaction fields it carries don''t apply to renewal and always return `null`.'
tags:
- moneyOut
parameters:
- name: cardToken
in: path
description: ID for the virtual card to renew.
required: true
schema:
type: string
- 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/RenewVCardResponse'
'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/RenewVCardRequest'
/vcard/send-card-link:
post:
operationId: SendVCardLink
summary: Send virtual card link
description: Sends a virtual card link via email to the vendor associated with the `transId`.
tags:
- moneyOut
parameters:
- 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/OperationResult'
'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/SendVCardLinkRequest'
components:
schemas:
RiskReason:
type: string
description: Reason for risk flagging.
title: RiskReason
IsSameDayACH:
type: boolean
description: 'When `true`, this is a same-day ACH transaction.
'
title: IsSameDayACH
ContactsField:
type: array
items:
$ref: '#/components/schemas/Contacts'
description: List of contacts.
title: ContactsField
AccountId:
type: string
description: Custom identifier for payment connector.
title: AccountId
SettlementStatusPayout:
type: string
description: 'The settlement status of the payout transaction. See
[Payout Transaction Statuses](/guides/pay-out-status-reference#payout-transaction-statuses)
for a full reference.
'
title: SettlementStatusPayout
Maskedaccount:
type: string
description: 'Masked card or bank account used in transaction. In the case of Apple
Pay, this is a masked DPAN (device primary account number).
'
title: Maskedaccount
BankName:
type: string
description: Name of bank for account.
title: BankName
PayabliErrorBodyResponseData:
type: object
properties:
explanation:
type: string
description: Human-readable explanation of what happened.
todoAction:
type: string
description: Suggested resolution.
description: Object with detailed error context.
title: PayabliErrorBodyResponseData
CvvResponseText:
type: string
description: 'Text code describing the result for CVV validation (applies only for card
transactions).
'
title: CvvResponseText
RiskFlaggedOn:
type: string
format: date-time
description: Timestamp when the transaction was flagged for risk.
title: RiskFlaggedOn
Email:
type: string
format: email
description: Email address.
title: Email
Accountexp:
type: string
description: Expiration date of card used in transaction.
title: Accountexp
MethodReferenceId:
type: string
description: 'The stored method''s identifier (sometimes referred to as ''token'') in
Payabli. When `null`, the method wasn''t created, or
# --- truncated at 32 KB (114 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/payabli/refs/heads/main/openapi/payabli-moneyout-api-openapi.yml