Skip to main content
A payment link is a unique URL tied to a specific invoice. When you enable a payment link for an invoice (called a payable in the API), anyone with the link can view the invoice details and pay via ACH — no Cleo Pay account required. Payment links are useful when your vendor is not connected to your business on Cleo Pay, or when you want to offer a self-serve payment experience without requiring login.
1

Enable the payment link

Call the enable endpoint for the payable you want to share. This generates a unique nanoId token and activates the link.
curl --request POST \
  --url https://api.cleo-pay.com/api/businesses/{businessId}/payables/{payableId}/payment-link/enable \
  --header 'Authorization: Bearer YOUR_TOKEN'
The response includes the payment link URL and the nanoId token that identifies this link publicly.
2

Check link status (optional)

Retrieve the current status of a payment link at any time to confirm it is enabled and to get the link URL.
curl --request GET \
  --url https://api.cleo-pay.com/api/businesses/{businessId}/payables/{payableId}/payment-link \
  --header 'Authorization: Bearer YOUR_TOKEN'
3

Send the link by email

Cleo Pay can send the payment link directly to a contact on your behalf. Pass the recipient’s email address in the request body.
curl --request POST \
  --url https://api.cleo-pay.com/api/businesses/{businessId}/payables/{payableId}/payment-link/send \
  --header 'Authorization: Bearer YOUR_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
    "email": "vendor@example.com"
  }'
The email includes the payment link and a summary of the invoice amount and due date.

Payer experience

When a vendor opens the payment link, they go through the following flow without needing a Cleo Pay account:
  1. Validate the link — The public endpoint GET /api/public/invoices/{nanoId}/validate confirms the link is active and has not been disabled.
  2. View invoice details — The vendor sees full invoice details retrieved from GET /api/public/invoices/{nanoId}/invoice, including line items, total amount, and due date. They can also download a PDF copy via GET /api/public/invoices/{nanoId}/pdf.
  3. Connect a bank account — The vendor connects their bank account using Plaid Link or, if they already have a verified Cleo Pay account, they can use an existing bank account via the authenticated payment endpoint.
  4. Pay — The payment is initiated via POST /api/public/invoices/{nanoId}/pay. Cleo Pay processes the ACH transfer and updates the payable status.
Payment links use ACH transfers. Funds typically settle within 1–3 business days depending on the clearing speed selected.
If you want to prevent further payments on a link — for example, if the invoice is already paid or cancelled — disable it:
curl --request POST \
  --url https://api.cleo-pay.com/api/businesses/{businessId}/payables/{payableId}/payment-link/disable \
  --header 'Authorization: Bearer YOUR_TOKEN'
Once disabled, the link URL returns an error when a payer tries to load it. You can re-enable the link at any time by calling the enable endpoint again.
Disabling a payment link does not cancel any payment already in progress. If a payer initiated payment before the link was disabled, that transaction will still complete.

API reference

MethodEndpointDescription
GET/api/businesses/{businessId}/payables/{payableId}/payment-linkGet payment link status
POST/api/businesses/{businessId}/payables/{payableId}/payment-link/enableEnable a payment link
POST/api/businesses/{businessId}/payables/{payableId}/payment-link/disableDisable a payment link
POST/api/businesses/{businessId}/payables/{payableId}/payment-link/sendSend link by email
GET/api/public/invoices/{nanoId}/validateValidate a link (public)
GET/api/public/invoices/{nanoId}/invoiceGet invoice details (public)
POST/api/public/invoices/{nanoId}/payPay via ACH (public)
GET/api/public/invoices/{nanoId}/pdfDownload invoice PDF (public)