caliper uidocs

Landing template

Block

A whole product page from the Free blocks, in the order buyers decide, with a header that keeps the action in reach.

Installs components/ui/landing-template.tsxDepends on lucide-reactMotion none in component source
pnpm dlx shadcn@latest add https://caliperui.site/r/landing-template.json
Skip to content
New · NetSuite two-way sync

Month-end close for finance teams

Close the books in a morning

Halden matches every bank line to the ledger as it lands, so the close is a review, not a hunt.

14 days free · no card

halden.app/close/october
October close412 of 418 matched
Mercury · Stripe payout · INV-2291rule: payouts$18,240.00Matched
AWS · Invoice 0923vendor history$4,112.37Matched
Gusto · Payroll · 31 Octamount differs by $12.40$61,904.12Review
Figma · Annual · Org planrule: SaaS$2,880.00Matched
Brex · Card settlementstatement$9,377.80Matched
Gusto · Payroll needs a look$12.40 more than the ledger. Likely: employer NI adjustment.

Closing the books at 1,200 finance teams, including

  • Ostra Freight
  • Lumen Labs
  • Kestrel Bio
  • Northwind
  • Tide Physio

9→1days to close the books at Ostra Freight

“The first month we trusted it, our auditors asked for the audit trail export instead of our spreadsheets.”
Ana Reyes, Financial controller

The product

One close, three jobs

Halden does the matching, hands you what it could not decide, and keeps the record your auditors want.

halden.app/close/october
October close412 of 418 matched
Mercury · Stripe payout · INV-2291rule: payouts$18,240.00Matched
AWS · Invoice 0923vendor history$4,112.37Matched
Gusto · Payroll · 31 Octamount differs by $12.40$61,904.12Review
Figma · Annual · Org planrule: SaaS$2,880.00Matched
Brex · Card settlementstatement$9,377.80Matched

Why teams switch

What changes at month end

Three things stop being a scramble the first month you run Halden.

  • 01

    Lines match as they land

    Bank feeds reconcile against the ledger every four hours, with the rule that matched each line.

    • 09:12Stripe payoutrule: payouts$18,240.00
    • 09:12AWS · 0923vendor history$4,112.37
    • 13:04Figma · Annualrule: SaaS$2,880.00
    • 17:30Brex settlementstatement$9,377.80

    97%matched without a touch

  • 02

    Exceptions come with context

    Anything unmatched arrives with the three likeliest invoices and who approved them.

    6lines left in October

  • 03

    An audit trail auditors ask for

    Every match, edit and approval exports as one file your auditors can sample.

    1 fileinstead of 40 spreadsheets

Why switch

Month end, before and after

  • Matching bank lines

    Spreadsheets: VLOOKUPs across three exports, rerun after every correction.

    With Halden: Matched as each line lands, with the rule that matched it.

  • Finding a mismatch

    Spreadsheets: Scroll until the totals stop disagreeing.

    With Halden: Six lines, each with the likeliest invoice and who approved it.

  • Audit evidence

    Spreadsheets: Forty files, renamed by hand in October.

    With Halden: One export auditors can sample.

  • Time to close

    Spreadsheets: Nine working days.

    With Halden: A morning.

How it works

From bank feed to closed books

Seven minutes of setup, then Halden works overnight. Choose a step to see what exists after it.

Mercury connected · 2,184 lines imported2 min

Pricing

Priced for your team

Move the slider to your headcount. The plan that fits is marked, with the reason.

  • Starter

    —Not available for 14 seats

    Not available above 5 seats
    • 2 bank connections
    • Monthly close
    • Email support
  • TeamFor you

    /mo$448 per month

    14 seats × $32
    • Unlimited connections
    • Daily matching
    • Audit trail export
  • Scale

    /mo$672 per month

    14 seats × $48
    • Multi-entity
    • SSO and SCIM
    • Named accountant

14 seats is more than Starter allows, so Team fits.

Prices in USD, before tax.

What controllers say

We closed September in three hours. The team spent the rest of the week on forecasting, which is the job we were hired for.
Ana ReyesFinancial controller, Ostra Freight
3h
month-end close, down from 9 days
−62%
audit fieldwork hours
  • “Our auditors sampled the export.”
    Lena BrandtCFO, Lumen Labs

FAQ

Questions finance teams ask

Straight answers, each linked to the page that explains it in full.

Not here? Ask us about it

  • No. It prepares the close; your accountant reviews it and signs off, usually faster. How review works

Start today

Close October in a morning.

14 days free · no card · import your September close

When to use #

Use it for

  • A product or launch page you want live this week.
  • You want a starting point to rearrange, not a blank page.

Skip it when

  • Content sites and blogs; use the docs template.
  • Pages that need a bespoke story; compose the blocks yourself.

Installation #

terminal
pnpm dlx shadcn@latest add https://caliperui.site/r/landing-template.json

Adds its 19 files to components/ui/, each with its own stylesheet, and installs their packages. No account needed. The first part also adds Caliper UI’s tokens; import them once as in Installation.

Usage #

This is the code behind the preview above.

example.tsx
import { LandingTemplate } from "@/components/ui/landing-template"

export function LandingDemo() {
  return (
    <div className="h-[720px] w-full overflow-auto rounded-[14px] shadow-[0_0_0_1px_var(--border)]">
      <LandingTemplate
        brand="Halden"
        nav={siteNav()}
        signIn={{ label: "Sign in", href: "#" }}
        primary={heroes.primary!}
        sections={{ hero: heroes, proof, showcase: showcases, features, comparison: comparisons, steps, pricing, testimonials: quotes, faq: faqs, cta: ctas, footer: footers }}
      />
    </div>
  );
}

const siteNav = (current?: string) => [
  { label: "Product", href: "#product" },
  { label: "Pricing", href: "#pricing", current: current === "pricing" },
  { label: "Customers", href: "#customers" },
  { label: "Changelog", href: "#changelog", current: current === "changelog" },
];

API reference #

LandingTemplate

component
PropTypeDefaultDescription
brand *string—
navreadonly BlockNavLink[][]
signInBlockAction—
primary *BlockAction—
sections *LandingSections—
footerReactNode—Small print when no footer block is given, e.g. "© 2026 Halden Ltd · Privacy · Terms".
classNamestring—

Accessibility #

It is built on native elements and keeps aria-hidden in step with state.

No custom key handling; Tab and the native activation keys do the work.

Motion #

It declares no animation in its component source. Any transition comes from its stylesheet, which uses the duration tokens that collapse to instant under prefers-reduced-motion.