Skip to content

UNL Relay

Payroll journal entries, from Paylocity to QuickBooks Desktop.

UNL Relay takes the general ledger file Paylocity produces after each payroll, checks it, and posts it to QuickBooks Desktop as journal entries. Nobody re-keys a payroll, and a person is asked to look only when a file needs attention.

unl-relay / how it worksOne payroll, start to finish
  1. Paylocity sends the file

    A scheduled GL report arrives by SFTP

  2. Relay checks it

    Within seconds of arrival, on Azure

  3. Queued or held

    Queued with a reference number, or held with a reason

  4. QuickBooks pulls it

    The Web Connector checks in every 5 minutes

  5. Posted and confirmedDone

    Visible in the console, confirmed by email

How it works

Five steps. People step in only when something is wrong.

  1. 01

    The file arrives

    After each payroll, Paylocity drops one general ledger file per company by SFTP into Azure storage. An event starts Relay within seconds.

  2. 02

    It's checked

    File name, balanced entries, a known and active company, allowed accounts and classes, and no duplicate of an earlier payroll.

  3. 03

    It's queued or held

    A file that passes gets a reference number and becomes one journal entry per company and class. A file that fails is held, and an email goes out.

  4. 04

    QuickBooks pulls

    The QuickBooks Web Connector checks in on a schedule. Relay confirms each reference number isn't already there, then adds what's missing.

  5. 05

    People watch

    The console shows files, entries and check-ins. Someone steps in only for held files and posting errors.

Safeguards

Built for the one job where a mistake is expensive.

Payroll touches every employee and every period close. Relay is designed so that a bad file stops before it reaches QuickBooks, and a good one only ever posts once.

  • Checked before it posts

    Every entry must balance, the company must be known and active, and every account and class must be on the allowed list.

  • Never posts twice

    Duplicate files are caught on arrival, and QuickBooks is asked whether a reference number already exists before anything is added.

  • Held, not dropped

    A file that fails is kept with a reason code. Fix the cause and re-send it, or mark it resolved with a note.

  • Nothing connects in

    The QuickBooks Web Connector on the customer's server reaches out to Relay. No inbound access to the office is needed.

  • Amounts stay out of alerts

    Emails, logs and console lists never show dollar amounts or employee data. Amounts appear only on an entry's detail view and in the CSV export.

  • Every change audited

    Re-sends, retries and edits to companies or allowed names are written to an audit log with who did them.

The console

Everything visible at relay.unl.dev.

A web console with Microsoft sign-in. Admins can act; view-only users can see every page and export CSV, but every change they try is refused.

  • Files received, held files and their reasons
  • Journal entries waiting, posted or in error
  • Web Connector check-ins, flagged when they go quiet
  • Re-send held files and retry failed entries
  • The company list and allowed account and class names
  • Email settings, recipients and a history of every email

Email alerts

  • Held file alerts

    Sent right away when a file is held for review.

  • QuickBooks posting errors

    Sent at the end of a sync when QuickBooks rejects an entry.

  • Posted confirmations

    Sent when every entry for a reference number is in QuickBooks.

  • Morning check

    Sent only when something needs attention. No email means nothing did.

Each type can be switched on or off, and each event is emailed once. A failed email never holds up payroll processing.

How it's built

Event-driven and serverless on Azure.

Two small function apps: one processes payroll files and talks to QuickBooks, the other serves the console. Both share the same tested core.

Compute
Azure Functions (Python), Flex Consumption
Intake
SFTP into Azure Blob Storage, triggered by Event Grid
State
Azure Table Storage for queues, settings and the audit log
QuickBooks
QuickBooks Web Connector and qbXML, posting to QuickBooks Desktop
Sign-in
Microsoft Entra ID, assignment required
Email
Resend, with a send-only key and idempotency keys
Monitoring
Application Insights and a daily morning check
Quality
pytest suite run against synthetic payroll files, never real ones

Running Paylocity and QuickBooks Desktop?

Tell us how payroll gets into your books today. Conversations start at Unleashed Technology.