/dashboard/commerce/payments/, with processor connections stored in crm_payment_integrations.
Supported processors
- Stripe (recommended)
The default for most accounts. Connected via OAuth — no key copying.
- Cards — All major networks, Apple Pay, Google Pay
- ACH — US bank-account debits (with verification)
- Saved methods — Stored as Stripe Customer + PaymentMethod
- Per-transaction fees — Stripe’s standard rates
- Best for — Most B2B services, especially if you also use Stripe elsewhere
You can only have one active processor at a time per account. If you switch processors mid-stream, existing saved payment methods don’t migrate — clients will need to add their cards again on the new processor.
Connecting Stripe
Authorize via Stripe OAuth
You’re redirected to Stripe’s hosted OAuth page. Sign in to your Stripe account and authorize Hiveku to charge customers on your behalf.
Pick test or live mode
Stripe accounts have separate test and live environments. Pick which mode this connection is for. Most accounts run live in production with a separate test account for staging.
Connecting Authorize.Net
Get your credentials
From your Authorize.Net merchant account, get the API Login ID and Transaction Key. For webhooks, you’ll also need a Signature Key.
Enter credentials
Paste the API Login ID, Transaction Key, and Signature Key. Pick sandbox or production.
Test a sandbox transaction
Run a test charge from the settings page to verify credentials work. The sandbox test card
4111 1111 1111 1111 should succeed.Accepting payments
Once connected, three places clients can pay:- Client portal — Most common. Click pay, enter or pick card, submit.
- One-time payment links — For invoices sent to people who don’t have CRM records.
- Saved-method auto-charge — For subscriptions, the saved card on file is charged automatically each cycle.
Saved payment methods
Saved methods are stored at the processor (not at Hiveku) for PCI compliance. Clients can:- Save a card or ACH on first payment
- View masked last-4 digits in the portal
- Set a default method for subscriptions
- Remove old methods
Refunds
- Full refund
- Partial refund
- Multiple partial refunds
From the invoice’s payment record, click Refund. The full amount goes back to the original payment method. The invoice transitions to
refunded.- Cards — 5–10 business days to appear on the client’s statement
- ACH — 7–10 business days, sometimes longer
Failed payment retry policy
For subscription-driven payments, the dunning policy controls retries. Configure in/dashboard/commerce/settings/:
- Retry intervals — Default: 24 hours, 3 days, 7 days
- Retry count — Default: 3 attempts
- Past-due grace period — Default: 14 days before auto-cancellation
- Email cadence — Notify client on each failure (default on)
- Internal alerts — Notify your team when a sub goes past_due (default on)
Reconciliation
Reconciliation is matching incoming payments to outstanding invoices. Three paths:- Auto (online payments)
- Manual (checks, wires, ACH outside processor)
- Bulk reconciliation
Stripe and Authorize.Net webhooks carry the invoice ID. Hiveku marks the invoice paid and records the transaction. No manual step needed for the vast majority of online payments.
Tax configuration
Tax settings live in/dashboard/commerce/settings/:
- Default tax jurisdictions — Per state, province, or country, with the applicable rate
- Tax-exempt clients — Set on the contact or company; their invoices skip tax
- Per-product taxable flag — Set on the product; non-taxable products skip tax even on taxable clients
- Tax ID display — Your business’s tax ID shown on invoice PDFs (VAT number, EIN, ABN, etc.)
PCI scope
Hiveku’s payment flow is designed to keep your PCI scope minimal:- Card data is tokenized client-side. The browser sends card details directly to Stripe/Authorize.Net via their JS SDKs.
- Hiveku stores only the token reference. No card numbers, no CVCs, no expiration dates touch your servers.
- Saved methods live at the processor. Hiveku uses Stripe Customer IDs and Authorize.Net Customer Profile IDs.
API patterns
Common operations against/api/crm/billing/*:
GET /api/crm/billing/integrations— list connected processorsPOST /api/crm/billing/integrations— initiate a new connectionPOST /api/crm/billing/refunds— issue a refundPOST /api/crm/billing/charges— direct charge against a saved method (rare; usually subscriptions handle this)GET /api/crm/billing/transactions— list transactions across processors
Troubleshooting
Stripe says 'Connected' but payments fail
Stripe says 'Connected' but payments fail
The OAuth token may be valid but the underlying Stripe account is restricted (Stripe puts new accounts through review for high-risk industries). Log into Stripe Dashboard and check for any verification requirements or restrictions on your account.
Authorize.Net returns 'Invalid Login ID'
Authorize.Net returns 'Invalid Login ID'
Refund button is grayed out
Refund button is grayed out
Webhook isn't reaching Hiveku
Webhook isn't reaching Hiveku
Stripe webhooks are auto-configured by the OAuth flow; if events aren’t arriving, check the connection health and re-authorize if needed. For Authorize.Net, the webhook URL must be set in your Authorize.Net dashboard pointing to Hiveku — paste the URL shown in payment settings.
Tax is showing zero on invoices
Tax is showing zero on invoices
Three things to check: (1) the line item’s taxable flag is on, (2) the client isn’t flagged tax-exempt, (3) the tax rate is configured for the client’s billing jurisdiction. Edit the draft invoice and look at the line item — the tax rate should display next to the amount.
What’s next?
Send Your First Invoice
End-to-end including processor connection.
Subscriptions
Recurring billing and dunning policy.
Client Portal
Where clients enter their payment info.
Reports & Analytics
Cash collected, transaction volume, and refund reporting.