Skip to main content

Employee Portal

The employee application lives under /portal. It is designed for a worker who should be able to receive salary, understand where it came from, and spend or off-ramp funds without touching raw chain tooling.

Live routes

RoutePurposePrimary data sources
/portalBalance overview, last payment, quick actions, streaming-salary stateemployees, payment_items, employer lookup
/portal/paymentsFull payment history with decoded memo detailspayment_items, payroll_runs, Tempo explorer links
/portal/cardCard display, live transaction history, and bank transfer entry pointBridge-backed card state, /api/employees/[id]/card, /api/employees/[id]/offramp
/portal/card/activateCard issuance and activation handoff/api/employees/[id]/card
/portal/walletWallet identity and linked account detailsemployees, Privy wallet state
/portal/settingsProfile, bank connection entry, notification toggles, security controlsPrivy user, employee record, employer lookup
/portal/settings/offrampBank account and off-ramp preferencesemployee off-ramp routes

Salary experience

The home portal route distinguishes between standard payroll and streaming payroll:
  • Standard payroll shows the most recent paid amount.
  • Streaming payroll shows a live ticker driven by StreamVesting state and the employee compensation record.

Payment history

The payments route exposes:
  • Amount
  • Status
  • Decoded memo context
  • Transaction hash
  • Tempo explorer deep link
  • Settlement time when available
This is the employee-facing mirror of the payroll record kept in payment_items and payroll_runs.

Card and bank off-ramp

The current card route combines two concerns:
  • Card visibility and controls
  • Off-ramp to bank through the Bridge-backed MPP endpoint
The employee-facing portal now uses first-party employee routes for off-ramp and card actions:
  • GET /api/employees/[id]/card
  • POST /api/employees/[id]/card
  • POST /api/employees/[id]/offramp
The dedicated MPP Bridge endpoint remains available for machine-paid callers and external agents.

Security and profile

  • Profile fields persist through PATCH /api/employees/[id].
  • Passkey linking uses Privy directly from the settings screen.
  • Notification preferences remain browser-local by design in the current build.