gnubok

Voucher gap explanations

Documented explanations for gaps in the voucher series, per BFNAR 2013:2.

Endpoints


POST /api/v1/companies/:companyId/voucher-gap-explanations {#post-voucher-gap-explanations-create}

voucher-gap-explanations.create · scope bookkeeping:write

Document a gap in the verifikationsserie (BFL 5 kap 6-7 §§).

Records an explanation for one or more missing voucher numbers in a series. Required when a number is unaccounted for during audit. Statutory basis: BFL 5 kap 6-7 §§ (verifikationsnummer i löpande följd utan luckor); BFNAR 2013:2 kap 8 § governs the systemdokumentation that surfaces the gap. Idempotent. Dry-runnable.

Use when: You're responding to a voucher-gap audit finding and need to document the cause. Also used by migration flows that claim numbers without filling them.

Don't use for: Falsifying a series — every gap MUST have a genuine explanation. The dashboard surfaces these for auditor review.

Pitfalls

  • Idempotency-Key is mandatory.
  • gap_end must be >= gap_start; a single-number gap has gap_start = gap_end.
  • voucher_series is a single uppercase letter (A–Z); the same series + period + numeric range must not already exist.

Risk: low · Idempotent: yes · Reversible: no · Dry-run supported: yes

Example request

{
  "fiscal_period_id": "a8f1…",
  "voucher_series": "A",
  "gap_start": 142,
  "gap_end": 145,
  "explanation": "Migration from previous bookkeeping system on 2026-05-12 — series A148-onwards corresponds to the new gnubok numbering; numbers A142-A145 were assigned in the legacy system to manual paper vouchers archived offline (BFL 7 kap retention applies). Paper vouchers are stored in the company archive under reference 2026-PAPER-Q2."
}

Example response

{
  "data": {
    "id": "0e9c…",
    "voucher_series": "A",
    "gap_start": 142,
    "gap_end": 145
  },
  "meta": {
    "request_id": "req_…",
    "api_version": "2026-05-12"
  }
}