AutoBridge

Payment Patterns — Staff Fee Collection

Last updated: March 3, 2026


Overview

GovAssist supports two patterns for collecting fees after an initial application is submitted. Both patterns are designed to be configured per permit type based on your jurisdiction's fee structure.

Pattern 1 — Manual Fee Entry: Staff determines and enters the fee amount directly on the record.

Pattern 2 — Fee Definition with Staff Confirmation: Fees are auto-calculated from rate structures after staff verifies input variables.

Both patterns can coexist with filing fees collected at initial submission (filing fees use a separate payment configuration).


Prerequisites — Payment Form & Automation Setup

Both patterns require a dedicated payment form and automation to deliver the payment link to the applicant.

Step 1: Create a Payment Form

  1. Create a new form (or edit an existing payment form)
  2. Add at least one required field on Step 1 (e.g., applicant name, contact info)
  3. Add a Payment field on Step 2 or later
    • Configure the payment provider (e.g., Govolution, Stripe)
    • Set amount_type to DYNAMIC (Pattern 1) or CALCULATION (Pattern 2)
  4. Save the payment field

Payment cannot be the first step in a GovAssist form. Always add at least one required non-payment field on Step 1.

Step 2: Get the Citizen Form Link

  1. On the form configuration view find the Share Form button
  2. Click the Share Form button
  3. Copy the Citizen Form Link — this is the public URL applicants will use to access the form

Example link:

https://yourjurisdiction.govassist.app/forms/public/abc123def456

Step 3: Build the Automation

Create an automation on the permit entity to send the payment link when triggered:

Trigger:

  • When a record is updated on the permit entity
  • Condition: Fee field is not empty (Pattern 1), OR Confirmation checkbox is true (Pattern 2)

Action: Send Email

  1. Add a Send Email action node
  2. Configure recipient: Use the applicant email field from the permit record
  3. Compose the email body with the payment link:

Message body template:

Payment is required for your permit application.

Please complete payment here:
[Citizen Form Link]?record_id=[Record ID]

Dynamic field substitution:

  • Replace [Citizen Form Link] with the static URL you copied in Step 2
  • Replace [Record ID] with the dynamic Record ID field from the permit record

Example (with dynamic fields):

Payment is required for your permit application.

Please complete payment here:
https://yourjurisdiction.govassist.app/forms/public/abc123def456?record_id={{record.id}}

The record_id query parameter ensures the payment form loads with the correct permit record context, so the payment is linked back to the triggering permit.

  1. Save and publish the automation

Why This Workflow Matters

  • Form + Automation are required — Payments cannot be triggered without this setup
  • The Citizen Form Link is static — it's the same for all applicants using this payment form
  • The Record ID is dynamic — it changes per permit and ties the payment submission to the correct record
  • The automation must append the Record ID to the form URL, not just send the base link

Pattern 1 — Manual Fee Entry

When to Use

Use this pattern when the fee amount cannot be calculated from a rate structure:

  • Flat fees determined by staff review
  • Penalty amounts
  • Case-by-case fees without defined rates
  • Discretionary fees requiring staff judgment

How It Works

1

Applicant Submits Application

The application may include a filing fee payment at submission (configured separately).

2

Staff Reviews and Determines Fee

Staff reviews the record and calculates the fee amount per your jurisdiction's fee schedule.

3

Staff Enters Fee Amount

Staff enters the dollar amount in a designated fee amount field on the permit record (e.g., manual_fee_amount, review_fee).

Saving this field can trigger an automation to send the payment link (optional, depending on workflow configuration).

4

Applicant Receives Payment Form

The automation (configured per the Prerequisites section above) sends an email with the payment form link + record ID to the applicant.

The automation triggers when the fee amount field is updated (not empty).

5

Applicant Pays

The applicant accesses the payment form. The amount is dynamically pulled from the fee field staff populated.

Configuration Requirements

Entity Setup:

RequirementDetails
Fee amount fieldA number or currency field (e.g., manual_fee_amount) to hold the staff-entered amount
Applicant email fieldRequired for sending payment links

Payment Configuration:

SettingValue
amount_typeDYNAMIC
amount_field_idID of the fee amount field on the entity

Automation (Required):

See Prerequisites — Payment Form & Automation Setup above for the complete automation workflow.

Summary:

  • Trigger: Fee amount field is updated (not empty)
  • Action: Send email with [Citizen Form Link]?record_id={{record.id}}

Example Workflow

Scenario: Building permit with post-review fee

  1. Applicant submits application and pays $50 filing fee
  2. Staff reviews plans and calculates permit fee: $1,200
  3. Staff enters 1200 in the manual_fee_amount field and saves
  4. Automation emails applicant: "Payment of $1,200 is required. [Pay Now Link]"
  5. Applicant clicks link, payment form loads with $1,200 pre-filled
  6. Applicant pays via credit card through payment provider
  7. Payment status updates on permit record

Notes

  • Staff has full control over the amount — no automated calculation occurs
  • If the amount needs to change, staff updates the field; the automation can re-fire with the new amount
  • Filing fees and post-review fees are separate payment configurations

Pattern 2 — Fee Definition with Staff Confirmation

When to Use

Use this pattern when fees are calculated from a rate structure, but the input variable must be verified by staff before billing:

  • Per-acre or per-square-foot fees
  • Tiered fees based on construction value
  • Formula-based fees with staff-confirmed inputs
  • Any scenario where applicant-submitted values need official verification

How It Works

1

Applicant Submits Application

Applicant enters estimated values (e.g., building area, acreage). A filing fee may be collected at this stage.

2

Staff Reviews and Verifies Input

Staff reviews the record and updates the input variable to the verified value based on official sources (parcel records, site plans, etc.).

Example: Applicant entered 2,500 sq ft; staff verifies from plans and updates to 2,750 sq ft.

3

Staff Checks Confirmation Field

Staff checks a confirmation checkbox on the record (e.g., fee_confirmed, label: "Fee Values Confirmed").

This checkbox is a formal attestation that the input is accurate and the fee calculation is ready.

4

Automation Sends Payment Link

The automation (configured per the Prerequisites section above) sends an email with the payment form link + record ID to the applicant.

The automation triggers when the confirmation checkbox changes to true.

5

Fee Is Auto-Calculated

The payment form uses the staff-confirmed value(s) to calculate the fee against configured fee definitions.

Example: 2,750 sq ft × $0.45/sq ft = $1,237.50

6

Applicant Pays

Applicant sees the calculated total and completes payment.

Configuration Requirements

Entity Setup:

RequirementDetails
Confirmation checkbox fieldBoolean field (e.g., fee_confirmed) that triggers the payment automation
Input variable field(s)Field(s) holding the staff-verified value (e.g., building_area, acreage) — must be editable by staff
Applicant email fieldRequired for sending payment links

Fee Definitions:

SettingDetails
Calculation methodper_unit, tiered, formula, percentage, or fixed_amount
Fee schedule mappingpermit_field_id must reference the input variable field on the entity
is_calculatedSet to true in the fee schedule

Payment Configuration:

SettingValue
amount_typeCALCULATION
fee_config.fee_schedulesList of applicable fee definitions with is_calculated: true

Automation (Required):

See Prerequisites — Payment Form & Automation Setup above for the complete automation workflow.

Summary:

  • Trigger: Confirmation checkbox field changes to true
  • Action: Send email with [Citizen Form Link]?record_id={{record.id}}

The confirmation checkbox is a one-time trigger per review cycle. If the input value changes after checking the box, the workflow must account for resetting the checkbox or issuing an updated payment request.

Example Workflow

Scenario: Grading permit with acreage-based fee

  1. Applicant submits application, enters 3 acres (estimated)
  2. Staff pays $100 filing fee (separate config)
  3. Staff reviews and verifies actual acreage from parcel records: 3.5 acres
  4. Staff updates acreage field to 3.5
  5. Staff checks "Fee Values Confirmed" checkbox and saves
  6. Automation emails applicant: "Payment is required. [Pay Now Link]"
  7. Payment form calculates: 3.5 acres × $200/acre = $700
  8. Applicant pays $700
  9. Payment status updates on permit record

Fee Calculation Methods

The calculation_method in a fee definition determines how the fee is calculated:

MethodDescriptionExample
fixed_amountFlat fee$50 application fee
per_unitRate × quantity$0.25/sq ft × 2,000 sq ft = $500
tieredDifferent rates per tier0-1,000 sq ft @ $0.50; 1,001-5,000 @ $0.30
formulaCustom formula with variables(base_fee + sqft * rate) * (1 + tech_fee_pct)
percentagePercentage of another value10% of construction value

Notes

  • Staff must not check the confirmation box until all input fields are finalized — it's the point of no return for that billing cycle
  • Multiple fee definitions can be applied in the same payment configuration (e.g., base fee + per-unit fee + technology fee)
  • If input values change post-confirmation, coordinate with your jurisdiction's refund/adjustment policy

Comparison Summary

Pattern 1 — Manual EntryPattern 2 — Fee Definition + Confirmation
Fee determined byStaff judgmentConfigured fee definition
CalculationNone — staff enters amount directlyAutomated against fee definition(s)
Trigger for payment linkManual, automation, or status transitionConfirmation checkbox automation
Input variable verifiedN/AYes — required before checkbox
Filing fee at submissionOptional, separate configOptional, separate config
Best forVariable or discretionary feesRate-based fees with verifiable inputs
Amount typeDYNAMICCALCULATION

Filing Fees at Submission

Both patterns are compatible with collecting a filing fee at initial application submission. This is configured as a separate payment configuration on the submission form, independent of the post-review payment step.

Filing fee configuration:

  • amount_type: STATIC (fixed amount) or CALCULATION (if filing fee varies by permit type)
  • Collected at Step 1 or during the application form submission
  • Does not require staff review or confirmation

Payment Field Configuration

For details on creating the payment form and automation, see Prerequisites — Payment Form & Automation Setup above.

Payment field settings by pattern:

SettingPattern 1 ValuePattern 2 Value
Component typePaymentPayment
Payment provider(e.g., Govolution, Stripe)(e.g., Govolution, Stripe)
Amount typeDYNAMICCALCULATION
Dynamic sourceFee amount field IDN/A
Fee configN/AFee schedule(s) with is_calculated: true

Refunds and Adjustments

Payment providers (e.g., Govolution) do not process refunds automatically. Refunds must be coordinated with your finance department externally.

Recommended workflow:

  1. Add a payment_status field to the entity (dropdown: Pending, Paid, Refund Needed, Refunded)
  2. Staff updates status to Refund Needed when applicable
  3. Finance processes refund externally
  4. Staff updates status to Refunded once complete

Records marked Refunded can be excluded from revenue reporting queries.


Troubleshooting

Common Issues

IssueLikely CauseSolution
Applicant did not receive payment emailNo email on file, or in spamVerify applicant email; ask them to check spam folder
Payment form shows wrong amount (Pattern 1)Fee field updated after link was sentUpdate the field again; automation re-fires with new amount
Payment form shows wrong amount (Pattern 2)Input variable changed after confirmationReset confirmation checkbox or issue manual correction
Payment link opens wrong recordRecord ID mismatch in URLVerify automation URL includes record_id query parameter
Payment shows pending after applicant paidProvider processing delayWait 5-10 minutes; contact payment provider if unresolved

Related Documentation


Questions? Contact your system administrator or AutoBridge support.