Headless & Integration package

Scheduled data reconciliation

Every morning, yesterday's orders are matched to billing invoices; missing invoices and amount mismatches are recorded and a summary is sent.

ScheduledIntermediate~15 min setupv1.0.0

About this package

What it does

Scheduled data reconciliation checks that every order was billed correctly. Each morning at 05:30 it reads yesterday's orders from your order system and the invoices for the same date from your billing API (or any date you pass as as_of).

For each order it finds the invoice with the same order id and classifies the pair: matched, missing invoice, or amount mismatch (a difference larger than the tolerance). Exceptions are inserted into the Reconciliation exceptions table with the amounts and difference, ready for finance to work through.

At the end it counts the results, emails a summary to finance operations and posts the same totals to an ops webhook. Adapt the two list endpoints, the matching key and the tolerance; nothing in the run needs a person.

Scheduled

Daily at 05:30 (UTC). You can also start it any time from the Run dialog, the API or the CLI.

Runs on a schedule (daily, weekly, monthly) in your time zone.

The flow

Step by step

  1. 1

    Pick the date

    The run reconciles yesterday, or the as_of date when one is given.

  2. 2

    Read both sides

    Orders come from the order system and invoices from the billing API for the same date.

  3. 3

    Match each order

    For every order the invoice with the same order id is found and the amounts compared.

  4. 4

    Record exceptions

    Missing invoices and amount mismatches are inserted into the Reconciliation exceptions table.

  5. 5

    Report

    Totals are counted, emailed to finance operations and posted to the ops webhook.

Order-invoice reconciliation — Every morning, compare yesterday's orders with the invoices billed for them; record missing invoices and amount mismatches and send a summary. The same canvas you get in the designer after installing.

Forms

Inputs and task forms

The inputs a caller passes when it starts a run, and the forms people complete when the process needs a decision.

Start inputs

Order-invoice reconciliation

Passed by the calling system

As of as_of · dateYYYY-MM-DDOptional business date to reconcile (YYYY-MM-DD); defaults to yesterday
Finance ops email finance_ops_email · emailname@company.comWho receives the daily summary
Tolerance amount_tolerance · number0Differences up to this amount count as matched (rounding)

From your code

Start a run over the API

Every workflow can be started over REST, MCP or the CLI, whatever its trigger, with the sample input below. Runs start straight away on the published version; replace <workflow id> with the id the install created.

REST

shell
curl -X POST "$USERTASKS_URL/api/v1/workflows/start" \
  -H "Authorization: Bearer $USERTASKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"workflow_id":"<workflow id>","variables":{"as_of":"2026-10-25","finance_ops_email":"finance-ops@example.com","amount_tolerance":0.01}}'

CLI

shell
usertasks workflows inputs <workflow id>          # the start form: keys, types, required
usertasks workflows run <workflow id> --input as_of=2026-10-25 --input finance_ops_email=finance-ops@example.com --input amount_tolerance=0.01 --wait

What's included

9 assets, ready to adapt

TypeNameDetails
Email templateReconciliation summaryDaily summary sent to finance operations.
Data tableReconciliation exceptionsOrders that did not reconcile with billing: a missing invoice or an amount mismatch. Finance works these rows and sets the status.
IntegrationBilling API
IntegrationOps webhook
IntegrationOrder system
API referenceList invoices by dateGET /invoices — All invoices issued for orders on one date, with the order id they bill.
API referenceList orders by dateGET /orders — All orders placed on one date.
API referencePost reconciliation summaryPOST /reconciliation-summary — Post the daily totals to an ops channel or monitoring webhook.
WorkflowOrder-invoice reconciliation23 steps — Every morning, compare yesterday's orders with the invoices billed for them; record missing invoices and amount mismatches and send a summary.

Reconciliation exceptions · schema only

Business dateOrderCustomerExceptionOrder totalInvoiceInvoice amountDifferenceStatus

Requirements

What you connect it to

Credentials never travel in a package. The install wizard asks for what your environment must provide, or installs it incomplete until you finish setup.

Needs

  • REST API — A REST API integration: set its base URL and credentials on install.
  • Email (optional) — Email delivery configured for the instance (EMAIL_PROVIDER), used for notifications.

After installing

  1. Order system integration: set the base URL and API token. List orders by date calls GET /orders?date=YYYY-MM-DD and reads data[] (id, customer, total).
  2. Billing API integration: set the base URL and API token. List invoices by date calls GET /invoices?date=YYYY-MM-DD and reads data[] (invoice_number, order_id, amount).
  3. Ops webhook integration: set the base URL (and token if needed) of the channel or monitoring webhook that receives the summary.
  4. Set finance_ops_email and amount_tolerance on the workflow variables.
  5. Email (optional): configure EMAIL_PROVIDER on the instance for the summary email (the step continues on error).

Asked for on install

  • Integration “Billing API”Required

    • Tokenconfig.auth_config.token
    • Base urlconfig.base_urldefault https://billing.example.com/api· optional
  • Integration “Ops webhook”Required

    • Tokenconfig.auth_config.token
    • Base urlconfig.base_urldefault https://hooks.example.com· optional
  • Integration “Order system”Required

    • Tokenconfig.auth_config.token
    • Base urlconfig.base_urldefault https://orders.example.com/api· optional

Install

Install it in your workspace

Works on UserTasks cloud and on any self-hosted instance. Installing creates the assets above; nothing runs until you complete setup and start it.

In the app

  1. Download scheduled-data-reconciliation-1.0.0.utpkg.
  2. Open Automations → Packages and drag the file onto the page (or choose Import package). Browse gallery there lists every gallery package without downloading by hand.
  3. Pick the file. The wizard verifies the checksum, every file hash and the signature, and shows the readme.
  4. Review the changes (what is created) and the data rows.
  5. Fill in the requirements, or tick Keep incomplete and finish later with Complete setup.
  6. Done: the workflow is published and active once setup is complete.

With the CLI

shell
curl -fLO https://usertasks.com/gallery/scheduled-data-reconciliation-1.0.0.utpkg
usertasks packages inspect scheduled-data-reconciliation-1.0.0.utpkg       # offline: checksum, hashes, signature
usertasks packages install scheduled-data-reconciliation-1.0.0.utpkg --dry-run
usertasks packages install scheduled-data-reconciliation-1.0.0.utpkg       # prompts for each requirement
usertasks packages install scheduled-data-reconciliation-1.0.0.utpkg --keep-incomplete --yes   # in CI; finish with:
usertasks packages complete scheduled-data-reconciliation -f values.yaml

Verify the download

File SHA-256
b26941b2717a11a154740baa2d3b9b491c1a3e1080d381c1e4769cd6d03f2cbf
Package checksum (what is signed)
sha256:8c5633764fc12603969aa1af2a13476feeb76fdac3aa80f9c33d9958b740fe2e
Signer
Unsigned preview build — compare the SHA-256 above

shasum -a 256 scheduled-data-reconciliation-1.0.0.utpkg should print the file SHA-256. How gallery packages are signed.

Versions

Version 1.0.0

  1. v1.0.02026-10-26First release.

Installing a newer version upgrades in place: local credentials and requirement values are kept, and changes you made are flagged first. How packages work

More packages

Related

Browse the whole gallery