Skip to main content
Payments in Cleo Pay execute as ACH (Automated Clearing House) transfers — the standard electronic funds transfer network used for US bank-to-bank payments. When you create a payment, Cleo Pay initiates a debit from your verified bank account and a credit to the recipient’s account. You can send a payment against a specific payable (invoice) or directly to a contact without referencing an invoice.

Two payment modes

Every payment must reference exactly one of the following — but not both:
You cannot specify both payableId and contactId in the same request. Choose the mode that matches your workflow.

Payment status lifecycle

The standard happy path is: pendingscheduledprocessingcompleted
If a contact doesn’t have a bank account on file when you send a payment, the payment enters held status rather than failing immediately. As soon as the contact’s bank account is added, the payment proceeds automatically.

Clearing speeds

The clearing field controls how quickly the ACH transfer is processed.

Scheduling payments

By default, payments are processed as soon as possible. To send a payment on a future date, include the scheduledAt field:
  • Format: YYYY-MM-DD
  • Minimum value: Tomorrow’s date (same-day scheduling is not supported)
  • Execution time: 9:00 AM New York time on the scheduled date
  • Constraint: Must fall within a valid business window
Scheduling payments for a specific date is useful for aligning disbursements with your payroll cycle, invoice due dates, or cash flow planning.

Partial payments

When paying a payable (payableId), the amountCents field is optional:
  • If omitted: Cleo Pay defaults to the payable’s full remainingAmountCents, paying the invoice in full.
  • If specified: Only that amount is paid, and the payable’s remainingAmountCents is reduced accordingly. You can send additional payments later until the balance reaches zero.
When paying a contact directly (contactId), amountCents is required.

Large payment splitting

For very large payment amounts, Cleo Pay may automatically split the transfer into multiple Payment objects whose amounts sum to your requested total. This is handled transparently — your single API request may result in an array of payments in the response. Always iterate over the payments array in the response rather than assuming a single payment object.

Example: pay a payable

Example: pay a contact directly

CreatePaymentResponse

The response always includes a payableId (if applicable) and a payments array. Even when a single payment is created, the result is wrapped in this array.
In this example, a 1,750.00paymentwassplitintotwotransfersof1,750.00 payment was split into two transfers of 1,000.00 and $750.00, both scheduled for processing.

Next steps

  • Payables — understand how payment status maps back to invoice tracking.
  • Contacts — ensure your contact is paymentReady before initiating a payment.
  • Bank Accounts — verify your funding account before sending funds.