Skip to main content
Use this endpoint to initiate an ACH payment. You can pay against an existing payable or send a payment directly to a contact by providing a contactId. Payments support optional scheduling, partial amounts, and accelerated clearing speeds.
Exactly one of payableId or contactId is required per request. Providing both or neither will result in a validation error.

Base URL

Authentication

All requests must include a Bearer token in the Authorization header.

Request Body

payableId
string
The ID of an existing payable to pay. Use this when paying against a specific invoice or bill. Mutually exclusive with contactId — provide exactly one.
contactId
string
The ID of a contact to pay directly, without a pre-existing payable. A payable is automatically generated. Mutually exclusive with payableId — provide exactly one.
amountCents
number
Payment amount in US cents. Must be at least 1.
  • When using contactId: required.
  • When using payableId: optional. Defaults to the remaining unpaid balance on the payable. You may specify a partial amount to make a partial payment.
bankAccountId
string
required
The ID of the payer bank account to debit. Retrieve available bank account IDs from GET /v1/bank-accounts.
description
string
A memo or note to attach to the auto-generated payable. Applies only when using contactId mode. Ignored when payableId is provided.
customNumber
string
A custom reference number for the auto-generated payable, up to 21 characters. Applies only when using contactId mode. Ignored when payableId is provided.
categoryId
string
The ID of a category to assign to the auto-generated line item. Applies only when using contactId mode. Ignored when payableId is provided.
clearing
string
Requested ACH clearing speed. Accepted values: STANDARD, NEXT_AVAILABLE.
The NEXT_AVAILABLE clearing speed requires that accelerated clearing be enabled on your account. Contact your Cleo Pay account manager to enable this feature.
scheduledAt
string (date)
A future date on which to execute the payment, formatted as YYYY-MM-DD. The payment will be initiated at 9:00 AM New York time on that date.Constraints:
  • Must be at least tomorrow’s date (no same-day scheduling).
  • Not supported for payments that are in held status.
The description, customNumber, and categoryId fields are only meaningful when initiating a payment with contactId. They configure the payable that Cleo Pay automatically creates on your behalf. These fields have no effect when payableId is supplied.

Response

Returns a CreatePaymentResponse object with HTTP status 201 Created.
payableId
string
The ID of the payable associated with this payment. When using contactId mode, this is the ID of the automatically generated payable.
payments
Payment[]
Array of one or more Payment objects created for this request. The amountCents values across all objects sum to the total requested amount.
Large payment amounts may be automatically split into multiple Payment objects by Cleo Pay. Always treat the payments array as potentially containing more than one entry.

Example Requests

Example Response

201
For very large payment amounts, Cleo Pay may split the transaction into multiple Payment objects. The amountCents values across all entries in the payments array will always sum to the total amount you requested.
To check available bank account IDs for bankAccountId, call GET /v1/bank-accounts before initiating a payment.