Skip to content

Options: uploads, volumes and rate limiting

All values sit under InvoiceApi. As an environment variable with a double underscore per level: InvoiceApi__MaxUploadBytes. Where the settings belong is set out under Configuration.

Option Default Effect
MaxUploadBytes 15728640 (15 MB) the upper limit per file; above it, 413. Applies to the web server and to the multipart limit
SlowUploadWarnBytes 4194304 (4 MB) from this size the form warns about a noticeable wait. Never blocks; 0 switches the notice off
MaxBatchItems 50 the hard ceiling on files per batch run, above the plan limits. What applies is the minimum of the two
MaxBulkRows 5000 the hard ceiling on table rows per bulk import
ResultTtlMinutes 30 the lifetime of a transiently held result — the result pages after an upload
Option Default Effect
RateLimitPermitPerWindow 60 requests per window; above it, 429 immediately, without a queue
RateLimitWindowSeconds 60 the length of the window
AnonToolLimitEnabled true the hourly and daily cap for use without signing in
AnonToolLimitPerHour 20 tool calls per hour and client address
AnonToolLimitPerDay 50 tool calls per day and client address
FairUseHintThreshold 8 from this many calls in the current hour the fair-use notice appears; 0 switches it off

Per client address — except for /api calls with a known API key, which are counted per key. Several systems behind one NAT address therefore do not share a window.

The service checks these values at startup

Section titled “The service checks these values at startup”

The upload limit, result lifetime, rate-limit values and batch size must be positive. Given nonsense, the service aborts rather than quietly running on with unusable limits.

Values verified against the code on 22 October 2026.