import type { Metadata } from "next";
import { notFound } from "next/navigation";
import Image from "next/image";
import { Header } from "@/components/landing/Header";
import { Footer } from "@/components/landing/Footer";
import { RelatedReading, SeoLink } from "@/components/landing/RelatedReading";
import { siteUrl } from "@/lib/seo/site";
import { publicUrl, seoLanguageAlternates } from "@/lib/seo/slugs";

type Locale = "de" | "en";
function isLocale(value: string): value is Locale {
  return value === "de" || value === "en";
}

const ROUTE = "blog/receipt-to-excel-guide" as const;
const PUBLISHED = "2026-08-19";

const copy = {
  de: {
    title: "Kassenbon in Excel umwandeln | ScanReceipts",
    description:
      "So wird aus einem Foto eines Kassenbons eine strukturierte Excel-Tabelle – ohne Zahlen abzutippen. Warum Vorlagen dabei nur begrenzt helfen.",
    keywords: [
      "rechnung in excel",
      "kassenbon in excel umwandeln",
      "ausgaben excel tabelle",
    ],
  },
  en: {
    title: "Receipt to Excel: Photo to Spreadsheet | ScanReceipts",
    description:
      "How to turn a photo of a receipt into a structured Excel spreadsheet without retyping numbers, and why a receipt excel template is a weaker starting point.",
    keywords: [
      "receipt to excel",
      "convert receipt to excel",
      "receipt spreadsheet",
      "excel spreadsheet for receipts",
      "receipt scanner that converts to excel",
    ],
  },
} as const;

export async function generateMetadata({
  params,
}: {
  params: Promise<{ locale: string }>;
}): Promise<Metadata> {
  const { locale } = await params;
  const lang: Locale = isLocale(locale) ? locale : "en";
  const canonical = publicUrl(lang, ROUTE);
  const c = copy[lang];
  return {
    title: c.title,
    description: c.description,
    keywords: [...c.keywords],
    alternates: {
      canonical,
      languages: seoLanguageAlternates(ROUTE),
    },
    openGraph: {
      type: "article",
      url: canonical,
      siteName: "ScanReceipts",
      title: c.title,
      description: c.description,
      locale: lang === "de" ? "de_DE" : "en_US",
      alternateLocale: lang === "de" ? "en_US" : "de_DE",
      images: [{ url: `${siteUrl}/screenshot-excel-summary.png`, width: 1507, height: 270 }],
      publishedTime: PUBLISHED,
    },
    twitter: { card: "summary_large_image", title: c.title, description: c.description },
    robots: {
      index: true,
      follow: true,
      googleBot: { index: true, follow: true, "max-image-preview": "large" },
    },
  };
}

export default async function Page({
  params,
}: {
  params: Promise<{ locale: string }>;
}) {
  const { locale } = await params;
  const lang: Locale = isLocale(locale) ? locale : "en";
  if (!isLocale(locale)) notFound();
  const isDe = lang === "de";
  const canonical = publicUrl(lang, ROUTE);

  const headline = isDe
    ? "Kassenbon in Excel umwandeln: Vom Foto zur fertigen Tabelle"
    : "Receipt to Excel: The Fastest Way From Photo to Spreadsheet";

  const jsonLd = {
    "@context": "https://schema.org",
    "@graph": [
      {
        "@type": "BreadcrumbList",
        itemListElement: [
          { "@type": "ListItem", position: 1, name: isDe ? "Start" : "Home", item: `${siteUrl}/${lang}` },
          { "@type": "ListItem", position: 2, name: "Blog", item: `${siteUrl}/${lang}/blog` },
          { "@type": "ListItem", position: 3, name: headline, item: canonical },
        ],
      },
      {
        "@type": "BlogPosting",
        "@id": canonical,
        headline,
        description: copy[lang].description,
        datePublished: PUBLISHED,
        dateModified: PUBLISHED,
        inLanguage: lang,
        mainEntityOfPage: canonical,
        image: `${siteUrl}/icon.png`,
        author: { "@type": "Organization", name: "ScanReceipts", url: siteUrl },
        publisher: {
          "@type": "Organization",
          name: "ScanReceipts",
          url: siteUrl,
          logo: { "@type": "ImageObject", url: `${siteUrl}/icon.png` },
        },
      },
    ],
  };

  return (
    <div className="flex min-h-screen flex-col bg-[#F6F9FF] text-[#161C22] font-sans">
      <script
        type="application/ld+json"
        dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd).replace(/</g, "\\u003c") }}
      />
      <Header />
      <main className="flex-1 w-full py-16">
        <article className="max-w-3xl mx-auto px-4 sm:px-8">
          <div className="mb-8">
            <div className="flex items-center gap-2 mb-3">
              <span className="w-2.5 h-2.5 bg-black" />
              <span className="font-mono text-xs uppercase tracking-caps font-semibold text-[#475569]">
                {isDe ? "PRAKTISCHER RATGEBER" : "PRACTICAL GUIDE"}
              </span>
            </div>
            <h1 className="font-display text-3xl sm:text-4xl lg:text-5xl font-bold tracking-tightest text-black leading-[1.05]">
              {headline}
            </h1>
            <p className="mt-4 font-mono text-xs uppercase tracking-caps text-[#64748B]">
              {isDe ? "Veröffentlicht am 19. August 2026" : "Published August 19, 2026"}
            </p>
          </div>

          <div className="mb-10 overflow-hidden border border-[#E2E8F0] bg-white">
            <Image
              src="/screenshot-excel-summary.png"
              alt={isDe ? "Screenshot: Excel-Übersichtsblatt mit Netto-, MwSt- und Bruttosummen sowie Plausibilitäts-Check" : "Screenshot: the Excel summary sheet with net, VAT and gross totals plus a plausibility check"}
              width={1507}
              height={270}
              className="w-full h-auto"
              priority
            />
          </div>

          {isDe ? (
            <div className="space-y-8 font-sans text-[#161C22] leading-relaxed">
              <p className="text-lg text-[#475569]">
                Ein Foto eines Kassenbons ist noch keine Tabelle. Es ist ein Bild – nützlich als
                Beleg, aber nutzlos, wenn du wissen willst, wie viel du diesen Monat im Supermarkt
                ausgegeben hast, wer dir noch Geld für das gemeinsame Abendessen schuldet, oder ob
                der Kassenbon für die defekte Kaffeemaschine noch irgendwo in deinem
                Handy-Fotoordner steckt. Der Unterschied zwischen einem Fotoordner voller Belege und
                einer echten Tabelle ist Struktur – und genau darum geht es in diesem Artikel.
              </p>

              <section>
                <h2 className="font-display text-2xl font-bold tracking-tight text-black mb-3">
                  Warum eine Excel-Tabelle aus Kassenbons überhaupt Sinn ergibt
                </h2>
                <p className="mb-3">
                  Die Gründe, Kassenbons in eine Tabelle zu überführen, sind vielfältiger, als man
                  zunächst denkt. Wer ein persönliches Budget führt, will am Monatsende sehen, wie
                  sich Ausgaben nach Kategorie und Händler verteilen – dafür braucht es Zahlen in
                  Spalten, nicht zwanzig Fotos in einer Galerie-App. Wohngemeinschaften und Paare,
                  die gemeinsame Einkäufe splitten, profitieren enorm davon, wenn jeder Einkauf als
                  eine Zeile mit Betrag, Datum und Händler vorliegt, statt am Monatsende Fotos
                  hin- und herzuschicken und zu raten, wer was bezahlt hat.
                </p>
                <p className="mb-3">
                  Auch bei Rückerstattungen – ob von einem Arbeitgeber, einer Versicherung oder
                  einfach von einem Freund, der dir Geld schuldet – ist eine saubere Tabelle mit
                  Datum, Betrag und Grund deutlich überzeugender als ein Stapel Fotos, durch die
                  jemand anders erst selbst durchklicken muss. Und dann ist da noch der ganz
                  praktische Alltag: Garantiefälle und Rückgaben, bei denen du plötzlich beweisen
                  musst, wann und wo du etwas gekauft hast. Wenn diese Information durchsuchbar in
                  einer Tabelle steht statt vergraben in tausend Handyfotos, ist sie in Sekunden statt
                  Minuten gefunden.
                </p>
                <p className="mb-3">
                  Nicht zuletzt geht es auch einfach um Ordnung: Ein Küchenschubfach voller
                  vergilbter Kassenzettel oder ein Kamera-Roll-Ordner mit hundert unbeschrifteten
                  Fotos ist Chaos, das sich mit der Zeit nur verschlimmert. Eine Tabelle mit klaren
                  Spalten ist das Gegenteil davon – sie bleibt übersichtlich, egal ob zehn oder
                  tausend Belege darin stehen.
                </p>
                <p>
                  Und wer wiederkehrende Muster erkennen will – wie viel im Schnitt für
                  Lebensmittel draufgeht, ob ein Abo teurer geworden ist, welcher Händler am
                  häufigsten auftaucht – braucht dafür Zahlen, die sich vergleichen lassen. Ein
                  einzelnes Foto zeigt immer nur einen Einkauf isoliert. Erst eine Tabelle mit vielen
                  Zeilen macht sichtbar, wie sich Ausgaben über Wochen und Monate entwickeln.
                </p>
              </section>

              <section>
                <h2 className="font-display text-2xl font-bold tracking-tight text-black mb-3">
                  Wie eine wirklich brauchbare Tabelle aussieht
                </h2>
                <p className="mb-3">
                  Der entscheidende Unterschied liegt zwischen einem Ordner voller Fotos und einer
                  Tabelle mit strukturierten Spalten. Ein Foto ist für einen Menschen lesbar, aber
                  für eine Tabellenkalkulation bedeutungslos – man kann es nicht sortieren, nicht
                  summieren, nicht nach Datum filtern. Eine brauchbare Kassenbon-Tabelle hat
                  stattdessen echte Spalten: Datum, Händlername, Gesamtbetrag, gegebenenfalls
                  einzelne Artikelpositionen mit Menge und Preis, und den Steuersatz als eigenes
                  Datenfeld.
                </p>
                <p>
                  Mit dieser Struktur kannst du in Excel plötzlich Dinge tun, die mit einem Foto
                  unmöglich sind: eine Summenformel über einen ganzen Monat ziehen, nach Händler
                  filtern, die teuersten Einkäufe sortieren oder eine Pivot-Tabelle für die
                  Kategorien bauen. Genau das ist der Punkt, an dem „ich habe die Belege
                  fotografiert" zu „ich habe einen Überblick über meine Ausgaben" wird.
                </p>
              </section>

              <section>
                <h2 className="font-display text-2xl font-bold tracking-tight text-black mb-3">
                  Warum eine Excel-Vorlage allein nicht reicht
                </h2>
                <p className="mb-3">
                  Eine gängige Lösung, nach der viele Leute suchen, ist eine fertige
                  Excel-Vorlage für Ausgaben – eine Tabelle mit vorgefertigten Spalten für Datum,
                  Händler und Betrag. Das Problem dabei: Eine Vorlage löst nur das Layout-Problem,
                  nicht das eigentliche Problem. Die Spalten stehen zwar schon da, aber du musst
                  trotzdem jeden einzelnen Wert von jedem einzelnen Kassenbon selbst ablesen und
                  eintippen. Bei fünf Belegen im Monat mag das noch machbar sein. Bei fünfzig wird
                  es schnell zu der Aufgabe, die man ewig vor sich herschiebt – und genau deshalb
                  landen die meisten Vorlagen irgendwann leer und ungenutzt.
                </p>
                <p className="mb-3">
                  Der eigentliche Zeitfresser ist nicht das Fehlen von Spalten, sondern das
                  manuelle Abtippen. Wer stattdessen direkt von einem Foto zu strukturierten Daten
                  kommt, überspringt genau diesen Schritt.
                </p>
                <p>
                  Hinzu kommt ein zweites, oft unterschätztes Problem beim Abtippen von Hand:
                  Zahlendreher passieren leicht, gerade bei langen Kassenbons mit vielen ähnlichen
                  Beträgen. Eine 19,80 € wird schnell versehentlich zu 91,80 €, ohne dass es beim
                  Eintippen auffällt. Eine Vorlage verhindert diesen Fehler nicht – sie macht ihn nur
                  etwas ordentlicher sichtbar.
                </p>
              </section>

              <section>
                <h2 className="font-display text-2xl font-bold tracking-tight text-black mb-3">
                  Vom Foto direkt zur Tabellenzeile
                </h2>
                <p className="mb-3">
                  <SeoLink lang={lang} to="home">
                    ScanReceipts
                  </SeoLink>{" "}
                  geht deshalb einen anderen Weg als eine leere Vorlage: Du fotografierst
                  einen Kassenbon, eine multimodale KI liest Händler, Datum, Gesamtbetrag,
                  Einzelpositionen und Steuersatz direkt aus dem Bild aus. Ein zweiter,
                  deterministischer Rechen-Check in TypeScript prüft danach, ob Netto, Steuer und
                  Brutto tatsächlich zusammenpassen und ob die Summe der Einzelposten mit dem
                  Gesamtbetrag übereinstimmt – stimmt etwas nicht, wird der Beleg zur Kontrolle
                  markiert, statt einfach übernommen zu werden.
                </p>
                <p>
                  Am Ende steht der Export als zweiblättrige Excel-Datei: ein Übersichtsblatt mit
                  lebenden Summenformeln und ein zweites Blatt mit allen Einzelpositionen – oder
                  wahlweise eine schlanke CSV-Datei. Das Ergebnis ist genau die strukturierte
                  Tabelle aus dem vorherigen Abschnitt, nur ohne dass du eine einzige Zahl selbst
                  eingetippt hättest.
                </p>
                <div className="mt-4 overflow-hidden border border-[#E2E8F0] bg-white">
                  <Image
                    src="/screenshot-excel-lineitems.png"
                    alt={isDe ? "Screenshot: Zweites Excel-Blatt mit allen Einzelpositionen eines Belegs" : "Screenshot: the second Excel sheet listing every line item from a receipt"}
                    width={1081}
                    height={387}
                    className="w-full h-auto"
                  />
                </div>
              </section>

              <section>
                <h2 className="font-display text-2xl font-bold tracking-tight text-black mb-3">
                  Spalten, die sich später wirklich auswerten lassen
                </h2>
                <p className="mb-3">
                  Viele selbst gebaute Tabellen scheitern nicht am Willen, sondern am Schema.
                  Eine Spalte „Notiz“ mit freiem Text sieht flexibel aus und ist später
                  unbrauchbar, weil du nicht danach filtern kannst. Besser ist ein schmales,
                  festes Set: Datum, Händler, Netto, Steuerbetrag, Steuersatz, Brutto,
                  Zahlungsart, optionale Kategorie, optionales Projekt. Alles, was nicht in
                  eine dieser Spalten passt, gehört in ein Kommentarfeld – nicht in die Summe.
                </p>
                <p className="mb-3">
                  Zwei Feinheiten, die in deutschen Tabellen ständig schiefgehen: das
                  Datumsformat und das Dezimaltrennzeichen. Wenn Excel „03.08.2026“ als Text
                  speichert, kannst du nicht nach Monat gruppieren. Wenn ein Export Kommas und
                  Punkte vermischt, zerlegt Excel 1.234,50 in zwei Spalten oder in 1.23. Genau
                  deshalb ist ein CSV mit UTF-8-BOM und Semikolon als Trenner für den Import in
                  deutsche Programme oft die sicherere Wahl – und ein Dual-Sheet-Excel mit
                  echten Zahlenformaten die bessere Wahl für eigene Auswertungen. Wie die
                  Zahlen überhaupt ins Blatt kommen, steht unter{" "}
                  <SeoLink lang={lang} to="ocr">
                    KI-Beleg-OCR
                  </SeoLink>
                  .
                </p>
                <p>
                  Wenn du Projekte oder Auftraggeber trennst – etwa Reisekosten für Kunde A und
                  Software für Kunde B – gehört das Projekt in eine eigene Spalte, nicht in den
                  Händlernamen. Sonst kannst du später weder nach Händler noch nach Projekt
                  sauber gruppieren. Für Freelancer, die das monatlich brauchen, ist der{" "}
                  <SeoLink lang={lang} to="freelancer">
                    Ausgaben-Tracker für Selbstständige
                  </SeoLink>{" "}
                  der direkte Weg, ohne das Schema jedes Mal neu zu erfinden.
                </p>
              </section>

              <section>
                <h2 className="font-display text-2xl font-bold tracking-tight text-black mb-3">
                  Warum zwei Blätter besser sind als eines
                </h2>
                <p className="mb-3">
                  Ein Blatt mit einer Zeile pro Beleg reicht, wenn du nur Monatssummen willst.
                  Es reicht nicht, wenn du wissen willst, warum ein REWE-Einkauf 87 € war oder
                  welche Position auf der MediaMarkt-Rechnung die teure war. Dafür brauchst du
                  ein zweites Blatt: eine Zeile pro Artikel, verknüpft über Belegdatum und
                  Händler oder eine interne Beleg-ID. Genau so ist der Dual-Sheet-Export von
                  ScanReceipts gebaut – Übersicht oben, Einzelpositionen darunter, mit
                  lebenden =SUM()-Formeln statt fest eingetippter Zahlen.
                </p>
                <p className="mb-3">
                  Praktisch heißt das: Du kannst auf dem Übersichtsblatt nach Monat oder
                  Händler filtern und auf dem Positionsblatt nach Artikeltext suchen. „Kaffee“
                  über drei Monate, „Diesel“ über ein Quartal, „Adobe“ über ein Jahr – das geht
                  nur, wenn die Positionen nicht in einer Zelle als Fließtext kleben. Wer
                  zusätzlich eine Pivot-Tabelle baut, sollte als Datenquelle das Positionsblatt
                  nehmen, nicht die Übersicht. Sonst zählst du Belege, nicht Waren.
                </p>
                <p>
                  PDF ist für diesen Zweck das falsche Format. Ein PDF ist ein Bericht zum
                  Weiterleiten, keine Datenquelle. CSV ist der Import-Weg in andere Programme.
                  Excel ist der Arbeitsplatz. Wer eine Suite wie Expensify vor allem wegen des
                  Exports nutzt, findet den schmaleren Weg in der{" "}
                  <SeoLink lang={lang} to="expensify">
                    Expensify-Alternative
                  </SeoLink>
                  .
                </p>
              </section>

              <section>
                <h2 className="font-display text-2xl font-bold tracking-tight text-black mb-3">
                  Vom Scan zur fertigen Monatsauswertung
                </h2>
                <p className="mb-3">
                  Ein sinnvoller Ablauf sieht so aus: den Monat über Belege fotografieren,
                  markierte Zeilen noch am selben Tag kurz prüfen, am Monatsletzten exportieren.
                  In Excel dann drei Dinge: Summe Brutto für den Monat, Aufschlüsselung nach
                  Händler, und – wenn du Kategorien pflegst – nach Kategorie. Mehr braucht ein
                  persönlicher Überblick selten. Wer hier schon Kontenrahmen und
                  Buchungssätze erwartet, ist in einer Rechnungssoftware besser aufgehoben,
                  nicht in einer Tabelle. Den Unterschied erklärt die{" "}
                  <SeoLink lang={lang} to="lexoffice">
                    Lexoffice-Alternative
                  </SeoLink>
                  .
                </p>
                <p>
                  Wichtig: Die Tabelle ersetzt kein Archiv. Der Scan gehört zum Datensatz dazu,
                  sonst hast du Zahlen ohne Nachweis. Wie du Foto und Daten zusammenhältst,
                  ohne in der Kamerarolle zu versinken, steht im Guide{" "}
                  <SeoLink lang={lang} to="organize">
                    Belege digitalisieren und organisieren
                  </SeoLink>
                  .
                </p>
              </section>

              <section>
                <h2 className="font-display text-2xl font-bold tracking-tight text-black mb-3">
                  Selbst ausprobieren
                </h2>
                <p>
                  Wie die KI-Erkennung im Detail funktioniert, erklären wir auf der Seite zu unserem{" "}
                  <SeoLink lang={lang} to="ocr">
                    OCR-Kassenbon-Scanner
                  </SeoLink>
                  . Oder probiere{" "}
                  <SeoLink lang={lang} to="home">
                    ScanReceipts
                  </SeoLink>{" "}
                  direkt aus und mach aus deinem nächsten Kassenbon in Sekunden eine fertige
                  Tabellenzeile statt eines weiteren Fotos im Ordner.
                </p>
              </section>
            </div>
          ) : (
            <div className="space-y-8 font-sans text-[#161C22] leading-relaxed">
              <p className="text-lg text-[#475569]">
                A photo of a receipt is not a spreadsheet. It's an image — useful as a record, but
                useless the moment you actually want to know how much you spent at the grocery
                store this month, who still owes you money for last night's dinner, or where the
                receipt for that broken coffee maker went in your camera roll. The gap between a
                folder full of photos and an actual spreadsheet comes down to one word: structure.
                That's what this guide is about.
              </p>

              <section>
                <h2 className="font-display text-2xl font-bold tracking-tight text-black mb-3">
                  Why turning receipts into a spreadsheet actually matters
                </h2>
                <p className="mb-3">
                  The reasons to move receipts into a spreadsheet are more varied than people
                  usually assume. If you keep a personal budget, you want to see at month's end how
                  spending breaks down by category and merchant — and that requires numbers in
                  columns, not twenty photos scattered across a camera roll. Roommates and couples
                  splitting shared groceries or bills benefit enormously from having every purchase
                  as a row with an amount, a date, and a merchant, instead of texting photos back
                  and forth and trying to remember who paid for what.
                </p>
                <p className="mb-3">
                  Reimbursement is another everyday case — whether it's from an employer, an
                  insurance claim, or simply a friend who owes you money. A clean spreadsheet with
                  date, amount, and reason is far more convincing than a stack of photos someone
                  else has to scroll through and squint at. Then there's the very practical case of
                  warranty claims and returns, where you suddenly need to prove exactly when and
                  where you bought something. When that information sits in a searchable spreadsheet
                  instead of buried among a thousand unlabeled photos, you find it in seconds instead
                  of digging for ten minutes.
                </p>
                <p className="mb-3">
                  And finally, there's the simple case of not wanting clutter. A junk drawer full of
                  faded paper slips, or a camera roll with a hundred unlabeled photos, is a mess that
                  only gets worse over time. A spreadsheet with clear columns is the opposite — it
                  stays just as manageable whether it holds ten receipts or ten thousand.
                </p>
                <p>
                  There's also a pattern-recognition benefit that a single photo simply can't give
                  you: if you want to know whether your average grocery spend crept up this year, or
                  which merchant you actually spend the most at, you need rows you can compare side
                  by side, not one isolated image at a time. A spreadsheet is what turns a pile of
                  individual purchases into a picture of a trend.
                </p>
              </section>

              <section>
                <h2 className="font-display text-2xl font-bold tracking-tight text-black mb-3">
                  What a genuinely useful receipt spreadsheet looks like
                </h2>
                <p className="mb-3">
                  The real distinction is between a folder of photos and a spreadsheet with
                  structured columns. A photo is readable by a human but meaningless to a
                  spreadsheet program — you can't sort it, sum it, or filter it by date. A useful
                  receipt spreadsheet instead has actual columns: date, merchant name, total amount,
                  ideally individual line items with quantity and price, and the tax rate as its own
                  data field.
                </p>
                <p>
                  With that structure in place, you can suddenly do things in Excel that are
                  impossible with a photo: run a sum formula across an entire month, filter by
                  merchant, sort your biggest purchases, or build a pivot table by category. That's
                  the exact moment "I took photos of my receipts" turns into "I actually have a
                  picture of where my money went."
                </p>
              </section>

              <section>
                <h2 className="font-display text-2xl font-bold tracking-tight text-black mb-3">
                  Why a receipt excel template alone doesn't solve it
                </h2>
                <p className="mb-3">
                  A common thing people search for is a ready-made receipt excel template — a
                  spreadsheet with pre-built columns for date, merchant, and amount. The problem is
                  that a template only solves the layout problem, not the actual problem. The
                  columns are already there, but you still have to read every single value off every
                  single receipt and type it in yourself. With five receipts a month, that's
                  manageable. With fifty, it quickly becomes the task you keep putting off — which is
                  exactly why most downloaded templates end up empty and abandoned within a few
                  weeks.
                </p>
                <p className="mb-3">
                  The real time sink was never the missing columns. It's the manual retyping. Going
                  directly from a photo to structured data skips that step entirely.
                </p>
                <p>
                  Manual retyping also introduces the exact kind of small errors that are easy to
                  miss: transposed digits, a misplaced decimal point, a total copied from the wrong
                  line. None of that is a template's fault — it's simply what happens when a human
                  re-keys the same numbers a receipt already contains. A blank template can't catch
                  those mistakes; it just gives them a tidier home.
                </p>
              </section>

              <section>
                <h2 className="font-display text-2xl font-bold tracking-tight text-black mb-3">
                  From photo straight to a spreadsheet row
                </h2>
                <p className="mb-3">
                  This is why{" "}
                  <SeoLink lang={lang} to="home">
                    ScanReceipts
                  </SeoLink>{" "}
                  takes a different approach than a blank template: you
                  photograph a receipt, and a multimodal AI model reads the merchant, date, total
                  amount, individual line items, and tax rate directly off the image. A second,
                  independent step — a deterministic arithmetic check written in plain TypeScript —
                  then verifies that the net amount, tax, and gross total actually add up, and that
                  the line items sum to the stated total. Anything that doesn't reconcile gets
                  flagged for you to review instead of being silently accepted.
                </p>
                <p>
                  What comes out the other end is a dual-sheet Excel export: a summary sheet with
                  live sum formulas, and a second sheet with every line item broken out — or, if you
                  prefer, a lean CSV file. That's exactly the structured spreadsheet described above,
                  without you having typed a single number yourself.
                </p>
                <div className="mt-4 overflow-hidden border border-[#E2E8F0] bg-white">
                  <Image
                    src="/screenshot-excel-lineitems.png"
                    alt={isDe ? "Screenshot: Zweites Excel-Blatt mit allen Einzelpositionen eines Belegs" : "Screenshot: the second Excel sheet listing every line item from a receipt"}
                    width={1081}
                    height={387}
                    className="w-full h-auto"
                  />
                </div>
              </section>

              <section>
                <h2 className="font-display text-2xl font-bold tracking-tight text-black mb-3">
                  Columns you can actually analyze later
                </h2>
                <p className="mb-3">
                  A lot of homemade spreadsheets fail not from lack of will, but from a weak
                  schema. A free-text "Notes" column looks flexible and later becomes useless,
                  because you cannot filter on it. A slim, fixed set works better: date,
                  merchant, net, tax amount, tax rate, gross, payment method, optional
                  category, optional project. Anything that does not fit one of those columns
                  belongs in a comment — not in the sum.
                </p>
                <p className="mb-3">
                  Two details that constantly break German (and many European) sheets: date
                  format and the decimal separator. If Excel stores "03.08.2026" as text, you
                  cannot group by month. If an export mixes commas and periods, Excel splits
                  1.234,50 into two columns or into 1.23. That is why a CSV with a UTF-8 BOM
                  and semicolon delimiters is often the safer import into German software —
                  and a dual-sheet Excel with real number formats is the better workplace for
                  your own analysis. How the numbers get into the sheet at all is covered on{" "}
                  <SeoLink lang={lang} to="ocr">
                    AI receipt OCR
                  </SeoLink>
                  .
                </p>
                <p>
                  If you split projects or clients — travel for client A, software for client
                  B — the project belongs in its own column, not inside the merchant name.
                  Otherwise you cannot group cleanly by merchant or by project later.
                  Freelancers who need that every month get it without reinventing the schema
                  from the{" "}
                  <SeoLink lang={lang} to="freelancer">
                    expense tracker for the self-employed
                  </SeoLink>
                  .
                </p>
              </section>

              <section>
                <h2 className="font-display text-2xl font-bold tracking-tight text-black mb-3">
                  Why two sheets beat one
                </h2>
                <p className="mb-3">
                  One sheet with a row per receipt is enough if you only want monthly totals.
                  It is not enough if you want to know why a grocery run was $87 or which line
                  on an electronics invoice was the expensive one. That needs a second sheet:
                  one row per item, joined by date and merchant or by an internal receipt id.
                  That is how ScanReceipts' dual-sheet export is built — summary on top, line
                  items below, with live =SUM() formulas instead of hardcoded numbers.
                </p>
                <p className="mb-3">
                  In practice that means you can filter the summary by month or merchant and
                  search the line-item sheet by product text. "Coffee" across three months,
                  "diesel" across a quarter, "Adobe" across a year — that only works if items
                  are not glued into one cell as prose. If you also build a pivot table, use
                  the line-item sheet as the source, not the summary. Otherwise you count
                  receipts, not goods.
                </p>
                <p>
                  PDF is the wrong format for this job. A PDF is a report to forward, not a
                  data source. CSV is the import path into other software. Excel is the
                  workplace. If you mainly use a suite like Expensify for the export, the
                  narrower path is in the{" "}
                  <SeoLink lang={lang} to="expensify">
                    Expensify alternative
                  </SeoLink>
                  .
                </p>
              </section>

              <section>
                <h2 className="font-display text-2xl font-bold tracking-tight text-black mb-3">
                  From scan to a finished month view
                </h2>
                <p className="mb-3">
                  A workable loop looks like this: photograph receipts through the month,
                  review flagged rows the same day, export on the last day. In Excel then do
                  three things: sum gross for the month, break down by merchant, and — if you
                  keep categories — by category. A personal overview rarely needs more. If you
                  already expect a chart of accounts and journal entries, you belong in
                  invoicing software, not in a spreadsheet. That distinction is in the{" "}
                  <SeoLink lang={lang} to="lexoffice">
                    Lexoffice alternative
                  </SeoLink>
                  .
                </p>
                <p>
                  One more thing: the sheet does not replace an archive. The scan belongs with
                  the row, or you have numbers without proof. How to keep photo and data
                  together without drowning in a camera roll is in{" "}
                  <SeoLink lang={lang} to="organize">
                    how to digitize and organize receipts
                  </SeoLink>
                  .
                </p>
              </section>

              <section>
                <h2 className="font-display text-2xl font-bold tracking-tight text-black mb-3">
                  Try it yourself
                </h2>
                <p>
                  For more detail on how the extraction works, see our{" "}
                  <SeoLink lang={lang} to="ocr">
                    OCR receipt scanner
                  </SeoLink>
                  . Or try{" "}
                  <SeoLink lang={lang} to="home">
                    ScanReceipts
                  </SeoLink>{" "}
                  directly and turn your next receipt into a finished spreadsheet row in seconds,
                  instead of another photo sitting in a folder.
                </p>
              </section>
            </div>
          )}

          <RelatedReading
            lang={lang}
            keys={["ocr", "organize", "freelancer", "expensify"]}
          />
        </article>
      </main>
      <Footer />
    </div>
  );
}
