Zoho CRM integration that automatically creates bank accounts in CheckIssuing when Opportunities close.
When an Opportunity reaches "Closed Won" or "Payment Setup" (or when a user clicks the manual button), the Deluge script:
- Reads deal-specific fields (name, bank number, parent account address)
- Reads shared defaults from Zoho Org Variables
- Authenticates with CheckIssuing via OAuth2
- Creates a bank account via the Add Bank Account API
- Retrieves the funding source ID and logo ID via List Bank Accounts
- Stores the IDs back on the Opportunity record
- Log into your CheckIssuing client panel
- Click "API Access" in the user menu (top right)
- Create new credentials (note the API ID and API Secret)
- Create separate credentials for sandbox and production
In Zoho CRM, go to Settings > Customization > Modules > Deals > Fields and create:
| Field Name | Type | Section |
|---|---|---|
CI_Funding_Source_ID |
Single Line | CheckIssuing Integration |
CI_Logo_ID |
Single Line | CheckIssuing Integration |
Bank_Number |
Single Line | CheckIssuing Integration |
CI_Status |
Single Line | CheckIssuing Integration |
After creating, note the exact API field names from Settings > Developer Space > APIs > API Names.
In Settings > Developer Space > Organization Variables, create:
| Variable | Value |
|---|---|
CI_API_ID |
Your CheckIssuing API ID |
CI_API_Secret |
Your CheckIssuing API Secret |
CI_Base_URL |
https://websb.checkissuing.com (sandbox) or https://web.checkissuing.com (production) |
CI_Bank_Name |
Florida Capital Bank |
CI_Bank_Address |
10151 Deerwood Park Blvd, Jacksonville, FL 32256 |
CI_Fractional_Routing |
063112142 |
CI_Return_MailTo |
DisburseCloud |
CI_Return_Address |
30212 Tomas ste 355, Rancho Santa Margarita, CA 92688, USA |
CI_Void_Text |
VOID 180 DAYS AFTER ISSUE DATE |
CI_Default_Signature |
Base64-encoded signature image |
CI_Last_Check_Number |
1000000 (starting value) |
- Go to Settings > Developer Space > Functions
- Create a new function named
ci_add_account - Add parameter:
dealId(String) - Paste the contents of
src/ci_add_account.dg - Save and test
- Go to Settings > Customization > Modules > Deals > Links and Buttons
- Create button: "Create CI Account"
- Placement: View page (details page)
- Action: Function >
ci_add_account - Pass
dealId={!Deals.Deal_Id}
- Go to Settings > Automation > Workflow Rules
- New Rule for module: Deals
- Trigger: Field update > Stage
- Condition: Stage = "Closed Won" OR Stage = "Payment Setup"
- Instant action: Function >
ci_add_accountwith dealId as the Deal ID
| CheckIssuing Field | CRM Source |
|---|---|
name |
Deal Name |
name_on_checks |
Deal Name |
address_on_checks |
Parent Account billing address |
acct_num |
Bank_Number field |
| CheckIssuing Field | Value |
|---|---|
bank_name |
Florida Capital Bank |
acct_type |
CHECKING |
bank_addr |
10151 Deerwood Park Blvd, Jacksonville, FL 32256 |
fractional_routing |
063112142 |
return_mailto |
DisburseCloud |
return_address |
30212 Tomas ste 355, Rancho Santa Margarita, CA 92688, USA |
is_business |
true |
void_text |
VOID 180 DAYS AFTER ISSUE DATE |
sig |
Default signature (base64) |
starting_check_num |
Auto-incremented by 1,000,000 per account |
Check the CI_Status field on the Opportunity for error messages:
| Status | Meaning |
|---|---|
Success - Account created |
Everything worked |
Missing Deal_Name |
Opportunity has no name |
Missing Bank_Number |
Bank_Number field is empty |
Deal has no parent Account |
No Account linked to the Opportunity |
Auth failed: ... |
CheckIssuing API credentials are wrong |
Add Account failed: ... |
CheckIssuing rejected the request (check error details) |
List Accounts failed: ... |
Could not retrieve account list |
Account created but not found in list |
Account was created but name matching failed |
You can also check function execution logs in Settings > Developer Space > Functions > ci_add_account > Logs.
- Update
CI_Base_URLtohttps://web.checkissuing.com - Update
CI_API_IDandCI_API_Secretwith production credentials - Verify with a test Opportunity before going live
- The script prevents duplicate submissions by checking if
CI_Funding_Source_IDis already populated - Check numbers auto-increment by 1,000,000 per account (tracked in
CI_Last_Check_Number) - API endpoint paths (
/api/v1/...) are assumed from docs and may need adjustment during sandbox testing - The
acct_numparameter may not be explicitly documented but is needed since Plaid verification is skipped