AURA

Fees & Billing

Fee vaults, schedules, billing templates, and protocol-level monetization

Fees

InstructionDescription
init_fee_vaultCreate the protocol fee vault.
deposit_feesTop up the prepaid fee balance (real lamport transfer into the vault).
withdraw_unused_feesReturn prepaid surplus to the owner (cannot touch accrued fees).
set_fee_splitsSet the recipient split table (bps sum to 10000) and the low-balance mode.
collect_feesSweep the accrued bucket — split-aware across recipients, or drain to one.
update_fee_recipientChange the protocol fee recipient.
close_fee_vaultClose the fee vault (refused with outstanding accrued/debt).

The effective fee is debited from the prepaid balance into the accrued bucket at finalize_execution (success only — denied/expired proposals are free). When the prepaid balance is short, the low-balance mode decides: Block refuses execution, Degrade records fee_debt_usd, and Warn skips accrual. The protocol floor is included in fee computation whenever a fee is accrued.

Fee models & schedule

A per-treasury FeeScheduleAccount sidecar (kept off the treasury record for stack-frame headroom) defines what is charged: a base rate, per-transaction-type overrides, volume tiers, min/max clamps, flat and recurring (subscription / AUM) fees, and discounts (FHE subsidy, reputation, referral) — merged across the protocol / integrator / owner layers. Absent a sidecar, the treasury's legacy ProtocolFees is used as a single base tier.

InstructionDescription
init_fee_scheduleCreate the sidecar and store a coherence-validated schedule (integrator layer bounded by ProtocolConfig).
update_fee_scheduleReplace the schedule (re-validated and re-bounded).
close_fee_scheduleClose the schedule sidecar.

Billing templates & org profiles

A BillingTemplate mirrors policy templates for fee posture: author a schedule once (or fork a built-in BillingProfileKind — Payroll, TradingDesk, DaoTreasury, GrantProgram, VendorPayments, ColdStorage, Specialty) and apply it across treasuries within the protocol bounds. An org profile composes a policy template and a billing template into one apply call.

InstructionDescription
create_billing_templateAuthor a billing template or fork a BillingProfileKind (validated).
update_billing_templateOverwrite the schedule/metadata and bump the version.
close_billing_templateClose a billing template and reclaim rent.
apply_billing_templateWrite a template's schedule onto a treasury's fee sidecar (shared templates allow foreign owners).
apply_org_profileApply a policy template and a billing template to a treasury in one call, each through its own validation.

Monetization control plane

The global ProtocolConfig singleton is the root of fee control: a protocol authority — distinct from any treasury owner — sets a non-bypassable per-transaction fee floor and the bounds within which integrators may charge. Fee computation reads the floor directly, so zeroing a treasury's own schedule cannot escape it. Economic changes are staged and applied behind a timelock.

InstructionDescription
init_protocol_configBootstrap the ProtocolConfig singleton and set the protocol authority (callable once).
update_protocol_configStage an economic change (fee floor, creation fee, integrator bounds, recipient, settlement asset) behind the update timelock.
commit_protocol_configApply a staged change once its timelock has elapsed.

Fee enforcement

The protocol floor is enforced at fee-computation time — zeroing a treasury's own fee schedule cannot reduce the computed rate below the floor.

On this page