A signed receipt is not a posting instruction. Fiscal402 now emits a generic AccountingExport so a controller can post without rebuilding tax context from the payment rail.
What it is
fiscal402.accounting-export/1 is a two-sided EUR journal: accounts receivable, revenue, and output VAT when applicable. Amounts are integer minor units taken from the receipt FX split. No re-quote. No guessed rates.
| Claim | Status |
|---|---|
| Generic JSON journal | Implemented |
| Generic CSV journal | Implemented |
| NetSuite / SAP / Xero / Exact / QuickBooks | Not implemented |
| Peppol / SDI / KSeF / PDP | Not implemented |
| Tax filing or remittance | Not implemented |
Prerequisite
Export only after the receipt verifies. VERIFIED is cryptographic integrity, not tax-authority acceptance.
Consumer call
mapToAccountingEntry.ts
import { verifyReceipt } from "@fiscal402/verify"; // source only, not on npm
import { mapToAccountingEntry } from "./accounting";
const report = await verifyReceipt({ receipt, jwks, ubl });
if (report.result !== "VERIFIED") throw new Error("do_not_post");
const journal = mapToAccountingEntry(receipt);
// journal.lines is a balanced EUR journal