Contracts · Invoices · Any currency

Write a contract.
Receive an invoice.
Pay the wallet.

Vectis gives you four contract types, one lifecycle, and a wallet the contractor can draw from. The rest stays out of the way.

Contract · recordapp/models/contract.ts
// one row in the contracts table id: "CTR 0042" type: "hourly" rate: "85" currency: "USD" weeklyHoursLimit: 30 startDate: "2026-05-05" status: "active"
01

Meet the talent where they live.

Start from your existing shortlist or bring a new hire on board. The platform is country-agnostic from the first click — no entity to spin up, no local counsel to brief.

Candidate · verified
Live · 147 regions
LK
Lucas Kovács
Product Designer · Budapest, HU
🇭🇺
TimezoneCET · UTC+1
LanguageEN · HU · DE
AvailabilityOpen
BackgroundCleared
KYC · right-to-work · signed NDA
02

A contract, built in minutes.

Pick a type, set the rate, choose the currency. Locally compliant clauses are drafted automatically — IP assignment, labor law, termination — every detail fitted to the jurisdiction on the other side.

Contract · draft
Generated · 38s
Independent contractor agreement
Lucas Kovács · Budapest, HU · design services
Contractor
Vectis, on behalf of client
● Hungarian labor law● IP assignment● Misclassification clear
03

Local expertise, always current.

In-country specialists keep contracts, tax codes and benefit structures aligned with live regulation. When a new rule lands in the gazette, your paper moves with it.

Policy watchlist
Updated hourly
🇭🇺
HungaryPersonal income tax · 15% flat
Synced
🇩🇪
GermanyMindestlohn +€0.45/h · July 1
New
🇫🇷
FranceHome-office stipend raised
New
🇧🇷
BrazileSocial schema v11 rollout
Synced
04

One click, any rail, any currency.

Invoices land in the contractor wallet in their home currency. Eight payment rails route the money along the fastest, lowest-cost path — and your ledger stays normalized in USD for the board deck.

Invoice · settled
2.4s · SEPA Instant
8 rails · 120 currencies · USD normalized
05

One dashboard for your whole globe.

Every contract, invoice and payout reconciled in a single view. Live forex, cost-per-region, engagement status — the numbers your CFO and your people-ops lead read on the same screen.

Workforce mix
Live · 412 people
72%
Active contractors EOR employees Pending onboarding
412 people · 24 currencies · 1 source of truth
Four types

One column on every contract. Four values it can hold.

The type field decides how money moves. Every downstream invoice inherits the currency, the rate logic, and the billing shape from the type you choose here.

Type 01type: "fixed"

Fixed

A total amount agreed up front for a defined piece of work. One contract, one total, one invoice when the work completes.

type
"fixed"
rate
total in the chosen currency
scopeOfWork
free text describing deliverables
weeklyHoursLimit
null
Type 02type: "hourly"

Hourly

A rate per hour, billed via invoices against logged hours. An optional weekly cap keeps scope honest on both sides of the page.

type
"hourly"
rate
hourly rate as a string
weeklyHoursLimit
integer or null
Type 03type: "milestone"

Milestone

Work broken into phases, each phase priced and due on its own date. One invoice lands per milestone completed.

type
"milestone"
rate
per milestone value
invoices
one per phase
Type 04type: "payroll"

Payroll

Recurring engagements on a fixed cycle. Consistent invoices on a schedule. Good for long running retainers.

type
"payroll"
rate
cycle amount
cadence
set by the contract
The lifecycle

One contract, six states.

A contract is always exactly one of six statuses. The timeline below names each state, explains what it means on the books, and, where useful, shows the shape of the record behind it.

First state

Written in private, saved on your side.

A draft contract belongs to the author. Every field is editable, nothing has been sent, nothing is visible to the counterparty. This is the composition surface.

status: "draft" type: "hourly" rate: "85" currency: "USD" weeklyHoursLimit: 30 scopeOfWork: "frontend milestones"
Delivered to the counterparty

Handed over, still reversible.

The contract crosses the wire to the other organization. They can review every field before accepting. Until they sign, you can pull it back to draft.

Running contract

Both sides signed. Invoicing enabled.

Once active, the contract is the source of truth for every invoice raised under it. Type, rate, and currency propagate automatically onto new invoices.

status: "active" invoicing: enabled clientOrgId // locked contractorOrgId // locked
Temporarily stopped

Billing stopped, paper intact.

Paused keeps the contract alive and the ledger quiet. No new invoices accepted under a paused contract. Move back to active when work resumes, no renegotiation required.

Work wrapped

Closed on the books, kept on the books.

Completed is the clean exit. The record stays for audit, tax, and future reference. Every invoice linked to it stays readable.

The other exit

Ended early, labelled honestly.

When a contract ends before completion, cancelled is the right label. Outstanding invoices keep their own status. The row is preserved, not deleted.

Currency

The currency field is free text.

Every contract carries a currency column. We do not prescribe a list. Pick a code, write it into the field, and it flows downstream onto invoices and onto the wallet that settles them. FX is not executed inside Vectis.

USDEURGBPJPYBRLINRCADAUDMXNAEDSEKAny

Write one real contract.

No card. No call. Five minutes to compose, send, and watch it land on the other side of the page.

Start free See pricing