Developers

Integration Guide

Learn how to integrate Payflo with your existing systems.

12 min read

Choosing an integration model

Most teams pick one of three shapes depending on how much of the payroll experience they want to own.

  • Embedded UI — drop our components in, we own the interface
  • Headless API — you build the interface, we handle calculation and filing
  • Hybrid — embedded onboarding, your own payroll approval flow

Embedded components

Components render in an iframe and are authorized with a short-lived session token minted server-side. Never expose an API key to the browser.

// Server
const session = await payflo.sessions.create({
  company_id: 'cmp_8f2a',
  component: 'employee_onboarding',
  expires_in: 900,
});

// Browser
Payflo.mount('#onboarding', { token: session.token });

Syncing your own records

Store the Payflo object id alongside your own record rather than matching on email or name. Ids are stable; the fields people use to match are not.

When a sync conflict occurs, Payflo returns a 409 with both versions rather than picking a winner.

Testing

Sandbox provides deterministic test fixtures. Specific EINs and routing numbers trigger specific outcomes so you can exercise failure paths without waiting for a real rejection.

  • EIN 00-0000001 — filing rejected, invalid account
  • Routing 110000000 — ACH return, account closed
  • Employee SSN 000-00-0002 — jurisdiction registration missing