Connectors

Connectors is /app/connectors. Open it from Go to → Admin → Connectors. Only an admin can open it.

Connectors bring bills in or push outcomes to an accounting system. Secrets for mailbox passwords, Odoo API keys, and OAuth tokens are stored encrypted.

Mailbox

Connectors stores IMAP settings: host, user, app password, port, folder, and TLS. The password is optional on a later save when one is already on file. The worker polls connected mailboxes. POST /api/ingest/mailbox accepts an inbound webhook when MAILBOX_INBOUND_SECRET matches.

The organization ingest address is shown on the connector screen when MAILBOX_INGEST_DOMAIN is set.

SFTP

Set SFTP_HOST, SFTP_PORT, SFTP_USER, SFTP_PASSWORD, and SFTP_REMOTE_PATH. The worker pulls the remote drop and ingests files from the local drop directory.

Accounting

OAuth connectors:

SystemEnvironment
XeroXERO_CLIENT_ID, XERO_CLIENT_SECRET, XERO_REDIRECT_URI
QuickBooks OnlineQBO_CLIENT_ID, QBO_CLIENT_SECRET, QBO_REDIRECT_URI
SageSAGE_CLIENT_ID, SAGE_CLIENT_SECRET, SAGE_REDIRECT_URI
Zoho BooksZOHO_CLIENT_ID, ZOHO_CLIENT_SECRET, ZOHO_REDIRECT_URI, ZOHO_ORGANIZATION_ID

Start URLs are /api/connectors/xero/start and /api/connectors/accounting/{provider}/start. Leave QBO_DEMO_SYNC, SAGE_DEMO_SYNC, and ZOHO_DEMO_SYNC unset in production.

Odoo

Connectors stores an Odoo API key (encrypted), optional user email, company, and bank journal. Connect and Sync now pull every open vendor bill. The worker repeats that pull every minute, so a posted bill appears in Inbox without clicking Sync. Customer invoices (INV/…) are not bills to pay and are not pulled. After Custara pays (Arc testnet USDC), the payment is registered on that Odoo bill and retried if Odoo was down. Failed write-backs appear on this page. Disconnect clears the key. Details: ERP adapters. Optional Odoo Apps module.

ERP push

SAP and Dynamics, or an Odoo addon that posts itself, use POST /api/v1/erp/ingest. Field lists are in ERP adapters. An ERP that already emits Custara's document shape calls POST /api/v1/invoices.

WhatsApp

WHATSAPP_TOKEN, WHATSAPP_PHONE_NUMBER_ID, WHATSAPP_VERIFY_TOKEN, WHATSAPP_APP_SECRET, and WHATSAPP_DEFAULT_ORG_ID enable the Cloud API webhook at /api/webhooks/whatsapp. Media and text are ingested into the default organization.

Vendor portal

A vendor invite is a tokenized link. The vendor uploads a file without a Custara login. The upload lands in the same pipeline as an inbox file.

Collections

Collections sends receivable reminders on a fixed cadence. Reminder timing depends on a customer behavior score:

  • Score 80 or higher: first reminder 7 days after due, one reminder maximum
  • Score under 40: first reminder the day after due, then every 2 days, stop after 6
  • Otherwise: the day the bill is overdue, then every 3 days

The worker job is collections-dunning.