You need at least one verified bank account before you can initiate payments. Cleo Pay supports two connection methods: instant connection via Plaid or manual entry with micro-deposit verification.
List your bank accounts
To view all bank accounts currently connected to your business:
curl https://api.cleo-pay.com/api/bank-accounts \
-H "Authorization: Bearer YOUR_TOKEN"
Connect a bank account
Plaid (instant)
Manual ACH
Plaid connects your bank account instantly using your online banking credentials. No waiting for deposits.Get a Plaid Link token
Request a short-lived link token. Your frontend uses this token to open the Plaid Link UI.curl https://api.cleo-pay.com/api/bank-accounts/plaid-link-token \
-H "Authorization: Bearer YOUR_TOKEN"
The response includes a linkToken string. Pass this to the Plaid Link SDK in your application. Open Plaid Link
Initialize the Plaid Link widget with the token from the previous step. When the user completes the Plaid flow, Plaid returns a publicToken and an accountId.Integrating the Plaid Link UI is handled client-side using Plaid’s JavaScript SDK. See Plaid’s documentation for implementation details. Submit the Plaid token to Cleo Pay
Exchange the Plaid publicToken and accountId to finalize the connection:curl -X POST https://api.cleo-pay.com/api/bank-accounts/connect-plaid \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"publicToken": "public-sandbox-abc123",
"accountId": "plaid_account_xyz"
}'
On success, the response includes a fundingSourceId for the connected account. The account is immediately available for payments. Manual connection requires you to enter your routing and account numbers. Cleo Pay sends two small deposits to your account, which you verify to confirm ownership.Enter your bank details
Submit your routing number, account number, and account type:curl -X POST https://api.cleo-pay.com/api/bank-accounts/connect-manually \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"routingNumber": "021000021",
"accountNumber": "1234567890",
"accountType": "checking",
"name": "Business Checking"
}'
The response includes a fundingSourceId. The account status is unverified until you complete the micro-deposit step. Wait for micro-deposits
Cleo Pay sends two small deposits (each less than $0.10) to your bank account. These typically arrive within 1-2 business days.Check your bank statement for two small deposits from “Cleo Pay”. The exact amounts vary per verification attempt.
Verify the micro-deposit amounts
Once you see the deposits, submit the exact amounts to verify ownership:curl -X POST https://api.cleo-pay.com/api/bank-accounts/fs_abc123/verify-micro-deposits \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"amount1": 0.07,
"amount2": 0.03
}'
A successful response confirms the account is now verified and ready for payments.You have a limited number of attempts to verify the micro-deposit amounts. If you exceed the limit, you need to remove the account and reconnect.
Set a default bank account
Your default bank account is used automatically when initiating payments unless you specify a different one. Set a default with:
curl -X PATCH https://api.cleo-pay.com/api/bank-accounts/fs_abc123/set-as-default \
-H "Authorization: Bearer YOUR_TOKEN"
Re-authenticate an expired connection
Plaid connections can expire if you change your banking password or revoke access. When this happens, your account status changes to needs_reauth. Re-authenticate using a fresh Plaid Link session:
Get a re-auth link token
curl https://api.cleo-pay.com/api/bank-accounts/fs_abc123/reauth-token \
-H "Authorization: Bearer YOUR_TOKEN"
Complete the Plaid re-auth flow
Use the returned token to open Plaid Link in update mode. After the user completes the flow, submit the new public token:curl -X POST https://api.cleo-pay.com/api/bank-accounts/fs_abc123/reauth \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"publicToken": "public-sandbox-refreshed456"
}'
Remove a bank account
To disconnect a bank account from your business:
curl -X DELETE https://api.cleo-pay.com/api/bank-accounts/fs_abc123 \
-H "Authorization: Bearer YOUR_TOKEN"
You cannot remove a bank account that is set as the default if other accounts are connected. Set a different account as default first.