PayPolka

Clients and contacts

Add a client so their projects, estimates, invoices, and contact details stay together. Choose a primary contact for billing emails, then save the payment terms and tax rate you normally use for that client.

The list

Clients in the top bar shows every client with its ID, name, status, primary contact, and website. Search covers client names, contact names, and contact emails. A toggle switches between the table and cards.

Each client gets a number like CL-01 when it’s created, counted per account. Two clients called Smith stay distinguishable.

Creating a client

Create Client asks for a name, website, status, and address (street, city, state from a dropdown, zip). Status is Active or Inactive. Inactive clients keep their history and drop into a separate section of the client picker on estimates and invoices. Nothing gets deleted.

The new-client form also has a Primary contact block: name, email, phone, role. It’s optional. You can add contacts from the client page later.

Deleting a client is on the edit page under Danger zone. It removes the contacts and every related record and can’t be undone. A client with projects, or one who has ever been sent an invoice, can’t be deleted; archive their projects and mark them inactive instead. Deletes are recorded under Settings, Activity.

Contacts and the primary contact

The Details tab lists contacts with a name, role, email, and phone, plus an Add contact form. Each contact has a pencil to edit and a trash icon to remove.

One contact is primary, marked with a filled star. The primary contact receives estimates, invoices, receipts, and statements. Click the star on another contact to make them primary instead. The first contact you add becomes primary on its own, and a primary contact must have an email, because that’s where the mail goes.

If a client has no primary contact with an email, the Send buttons on estimates and invoices tell you so and stop.

Invoice defaults

The client form has an Invoice defaults card with two fields:

  • Payment terms: Net 10, Net 15, or Net 30.
  • Tax rate (%).

A new invoice for the client starts with both. A new estimate starts with the tax rate. Both are copied at creation, so you can change them on the document without touching the client, and changing the client later leaves existing documents alone.

There’s no per-client discount default or reminder switch. Discounts live on the document, and reminders are an account switch plus a switch on each invoice (see Invoices).

The five tabs

A client page has Details, Projects, Estimates, Invoices, and Notes. Estimates and Invoices show only to people who can see money (owners, admins, accountants).

Projects lists the client’s projects with billing method, status, and hours logged. Estimates and Invoices list those documents. Notes is one rich text document with a Save notes button. Clients never see it.

Above the tabs sit New invoice, New estimate, Statement, Edit, and the portal link button.

Statements

Statement opens a statement of account for one month. Pick the month and year and hit View. It shows the opening balance, what you invoiced and collected in the period, the invoices issued, the payments received, and the closing balance. Email statement sends it to the primary contact. More in Accounting and statements.

Generate portal link creates a bearer link for the client’s portal: their estimates, invoices with balances, and approved hours on projects you’ve marked visible. Once it exists the buttons read View portal and Rotate portal link. Rotating kills the old link. Links expire after the number of days set under Settings, Documents. See Public pages and portal.

Importing from a CSV

Import CSV on the Clients page opens a dialog with a Download template button. The template has the columns: name, website, address_street, address_city, address_state, address_zip, internal_notes, payment_terms, tax_rate, contact_name, contact_email, contact_phone. One client per row, 5 MB or 5,000 rows max.

A row whose name matches an existing client fills in that client’s blank fields and never overwrites what’s already there. Bad rows are skipped and reported at the top of the list; good rows still land.