Skip to main content
Bank accounts (funding sources) are linked to a business and used to send or receive ACH payments. You can connect accounts via Plaid (instant verification) or manually (micro-deposit verification).

List bank accounts

GET /api/bank-accounts Returns all bank accounts connected to your businesses.
curl --request GET \
  --url https://api.cleo-pay.com/api/bank-accounts \
  --header "Authorization: Bearer <token>"

GET /api/bank-accounts/plaid-link-token Returns a short-lived Plaid Link token. Pass this token to the Plaid Link SDK on the client to initiate the bank connection flow.
curl --request GET \
  --url https://api.cleo-pay.com/api/bank-accounts/plaid-link-token \
  --header "Authorization: Bearer <token>"

Connect via Plaid

POST /api/bank-accounts/connect-plaid Completes the Plaid bank connection after the user finishes the Plaid Link flow. Pass the publicToken and selected accountId returned by Plaid.

Request body

publicToken
string
required
The public token returned by Plaid Link after the user authenticates.
accountId
string
required
The Plaid account ID of the bank account the user selected.
businessId
string
required
The business to associate this bank account with.
curl --request POST \
  --url https://api.cleo-pay.com/api/bank-accounts/connect-plaid \
  --header "Authorization: Bearer <token>" \
  --header "Content-Type: application/json" \
  --data '{
    "publicToken": "public-sandbox-abc123",
    "accountId": "plaid-account-xyz",
    "businessId": "biz_abc123"
  }'

Connect manually

POST /api/bank-accounts/connect-manually Connects a bank account using routing and account numbers. Cleo Pay sends two small micro-deposits to the account, which you must verify before the account becomes active for payments.

Request body

routingNumber
string
required
9-digit ABA routing number.
accountNumber
string
required
Bank account number.
accountType
string
required
Account type. Accepted values: checking, savings.
name
string
required
A display name for this account (e.g., Business Checking).
businessId
string
required
The business to associate this bank account with.
curl --request POST \
  --url https://api.cleo-pay.com/api/bank-accounts/connect-manually \
  --header "Authorization: Bearer <token>" \
  --header "Content-Type: application/json" \
  --data '{
    "routingNumber": "021000021",
    "accountNumber": "123456789",
    "accountType": "checking",
    "name": "Business Checking",
    "businessId": "biz_abc123"
  }'
After connecting manually, you must verify the account using micro-deposits before it can be used for payments.

Verify micro-deposits

POST /api/bank-accounts/{fundingSourceId}/verify-micro-deposits Verifies a manually connected bank account by confirming the two micro-deposit amounts sent to it.

Path parameters

fundingSourceId
string
required
The unique ID of the funding source (bank account).

Request body

amount1
number
required
First micro-deposit amount in dollars (e.g., 0.03).
amount2
number
required
Second micro-deposit amount in dollars (e.g., 0.07).
curl --request POST \
  --url https://api.cleo-pay.com/api/bank-accounts/fs_xyz789/verify-micro-deposits \
  --header "Authorization: Bearer <token>" \
  --header "Content-Type: application/json" \
  --data '{
    "amount1": 0.03,
    "amount2": 0.07
  }'

Set as default

PATCH /api/bank-accounts/{fundingSourceId}/set-as-default Sets the specified bank account as the default funding source for the business. The default account is pre-selected when initiating payments.

Path parameters

fundingSourceId
string
required
The unique ID of the funding source to set as default.
curl --request PATCH \
  --url https://api.cleo-pay.com/api/bank-accounts/fs_xyz789/set-as-default \
  --header "Authorization: Bearer <token>"

Remove bank account

DELETE /api/bank-accounts/{fundingSourceId} Removes a bank account from Cleo Pay. You cannot remove an account with pending transactions.

Path parameters

fundingSourceId
string
required
The unique ID of the funding source to remove.
curl --request DELETE \
  --url https://api.cleo-pay.com/api/bank-accounts/fs_xyz789 \
  --header "Authorization: Bearer <token>"