Skip to main content
This guide walks through your very first invoice — from connecting a payment processor to seeing the invoice flip to paid. Plan for about 20 minutes the first time. After that, sending an invoice takes under 2 minutes.
Prerequisites: a Hiveku account with the Commerce module enabled and a Stripe account (free to create). If you’d rather use Authorize.Net, the steps are similar — see Payments.

What you’ll do

1

Connect Stripe as your payment processor

OAuth flow, takes 60 seconds.
2

Add a product or service to the catalog

The thing you’re invoicing for.
3

Create the invoice with line items

Pick the client, add the product, set tax and terms.
4

Send to the client

They get an email with a portal link.
5

Watch them pay (or pay it yourself as a test)

The invoice auto-flips to paid via Stripe webhook.

Step 1: Connect Stripe

1

Open Commerce settings

Go to /dashboard/commerce/settings/.
2

Click Connect Stripe

You’re redirected to Stripe’s OAuth page.
3

Sign in to Stripe and authorize

Pick the Stripe account you want to connect (test or live mode).
4

Confirm the connection

You’re redirected back to Hiveku. The settings page should show “Stripe — Connected” with your account ID.
Use test mode for your first invoice. You can run the entire flow without moving real money. Switch to live mode once you’ve verified everything works.

Step 2: Add a product

You need at least one item to put on the invoice. Let’s add a simple service.
1

Go to Products

Navigate to /dashboard/commerce/products/.
2

Click New Product

Top right of the products list.
3

Fill in the basics

  • Name: “Strategy Consulting”
  • Description: “Two-hour strategy session with summary doc”
  • Price: 500 (in dollars; stored as cents internally)
  • Recurrence: One-time
  • Taxable: depends on your jurisdiction; check if your services are taxable
4

Save

The product is now available for line items.
For more on the catalog, see Products & Services.

Step 3: Create the invoice

1

Go to Invoices

Navigate to /dashboard/commerce/invoices/.
2

Click New Invoice

A blank draft opens.
3

Pick the client

Search by name or company. If they’re not in CRM yet, click + New Contact and add them — at minimum a name and a billing email.
4

Add a line item

Click + Line Item, search for “Strategy Consulting”, select. The product’s name, description, price, and tax flag pre-fill.
5

Set quantity

Default is 1. Change if you’re billing multiple sessions.
6

Set payment terms

Net 15, Net 30, etc. Pick what your business uses. Net 30 is a common default.
7

Review the totals

Subtotal, tax, total. The PDF preview button shows you exactly what the client will see.

Step 4: Send to the client

1

Click Send

Hiveku generates the PDF, attaches it to an email, and sends to the client’s billing email with a portal link.
2

Confirm the send

A confirmation modal shows the recipient email. Double-check it’s right (typos here are the #1 cause of “they didn’t get my invoice”), then confirm.
3

Watch the status flip to Sent

The invoice’s status badge updates immediately. The activity log shows the send timestamp and email ID.

Step 5: Pay the test invoice

To verify the full flow works, pay the invoice yourself. In test mode, this doesn’t move real money.
1

Open the invoice email

Check the inbox of the contact you used. The email has a “View Invoice” button.
2

Click the link

You land on the client portal showing the unpaid invoice.
3

Click Pay Now

The portal payment form appears.
4

Use a test card

4242 4242 4242 4242, any future expiry, any 3-digit CVC, any ZIP code. Submit.
5

See the success page

The portal flips to “Paid” and an emailed receipt is sent.
6

Check the invoice in Hiveku

Back at /dashboard/commerce/invoices/, the invoice’s status should now be Paid (within seconds — Stripe webhooks fire fast).

Verify it worked

The invoice’s activity log should show:
  • Created (draft)
  • Sent — with email recipient and timestamp
  • Email delivered — confirmation from your email provider
  • Email opened — when the client viewed the email
  • Portal viewed — when they clicked through to the portal
  • Payment received — Stripe transaction ID and amount
  • Marked paid — automatic on payment success

Going live

When you’re ready to send a real invoice for real money:
1

Switch Stripe to live mode

In /dashboard/commerce/settings/, disconnect the test connection and re-connect Stripe in live mode.
2

Re-create your product if needed

Test-mode products from Stripe don’t carry over. Hiveku’s products are fine, but if any references Stripe price IDs, regenerate them in live.
3

Send a small real invoice

Pick a friendly client or yourself. Real card, real money. Refund yourself afterward.

Troubleshooting

Your Stripe account may be in a state that doesn’t allow OAuth connections — restricted, under review, or with 2FA missing. Log into Stripe Dashboard and resolve any verification flags first, then retry the OAuth flow.
Check the invoice’s activity log — if the email shows “delivered,” it’s in their inbox or spam. If it shows “bounced,” the email address is wrong or doesn’t exist. If it shows “send failed,” your sending domain isn’t fully verified — see Email Domains.
Common causes: typo in the card number (use exactly 4242 4242 4242 4242), expired test mode session, or the connection switched to live mode while you were testing. Re-check the connection mode in settings.
The Stripe webhook didn’t reach Hiveku. In /dashboard/commerce/settings/, click Test Webhook to verify the connection. If it fails, re-authorize Stripe. Once webhooks are healthy, manually mark the test invoice paid to keep your data clean.
Three checks: (1) the product’s taxable flag, (2) the client’s tax-exempt flag, (3) tax rates configured for the client’s billing jurisdiction in settings. Edit the draft, fix what’s missing, and re-send.

What’s next?

Create and Send an Estimate

Quote work before you bill it.

Set Up Recurring Subscriptions

Bill retainers automatically each month.

Track AR Aging

Stay on top of overdue invoices.

Set Up the Client Portal

Brand the portal and add a custom domain.