Skip to Content

Invoice Pilot

Invoice Pilot udvider WooCommerce med landebevidst fakturering til EU’s 27 medlemslande. Det opfanger de rigtige fakturafelter ved checkout (italienske SDI-/PEC-koder, fransk SIRET, tysk Leitweg-ID, polsk NIP, rumænsk CUI osv.) og udsteder uforanderlige PDF- og XML-fakturaer, kreditnotaer, proformaer og tilbud direkte fra ordren. PDF’en renderes med mPDF; XML-konvolutten vælges automatisk ud fra køberens land og dækker elleve nationale profiler, heriblandt FatturaPA (IT), XRechnung (DE), KSeF FA(2) (PL), Factur-X (FR), CIUS_RO (RO), Facturae (ES) og UBL 2.1 / PEPPOL BIS 3.0 som generisk fallback.

Ud over selve dokumentmotoren leverer Invoice Pilot førsteklasses integrationer med seks regnskabsudbydere — SmartBill (Rumænien), Fatture in Cloud (Italien), Xero, QuickBooks Online, Fortnox (Sverige) og Sage — en VAT-validator, der slår op i den europæiske VIES-tjeneste med en fallback til format-tjek pr. land, et dashboard med KPI-kort og trendgrafer samt et valgfrit multi-provider AI-lag (Anthropic Claude, OpenAI, Google Gemini, DeepSeek, Grok xAI) til smart-fill ved checkout, pre-flight compliance-tjek, oversættelse af linjer og natursprog-dokumentsøgning. Pluginet understøtter også WordPress Multisite med tabeller pr. site og en oversigtsside for hele netværket.

Højdepunkter

  • WooCommerce-drevet dokumentlivscyklus for fakturaer, kreditnotaer, proformaer og tilbud, med reserverede nummerserier, et rent flow for udsted / regenerér / genudsted / annullér / kreditnota og styling pr. dokumenttype (disclaimer-banner på ikke-fiskale dokumenter, “Gyldig til”-mærkater på tilbud, “Refunderet total” på kreditnotaer, betalingsblok skjult på tilbud og kreditnota).
  • Landespecifikke fakturafelter for EU-27, registreret både mod den klassiske shortcode-checkout og WooCommerce 8.6+ blok-checkout (via Additional Checkout Fields API).
  • PDF-rendering via mPDF med en af tre medfølgende skabeloner (Minimal, Classic, Modern) og vælgere til accentfarve, tekstfarve, skrifttype og sælgerlogo.
  • Elleve XML-writere, valgt automatisk ud fra køberlandet: FatturaPA (IT), Factur-X / CII (FR), XRechnung 3.0 (DE), KSeF FA(2) (PL), CIUS_RO 1.0.0 (RO), Facturae 3.2.2 (ES), SAF-T PT (PT), OIOUBL (DK), Finvoice 3.0 (FI), ebInterface 6.1 (AT), myDATA InvoicesDoc (GR / EL) — med UBL 2.1 / PEPPOL BIS 3.0 som universel fallback.
  • VAT-valideringskæde, der kombinerer den europæiske VIES-SOAP-tjeneste med offline regex-validering pr. land, en DB-baseret cache og en timeligt cron, der revaliderer forældede poster.
  • Seks regnskabsintegrationer — SmartBill, Fatture in Cloud, Xero, QuickBooks Online, Fortnox og Sage — hver med krypterede credentials, push-/status-/annullér-operationer og en retry-kø. Fanen Integrationer bruger en sticky provider-vælger, så det panel, du var i gang med at konfigurere, forbliver åbent på tværs af gem.
  • Valgfrit AI-lag med fem providere (Anthropic, OpenAI, Google Gemini, DeepSeek, Grok xAI), der dækker smart-fill, compliance-tjek, linjeoversættelse og natursprogssøgning; pluginet virker fuldt uden en API-nøgle.
  • Dashboard med periodevælger, fem KPI-kort og to trendgrafer; en separat integrations-log registrerer hvert push og hver fejl.
  • WordPress Multisite-understøttelse — hvert under-site har sine egne tabeller, indstillinger og nummerings-tællere, og en netværks-admin-side aggregerer statistik.

Krav

KomponentMinimum
WordPress5.8 (testet op til 7.0)
PHP8.0
WooCommerce7.0
DatabaseMySQL 5.7 eller MariaDB 10.2 (dashboardets SQL bruger JSON_EXTRACT / JSON_UNQUOTE mod den uforanderlige snapshot-kolonne)

Blok-checkout-integrationen er registreret mod WooCommerce’ Additional Checkout Fields API (introduceret i WooCommerce 8.6). På ældre WooCommerce-versioner tilføjer det klassiske filter woocommerce_billing_fields stadig VAT-, tax-code- og landespecifikke felter til shortcode-checkout, så pluginet degraderer pænt.

Installation

  1. Hent den seneste Invoice Pilot-ZIP fra GitHub-siden Releases .
  2. Åbn i WordPress Plugins → Tilføj nyt → Upload plugin.
  3. Vælg ZIP-filen, og klik på Installer nu.
  4. Klik på Aktiver plugin.
  5. Åbn Invoice Pilot → Indstillinger for at konfigurere sælger, nummerserier og valgfri integrationer.

Aktivering opretter pluginets databasetabeller, installerer standardindstillingerne og seeder fem nummerserier (én pr. dokumenttype): INV (faktura, standard), REC (kvittering), CN (kreditnota), PRO (proforma) og Q (tilbud), alle med mønsteret YYYY-NNNN og årlig nulstilling. Fire cron-jobs planlægges også: daglig log-oprydning, retry hvert kvarter for fejlede integrations-pushes, timeligt VIES-revalidering og daglig refresh af Fatture in Cloud-token.

På WordPress Multisite kører samme per-site-bootstrap automatisk, når et nyt under-site oprettes (wp_initialize_site).

Konfiguration

Alle Invoice Pilot-skærme ligger under topmenuen Invoice Pilot i WordPress’ admin-sidebar:

  • Dashboard — KPI-kort og trendgrafer.
  • Dokumenter — moderne data-grid med hvert udstedt dokument (faktura, kreditnota, proforma, tilbud, kvittering), en samlet værktøjslinje (AI-søgning + typefilter), farvede status-pills (betalt / annulleret / konverteret / kladde / udstedt), paginering med 20 rækker og PDF- / XML- / Slet-handlinger inline.
  • Indstillinger — konfigurationsside med otte faner (dokumenteret nedenfor).
  • Log — integrations-log-poster med opbevaring og en manuel oprydningshandling.

Indstillingssiden er opdelt i følgende faner i den rækkefølge, de optræder:

  1. Generelt
  2. Serier
  3. Dokumenttyper
  4. Skabeloner
  5. VAT-validering
  6. Integrationer
  7. AI
  8. Avanceret

Generelt

Invoice Pilot — Indstillinger, Generelt-fanen
Indstillinger → Generelt — Licensnøgle, sælgeridentitet og dokument-standarder.

Generelt-fanen er delt i tre kort: Licens, Sælgerdetaljer og Dokument-standarder.

Licens

FeltBemærkninger
LicensnøgleIndsæt din PILOT-XXXX-XXXX-XXXX-XXXX-nøgle fra ordrebekræftelsen, og tryk på Verificer og gem for at slå automatiske plugin-opdateringer fra GitHub-release-feedet til. Pluginet udsteder fortsat dokumenter uden en nøgle; kun den automatiske opdateringskanal er låst.

Sælgerdetaljer rummer identiteten, der trykkes på hvert udstedt dokument; Dokument-standarder rummer et lille antal WooCommerce-niveau-defaults.

FeltStandardBemærkninger
Sælgers navntomtFri tekst.
VATtomtSælgers VAT-identifier.
SkattekodetomtItaliensk codice fiscale eller tilsvarende.
AdressetomtVej.
Postnummer / CAPtomtPostnummer.
Bytomt
Provins (2 bogstaver, kun IT)tomtTvinges til store bogstaver ved gem.
Land (ISO, 2 bogstaver)ITISO-3166-1 alpha-2; tvinges til store bogstaver.
E-mailtomtValideres som en mailadresse.
LogotomtVælges fra WordPress’ mediebibliotek. PNG eller SVG med gennemsigtig baggrund virker bedst; anbefalet højde 64–128px. Logoet trykkes øverst til højre på fakturaen.
IBANtomtBruges af writere, der udsender betalingsinstruktioner. Trykkes i fakturaens footer og indlejres i <DatiPagamento> i FatturaPA.
BanknavntomtFri tekst — trykkes under IBAN i fakturaens footer og udsendes som <IstitutoFinanziario> inde i <DettaglioPagamento>-blokken i FatturaPA.
SWIFT / BICtomt8 eller 11 alfanumeriske tegn; tvinges til store bogstaver og strippes for whitespace ved gem. Trykkes ved siden af IBAN og udsendes som <BIC> i FatturaPA.
Trigger-statusprocessingWooCommerce-ordrestatus, der udløser automatisk fakturering. Tilladte værdier: processing, completed, on-hold, pending.
StandardserieINVSlug for den nummerserie, nye fakturaer bruger.
VAT-nummerformat på PDFMed præfiks — VAT IT04032690614 (VIES-stil, anbefalet)Hvordan sælgerens VAT-nummer trykkes på den renderede faktura og PDF-preview. Værdier: Med præfiks (landekoden foran nummeret, der spejler VIES-stilen), Bare (kun nummeret, som indtastet under Sælgerdetaljer → VAT). Standard er Med præfiks.
Landespecifikke faktureringsfelterKun Italien (SDI / PEC / fiscal regime)Tri-state-vælger, der styrer, hvilke landespecifikke felter der vises ved checkout. Værdier: Fra — kun de universelle VAT- og skattekode-felter vises, Kun Italien (SDI / PEC / fiscal regime), Alle EU-27 landespecifikke felter. Gælder både blok-checkout og den klassiske shortcode-checkout. Hvert felt har en oversættelig label (fx SDI recipient code, Certified email (PEC), SIRET, Steuernummer) — de gamle rå snake_case-navne er væk.

Serier

Invoice Pilot — Indstillinger, Serier-fanen
Indstillinger → Serier — CRUD-tabel over nummerserier med mønster, tæller og reset-strategi pr. type.

Serier-fanen er en CRUD-tabel over nummerserier, som ligger i pluginets egen series-tabel. Hver række styrer, hvordan dokumenter af en given type nummereres.

Kolonner: Slug, Mønster, Tæller, Reset, Standard, Aktiv, Handlinger (Rediger / Slet).

Tilføj-/Rediger-formularen viser:

FeltTilladte værdierStandard
SlugIdentifier i små bogstaver. Skal være unik.tomt
Dokumenttypeinvoice, receipt, credit_note, proforma, quote.invoice
MønsterFri tekst; placeholders {YYYY} (år) og {NNNN} (tæller) udvides ved udstedelse.INV-{YYYY}-{NNNN}
TællerHeltal, ét eller højere. Næste nummer der tildeles — det allerførste dokument udstedt fra denne serie bruger præcis denne værdi (så Tæller = 47 udsteder næste faktura som INV-2026-0047, ikke INV-2026-0048).1
Reset-strateginever, yearly.never
StandardBoolean — markér denne serie som standard for nye dokumenter af denne type.fra
AktivBoolean — tillad, at serien bruges.til

At omdøbe en slug opdaterer serie-rækken på plads (det interne id og referencer bevares) og migrerer indstillingen default_series automatisk, hvis den pegede på den gamle slug. At slette en serie fjerner ikke eksisterende dokumenter; de beholder deres numre.

Dokumenttyper

Invoice Pilot — Indstillinger, Dokumenttyper-fanen
Indstillinger → Dokumenttyper — valgfri dokumenttyper og FatturaPA bollo-/ritenuta-standarder.

Fanen Dokumenttyper slår valgfri dokumenttyper til og fra og viser de FatturaPA-specifikke bollo- og ritenuta-indstillinger.

Dokumenttyper-kort

KontaktStandardBeskrivelse
Auto-udsted kreditnota ved WC-refusiontilNår en WooCommerce-refusion oprettes, udsted automatisk en kreditnota knyttet til den oprindelige faktura.
Aktivér proforma-dokumentertilVis en “Opret proforma”-knap på WC-ordreskærmen, og tillad konvertering til faktura.
Aktivér tilbud (preventivo)tilVis en “Opret tilbud”-knap på WC-ordreskærmen. Tilbud er ikke-fiskale: en PDF produceres, men ingen XML.

FatturaPA — italiensk B2B-kort

FeltStandardBeskrivelse
Bollo virtuale assoltofraUdsend DatiBollo (2,00 EUR virtuelt stempel) på fakturaer over 77,47 EUR, når forpligtelsen er anmeldt til Agenzia delle Entrate.
Anvend Ritenuta d’accontofraBeregn og udsend DatiRitenuta på fakturaer til italienske B2B-købere.
Standardsats20.00 %0–100, trin 0,01.
Tipo ritenutaRT02RT01 (persone fisiche) eller RT02 (persone giuridiche).
Causale pagamentoAEnkelt stort bogstav fra SDI-tabellen 1.1.5.2 (f.eks. A = professionelle ydelser).

Skabeloner

Invoice Pilot — Indstillinger, Skabeloner-fanen
Indstillinger → Skabeloner — radiovælger til Minimal / Classic / Modern, vælgere til farver og typografi samt en live PDF-preview nedenfor (preview-iframen er fanget separat, se nedenfor).

Vælg én af tre medfølgende PDF-skabeloner, og tilpas dens farver og typografi.

SkabelonBeskrivelse
MinimalRent sans-serif-layout med teal-accent. Standard.
ClassicSerif-typografi med et farvet header-bånd. Klassisk look til professionelle services.
ModernTospaltet header og afrundede kort. Velegnet til design-tunge brands.

Yderligere felter:

FeltStandardBemærkninger
Primærfarve#1e8a8aNative HTML5-farvevælger; accent til overskrifter, dividere og tabel-headers.
SkrifttypeSite theme font (system stack)En af: default, dejavusans, dejavuserif, dejavusansmono, helvetica, times, courier. Værdien default bruger sitets systemfont-stack med DejaVuSans som PDF-fallback.
Tekstfarve#222222Standardfarve på brødtekst. Dæmpede billedtekster og footers beholder deres lysere tone.

Fanen indlejrer også en live PDF-preview (renderet mod REST-endpointet /wp-json/invoice-pilot/v1/preview-template), så du kan sammenligne skabeloner side om side, før du gemmer. Et skift af radio udveksler iframen straks; valget gemmes først, når du klikker på Gem skabelon.

Invoice Pilot — live PDF-preview (Modern-skabelonen, faktura)
Live-preview renderet gennem mPDF — Modern-skabelonen, dokumenttypen faktura, dine rigtige sælgerdetaljer (logo, primærfarve, IBAN) og en eksempelkøber / -linjer.

En Dokumenttype-vælger sidder over iframen, så du kan se, hvordan hver af de fire dokumenttyper renderes — invoice, credit_note, proforma, quote — med samme skabelon, eksempel-sælger og eksempel-køber. Forskellene pr. type er:

TypeTitelNummerpræfiksStatus-pilleDisclaimer-bannerBetaling / IBAN
invoiceFakturaINV-ISSUEDvises
credit_noteKreditnotaCN-CREDIT NOTERefund of INV-…skjules
proformaProformaPRO-PROFORMAProforma — not a fiscal document.vises
quoteTilbudQ-QUOTEQuote — not a fiscal document, subject to acceptance.skjules

Tilbud omdøber desuden de fremtrædende “Issued”-/“Due date”-celler til Valid until og hero-totalen til Estimated total; kreditnotaer omdøber den til Refund total. Forskellene kommer fra en label-overstyringskort pr. type og en doc_type_context()-helper, der fødes ind i template-engine, så de tre medfølgende designs (Minimal / Classic / Modern) bevarer en konsistent visuel identitet på tværs af dokumenttyper uden at duplikere skabelonfiler.

Footeren skriver altid køberens land på sin fulde engelske form (f.eks. Germany, ikke DE) — ISO-koden fra ordren bliver oversat via PHP’s Locale::getDisplayRegion() før rendering, hvilket holder den renderede faktura læsbar for både menneskelige købere og skatterevisorer. Selve sælgerens VAT trykkes ifølge VAT-nummerformat på PDF under Generelt → Dokument-standarder — standardværdien er den VIES-stil-præfikserede form (VAT IT04032690614), med en Bare-mulighed for jurisdiktioner, der foretrækker nummeret uden præfiks.

Dispatcheren, der vælger den rigtige XML-konvolut pr. køberland, er filteret invoice_pilot_xml_writer_for_country, så host-kode kan overstyre pr. ISO (se Hooks og filtre).

VAT-validering

Invoice Pilot — Indstillinger, VAT-validering-fanen
Indstillinger → VAT-validering — validatorkæde (VIES + format pr. land), cache-TTL og -state, reverse-charge-kontakter, live tester og EU-27 standard-rate-seeder.

VAT-identifiers indtastet ved checkout (og på enhver adresseskærm, der viser feltet) køres gennem en kæde af validatorer. Hver validator slås til af en uafhængig kontakt og kører i rækkefølge, indtil én returnerer et positivt svar; både positive og negative svar caches i den konfigurerede TTL.

ValidatorStandardBeskrivelse
VIES (EU SOAP)tilKrydstjekker EU-VAT-numre mod den europæiske VIES-tjeneste.
Format pr. landtilOffline regex-validering pr. land. Anbefales altid som fallback.
FeltStandardOmråde / Bemærkning
Cache-TTL (timer)241720. Fejlede VIES-opslag ældre end 6 timer revalideres af det timelige cron.
Intra-EU B2B reverse chargetilNår køberen er i en anden EU-medlemsstat end sælgeren og indtaster et VAT-nummer, kæden bekræfter som gyldigt, nulstiller WooCommerce momsen i kurven automatisk (køberen selv-bogfører momsen i sit eget land). VAT-feltet får også et live-badge — grønt ✓ ved succes, rødt ✕ ved fejl.
Fradrag VAT hvis kunden er i basislandetfraDe fleste jurisdiktioner tillader IKKE dette — lad det stå slået fra, medmindre du har et specifikt skatteråd, der siger, det gælder din virksomhed. Når slået til, udløser en gyldig indenlandsk B2B-VAT også reverse-charge-fradraget på indenlandske salg.

En read-only Cache-state-række rapporterer antal cachede poster, og hvor mange der er udløbet og afventer udsmidning.

Test VAT-validering — et lille tester-kort under indstillingerne kører hver provider direkte mod et enkelt VAT-nummer, springer kædens rækkefølge og cachen over, så du kan se, om VIES faktisk bekræftede nummeret, eller om det kun var offline-formattjekket, der gjorde det.

Seed EU-27 standard-momssatser — kortet i bunden udfylder WooCommerce → Indstillinger → Skat → Standardsatser med den aktuelle standard-momssats for hvert EU-27-medlemsland (AT 20% BE 21% BG 20% HR 25% CY 19% CZ 21% DK 25% EE 22% FI 25.5% FR 20% DE 19% GR 24% HU 27% IE 23% IT 22% LV 21% LT 21% LU 17% MT 18% NL 21% PL 23% PT 23% RO 21% SK 23% SI 22% ES 21% SE 25%). Som standard indsættes kun manglende lande; sæt flueben i Overskriv eksisterende satser for at tvinge hver række til den kanoniske værdi (nyttigt efter EU justerer en national sats). Kortet lister også hvert (ISO, sats)-par, så du ser præcist, hvad der skrives, før du trykker på knappen.

Integrationer

Fanen Integrationer renderer ét panel pr. registreret integrations-provider bag en enkelt Provider-vælger øverst — vælg den provider, du vil konfigurere, og kun dens kort er synligt, de øvrige bliver i DOM’en, blot skjult. Vælgeren er sticky på tværs af formular-gem: når du gemmer en providers formular (eller lander på fanen med ?integration=<id> i URL’en), beholder næste render den provider valgt, så du ikke kastes tilbage til den, der står først i registreringsrækkefølgen.

Som standard leverer Invoice Pilot seks providere; tredjeparts-kode kan registrere flere via filteret invoice_pilot_integration_providers.

Hvert provider-panel afsluttes med et Connection Status-kort med en Test Connection-knap. Knappen sender et let kald mod de gemte credentials og udskriver upstream-svaret — gem formularen først, hvis du lige har indsat nye tokens.

SmartBill

Invoice Pilot — Integrationer, SmartBill-panelet
Integrationer → SmartBill — aktivér-kontakt, API-brugernavn, krypteret token, CIF og serie.

Rumænsk faktureringsudbyder. Credentials krypteres at rest via pluginets symmetriske krypto-lag.

FeltStandardBemærkninger
Aktivér SmartBillfraPush udstedte fakturaer til SmartBill, så snart de er udstedt.
API-brugernavntomtDet brugernavn, du logger ind på SmartBill med.
TokentomtIndsæt din SmartBill-API-token. Den gemte værdi er krypteret; lad feltet være tomt ved efterfølgende gem for at beholde den.
CIF (firma)tomtRumænsk firma-VAT-kode.
SerietomtSmartBill-serien, pushede fakturaer bruger.

Når slået til, kalder Invoice Pilot POST /SBORO/api/v2/invoice ved udstedelse, derefter pull_status til afstemning og void, når en faktura annulleres.

Fatture in Cloud

Invoice Pilot — Integrationer, Fatture in Cloud-panelet
Integrationer → Fatture in Cloud — OAuth-tokens, firma-id og kontakten Opret kunder.

Italiensk faktureringsudbyder. OAuth-tokens opbevares krypteret. Det daglige cron invoice_pilot_refresh_fic_token opdaterer access-tokenet automatisk, når integrationen er slået til.

FeltStandardBemærkninger
Aktivér Fatture in CloudfraPush udstedte dokumenter (fakturaer, kreditnotaer, proforma, tilbud) til Fatture in Cloud, så snart de er udstedt.
Client IDtomtOAuth-klient-identifier.
Access tokentomtIndsæt OAuth-access-tokenet. Den gemte værdi er krypteret; lad feltet være tomt ved efterfølgende gem for at beholde den.
Refresh tokentomtSamme håndtering som access-tokenet.
Company ID0Numerisk firma-identifier i din Fatture in Cloud-konto.
Opret kundertilOpret automatisk en kunde-post på FIC, når en ny køber faktureres.

I henhold til Fatture in Clouds produktpolitik sender Invoice Pilot ikke FatturaPA til SDI for dig. SDI-indsendelse er overladt til et separat manuelt trin inde fra din FIC-konto.

Xero

Invoice Pilot — Integrationer, Xero-panelet
Integrationer → Xero — øverst: panel til ét-klik-forbindelse med redirect-URI’en, der skal registreres på developer.xero.com. Nederst: app-credentials og standarder for adfærd. Derunder: en sektion Connection Status med en live Test Connection-knap.

Global regnskabsplatform. OAuth 2.0-tokens krypteres at rest. Indstillingsfanen er opdelt i Connection (status + knapperne Connect / Disconnect) øverst og Settings (app-credentials + push-adfærd) nedenunder.

Tilslutning

Invoice Pilot kommer med et indbygget OAuth-flow — du behøver ikke længere udføre dansen i Postman og indsætte fire strenge i formularen. End-to-end-opsætningen er:

  1. Opret en Web-app på developer.xero.com  med den redirect-URI, der vises i Connection-panelet — kopiér den ordret, Xero matcher den tegn-for-tegn. Apps oprettet efter 2. marts 2026 kan kun anmode om det granulære scope-sæt; Invoice Pilot vælger det rigtige automatisk.
  2. Generér en Client secret på Xero-app-siden (Xero viser den kun én gang), indsæt derefter Client ID og Client secret i Settings-formularen og gem.
  3. Klik på Connect to Xero. Du sendes gennem den almindelige samtykkeskærm, og hvis din konto autoriserer mere end én organisation, omdirigeres du til en in-card-vælger, hvor du kan vælge målet tenant. Tokens udveksles + gemmes automatisk.
  4. Disconnect rydder access- og refresh-tokens samt tenant-id’et, men beholder app-credentials, så det er nemt at genoprette forbindelsen.

Pushes bruger POST /Invoices med standardheaderen Idempotency-Key, der udledes af det lokale faktura-id + nummer, så et netværks-retry falder sammen til samme Xero InvoiceID i stedet for at oprette en dublet. Refresh-tokenet roteres automatisk ved 401; hvis det nogensinde udløber (Xero invaliderer refresh-tokens efter 60 dages inaktivitet), så klik blot Connect igen.

Felter
FeltStandardBemærkninger
Enable XerofraPush udstedte dokumenter til Xero, så snart de er udstedt.
Client ID / Client secrettomtOAuth 2.0-app-credentials fra Xero Developer Portal. Påkrævet, før Connect kan bruges.
Access token / Refresh token (advanced)tomtAuto-udfyldes af Connect-knappen. Indsæt kun manuelt, hvis du har hentet tokens uden for denne UI.
Tenant IDtomtUUID for Xero-organisationen. Auto-udfyldes af Connect (enkelt organisation) eller angives via in-card tenant-vælgeren (flere organisationer).
Default account code200Omsætningskontokode stemplet på hver pushet linje. Regionale standarder: UK/NZ 200, US 400, AU 200. Find din under Accounting → Chart of accounts i Xero.
Default tax typeOUTPUTXero TaxType anvendt på beskattede linjer. Almindelige værdier: OUTPUT (standard moms på salg), OUTPUT2 (reduceret sats), EXEMPTOUTPUT, NONE. Linjer med 0 % VAT falder automatisk tilbage til NONE.
Invoice status on pushAUTHORISEDÉn af DRAFT (redigerbar i Xero, ikke endnu en rigtig faktura), SUBMITTED (afventer godkendelse), AUTHORISED (færdiggjort). Alt andet saneres tilbage til AUTHORISED.
Payment account UUIDtomtXero bank/cash AccountID brugt ved registrering af betalinger. Find det via GET /api.xro/2.0/Accounts?where=Type=="BANK" eller Xero-UI’en (Chart of accounts → click the bank account → URL contains the UUID). Lad være tomt for at deaktivere registrering af betalinger.

QuickBooks Online

Invoice Pilot — Integrationer, QuickBooks Online-panelet
Integrationer → QuickBooks Online — øverst: one-click-forbindelsespanel med den redirect-URI, der skal registreres på developer.intuit.com. Nederst: app-credentials, environment-skift og adfærdsstandarder. Derunder: en Connection Status-sektion med en live Test Connection-knap.

Intuit QuickBooks Online — US / CA / UK / globalt. OAuth 2.0-tokens krypteres at rest. Settings-fanen er opdelt med Connection (status + Connect/Disconnect-knapper) øverst og Settings (app-credentials + push-adfærd) nedenunder.

Forbindelse

Invoice Pilot leveres med et indbygget OAuth-flow — du skal ikke længere danse rundt i Postman og indsætte fem strenge i formularen. End-to-end-opsætningen er:

  1. Opret en app på developer.intuit.com  med QuickBooks Online and Payments som platform og scope com.intuit.quickbooks.accounting. Åbn fanen Keys & OAuth og skift mellem Development og Production afhængigt af hvilket miljø du sigter mod — hvert miljø har sit eget par af client_id + secret.
  2. Tilføj den redirect-URI, der vises i Connection-panelet, til listen Redirect URIs og klik Save — Intuit accepterer http://localhost for Development-apps.
  3. Indsæt Client ID og Client secret i Settings-formularen, vælg det matchende Environment (Sandbox / Production) og gem.
  4. Klik på Connect to QuickBooks. Intuits samtykkeskærm lader dig vælge den virksomhed, som integrationen skal skrive imod; det valgte realmId returneres i callback-URL’en og gemmes automatisk — der er ingen separat tenant-vælger.
  5. Disconnect rydder access- og refresh-tokens samt realm-id’et, men beholder app-credentials, så det er nemt at genoprette forbindelsen.

Hvert push bruger POST /v3/company/{realmId}/invoice med query-parameteren requestid sat til en stabil per-faktura-værdi — QBO kollapser POST-retries til det oprindelige svar, så et netværks-retry vil aldrig oprette en dublet. Pushes medfører også minorversion=75, så QBO returnerer aktuelle entity-former (uden den nedgraderer API’et stille til sin 2017-kontrakt). Refresh-tokens varer 100 dage fra udstedelse og roteres ved hver brug; pluginnet håndterer rotationen transparent ved 401.

Felter
FeltStandardBemærkninger
Enable QuickBooks OnlinefraPush udstedte dokumenter, så snart de er udstedt.
Environmentsandboxsandbox (standard) rammer sandbox-quickbooks.api.intuit.com; production rammer quickbooks.api.intuit.com. Hvert environment har sit eget par af Client ID + secret på Intuit-app-siden.
Client ID / Client secrettomtOAuth 2.0-app-credentials fra fanen Keys & OAuth i din Intuit Developer-app. Påkrævet, før Connect kan bruges.
Access token / Refresh token (advanced)tomtAuto-udfyldes af Connect-knappen. QBO-access-tokens varer omkring 60 minutter og roteres via refresh-tokenet; refresh-tokens varer 100 dage fra udstedelse og roteres ved hver brug. Indsæt kun manuelt, hvis du har hentet tokens uden for denne UI.
Realm IDtomtQuickBooks-firma-id. Auto-udfyldes af Connect — QBO sender det som realmId i OAuth-callbacket. Sandbox-virksomheder ser ud som 9341457147734811; production-realms er tilsvarende.
Default customer IDtomtQBO Customer.Id, som hver pushet faktura tilknyttes. Påkrævet — QBO afviser fakturaer uden en CustomerRef. Find det under Sales → Customers i QBO-UI’en eller via GET /v3/company/{realmId}/query?query=select * from Customer.
Default item ID1QBO Item.Id brugt på hver linje. 1 er det forudvalgte “Services”-item i en frisk sandbox; find dit under Sales → Products and services.
Default tax codeNONQBO TaxCodeRef anvendt på hver linje. NON = ikke-skattepligtigt (standard), TAX = standard sales tax på US/CA-konti. Tilsidesæt pr. jurisdiktion ved at opsætte tax-koden i QBO og indsætte dens navn her.

Fortnox

Invoice Pilot — Integrationer, Fortnox-panelet
Integrationer → Fortnox — OAuth-credentials, default customer number, standard-VAT og kontakten Bookkeep on push.

Svensk regnskabsplatform. OAuth 2.0-credentials krypteres at rest.

FeltStandardBemærkninger
Aktivér FortnoxfraPush udstedte dokumenter, så snart de er udstedt.
Client ID / Client secrettomtOAuth 2.0-credentials fra Fortnox’ developerportal.
Access token / Refresh tokentomtKrypteret at rest.
Default customer numbertomtBruges, når køberen ikke har et resolveret Fortnox-kundenummer.
Default VAT25Standard svensk VAT-sats (i %) anvendt, når ingen sats er mappet.
Bookkeep on pushfraOpret også bookkeeping-bilaget, når fakturaen pushes.

Sage

Invoice Pilot — Integrationer, Sage-panelet
Integrationer → Sage Business Cloud — OAuth-credentials, business-id og default contact-/ledger-/tax-rate-id’er.

OAuth 2.0-regnskabsplatform (Sage Accounting / Business Cloud).

FeltStandardBemærkninger
Aktivér SagefraPush udstedte dokumenter, så snart de er udstedt.
Client ID / Client secrettomtOAuth 2.0-credentials fra Sage Developer.
Access token / Refresh tokentomtKrypteret at rest.
Business IDtomtIdentifier for den Sage-business, integrationen skriver til.
Default contact id / ledger id / tax rate idtomtFallbacks anvendt, når snapshottet ikke bærer den tilsvarende mapping.

AI

Invoice Pilot — Indstillinger, AI-fanen
Indstillinger → AI — provider-vælger (Anthropic / OpenAI / Google Gemini / DeepSeek / Grok), krypteret API-nøgle, Test Connection og fire feature-kontakter med rate limits pr. time.

AI-fanen er delt i to kort: Provider Configuration og Features. Pluginet virker fuldt uden en API-nøgle; denne fane tilføjer valgfri AI-funktioner.

Provider Configuration

FeltBemærkninger
ProviderAnthropic (standard), OpenAI, Google Gemini, DeepSeek eller Grok (xAI). Hver provider holder sin egen krypterede API-nøgle, så du kan skifte frem og tilbage uden at indsætte credentials igen.
API KeyGemmes krypteret. Kortet viser et grønt Configured-mærkat, når en nøgle allerede er lagt på. Linket “Get your API key from …” peger på den valgte providers konsol.
ModelListe pr. provider (se tabel nedenfor). Den første model i listen bruges som standard, når ingen model er konfigureret.
Test ConnectionKalder providerens messages-/chat/completions-endpoint med en 1-token-prompt og rapporterer succes eller upstream-fejlen.

Modeller pr. provider:

ProviderModeller
AnthropicClaude Opus 4.7 (bedste kvalitet, standard), Claude Sonnet 4.6 (anbefalet), Claude Haiku 4.5 (hurtig, billig)
OpenAIGPT-5 (bedste kvalitet), GPT-5 mini (hurtig), GPT-4o, GPT-4o mini (billigst)
Google GeminiGemini 2.5 Pro, Gemini 2.5 Flash (bedst pris/ydelse), Gemini 2.5 Flash Lite (billigst)
DeepSeekDeepSeek V3.2 Chat, DeepSeek V3.2 Reasoner
Grok (xAI)Grok 4.1 Fast, Grok 4, Grok 3, Grok 3 Mini

Features

KontaktStandardBeskrivelse
Smart-fill billingfraKunder indsætter en fri faktureringsblok ved checkout; modellen udfylder den strukturerede formular.
Smart-fill-kald pr. time5Rate limit pr. session.
Compliance pre-flight-tjekfraLad AI’en scanne hver faktura før udstedelse og markere potentielle problemer.
Blokér udstedelse ved fejl-niveau-findingsfraNår et kritisk problem findes, så forhindr fakturaen i at blive udstedt.
Compliance-kald pr. time10
Oversæt linjebeskrivelserfraBrug AI til at oversætte fakturalinjer til køberens sprog. Polyglot-bevidst, når søster-pluginet er installeret.
Natursprog-dokumentsøgningfraFritekst-forespørgsler på Dokumenter-admin-siden.
Søgekald pr. time10

Avanceret

Invoice Pilot — Indstillinger, Avanceret-fanen
Indstillinger → Avanceret — log-opbevaring, opførsel ved afinstallation, manuelle vedligeholdelseshandlinger og versionsfooter.

Opbevaring og afinstallation

FeltStandardOmråde
Log-opbevaring (dage)9013650. Integrations-log-poster ældre end dette ryddes af det daglige cron.
Slet data ved afinstallationfraDrop alle Invoice Pilot-tabeller og -valg, når pluginet afinstalleres. Destruktivt. Slået fra som standard.

Vedligeholdelseshandlinger

  • Kør log-oprydning nu — fyrer handlingen invoice_pilot_cleanup_logs med det samme i stedet for at vente på det daglige cron.
  • Ryd valideringscache — sletter hver række fra VAT-valideringscachens tabel.

En lille Versions-række nederst trykker den aktuelle plugin-version og databaseskema-version.

Brug

Auto-udstedelse af faktura fra en WooCommerce-ordre

Standardflowet kræver ingen manuel handling.

  1. En kunde lægger en ordre på WooCommerce. Checkout viser felterne VAT-nummer og Skattekode plus eventuelle landespecifikke felter registreret for faktura-landet (f.eks. SDI recipient code og Certified email (PEC)IT-ordrer). VAT-feltet valideres live, mens kunden skriver — et grønt ✓-badge vises i inputtet, når kæden bekræfter nummeret, et rødt ✕ når det fejler. Hvis køberen er i en anden EU-medlemsstat og VAT’en er gyldig, nulstiller WooCommerce momsen i kurven automatisk (intra-EU B2B reverse charge — se Indstillinger → VAT-validering).
  2. Når ordren rammer trigger-statussen defineret under Indstillinger → Generelt → Trigger-status (processing som standard), udsteder Invoice Pilot en faktura ved hjælp af Standardserien (INV som standard), gemmer et uforanderligt JSON-snapshot af ordren, renderer PDF’en, genererer XML-konvolutten for køberlandet og pusher til enhver aktiv integration.
  3. Ordreskærmen får en Invoice Pilot-meta-boks, der lister de udstedte dokumenter med links til PDF og XML samt action-knapper til Regenerér, Genudsted, Annullér, Opret kreditnota, Opret proforma, Opret tilbud og Push til provider.
Invoice Pilot — WooCommerce-ordreredigeringsskærmen med de landespecifikke faktureringsfelter og Invoice Pilot-meta-boksen
WooCommerce → Ordrer → Rediger — Fakturering-kortet bærer de landespecifikke felter, der er registreret for køberens ISO (her italiensk SDI-modtagerkode, certificeret e-mail / PEC og fiskalt regime), og Invoice Pilot-meta-boksen til højre viser det udstedte dokumentnummer med PDF- / XML-links, en Regenerér dokument-handling og Andre dokumenter-genveje til proforma og tilbud.

Invoice Pilot-meta-boksen viser, for det seneste ikke-annullerede dokument på ordren: dokument-nummeret (f.eks. INV-2026-0063), status-pillen (Udstedt / Betalt / Annulleret), download-knapperne PDF og XML (token-signerede REST-links), en Regenerér dokument-handling, der re-renderer artefakterne mod den aktuelle skabelon og sælgerindstillinger uden at ændre dokumentnummeret, og et Andre dokumenter-afsnit, der eksponerer ét-klik-knapperne Opret proforma og Opret tilbud. Når en integration er slået til, dukker en Push til provider-knap op ved siden af PDF- / XML-links og replayer integrations-kaldet mod det konfigurerede mål.

Manuel udstedelse

Hvis automatisk udstedelse er slået fra, eller ordren endnu ikke har nået trigger-statussen, har ordrens meta-boks en Udsted nu-knap. Samme flow gælder — snapshot, PDF, XML, integrations-push — men det kører på efterspørgsel.

Kreditnotaer fra refusioner

Når Auto-udsted kreditnota ved WC-refusion er slået til (standard), udløser enhver WooCommerce-refusion oprettet mod en ordre med en eksisterende faktura en kreditnota i CN-serien. Kreditnotaen peger tilbage på den forrige faktura og refererer den i XML’en. Den renderede PDF har en “Refund of INV-…”-disclaimer-banner øverst, en CREDIT NOTE-status-pille, Refund total i hero-cellen, og IBAN-/ betalingsmetode-footeren skjules (det oprindelige betalingsflow gælder ikke længere). Du kan også udstede en kreditnota manuelt — fuld eller delvis — fra Handlinger-kortet på fakturaens redigeringsside, så længe forrige faktura er i status issued.

Proformaer og tilbud

Når de tilsvarende kontakter er slået til, viser ordreskærmen også knapperne Opret proforma og Opret tilbud. Begge producerer ikke-fiskale dokumenter — en PDF renderes, men ingen XML genereres for tilbud. Den renderede PDF har en visuel behandling specifik for sin type: en disclaimer-banner øverst (“Proforma — not a fiscal document.” / “Quote — not a fiscal document, subject to acceptance.”), en “QUOTE”-/“PROFORMA”-status-pille i stedet for “ISSUED”, og på tilbud skifter den fremtrædende datolabel til Valid until, og hero-totalen til Estimated total. Tilbud skjuler IBAN-/ betalingsmetode-blokken, da der endnu ikke er nogen betaling.

En proforma kan konverteres til en faktura med handlingen Konverter, der renummererer dokumentet under den konfigurerede faktura-serie.

Send en faktura til kunden

Pluginet registrerer en ordre-handling Send Invoice Pilot invoice to customer under WooCommerce’ standard ordre-handlinger-dropdown, der mailer PDF’en til køberen via WordPress’ wp_mail().

Hent dokumenter

PDF’er og XML-konvolutter serveres fra et offentligt adresserbart, men token-signeret REST-endpoint:

GET /wp-json/invoice-pilot/v1/download/{id}/{format}?token=…

{format} er pdf eller xml. Tokenet genereres, når dokumentet udstedes, og trykkes ind i ordrens meta-boks og fakturatabellen.

Dashboard

Invoice Pilot — Dashboard
Dashboard — kortet Activity overview med periodevælger og fem KPI-kort, kortet Trends med to time-series-grafer nedenfor.

Invoice Pilot → Dashboard åbner et Activity overview-kort oven på et Trends-kort. Activity overview viser en periodelinje med fire vinduer — 7 dage, 14 dage, 30 dage (standard) og 90 dage — og fem KPI-kort:

  • Fakturaer — samlet antal dokumenter udstedt i perioden.
  • Net revenue — sum af netto-totaler i shop-valutaen, gengivet med locale’ens valutasymbol og to decimaler (f.eks. €3,876.09 eller 3.876,09 € afhængigt af administratorens locale).
  • VAT collected — sum af VAT-totaler fra det uforanderlige snapshot. Samme locale-bevidste valutaformatering som Net revenue. En separat skema-migration backfiller denne værdi for fakturaer udstedt før skemaversion 1.3.1, hvor kolonnen ikke blev udfyldt på skrivetidspunktet.
  • Avg value — nettoomsætning divideret med fakturaantal, også valutaformateret.
  • B2B / B2C — split af B2B-fakturaer (køber har et VAT-nummer) vs. B2C-fakturaer i samme periode.

Under KPI’erne renderer Trends-kortet to grafer side om side — Invoices over time (et dual-axis line + area-diagram med fakturaantal på den venstre akse og nettoomsætningstrenden udfyldt på den højre akse) og By buyer country (et donut-diagram over de mest hyppige køber-ISO-koder med farve-legenden nedenunder). Alle tal hydreres fra /wp-json/invoice-pilot/v1/dashboard?days=N.

Dokumentliste

Invoice Pilot — Dokumentliste
Dokumenter — samlet værktøjslinje (AI-søgning + typefilter + løbende tæller) og data-grid med kolonnerne NUMBER, TYPE, STATUS, ORDER, ISSUED, TOTAL, COMPLIANCE, FILES og ACTIONS.

Invoice Pilot → Dokumenter lister hvert udstedt dokument med status-pills (betalt / annulleret / konverteret / kladde / udstedt — farvekodet efter livscyklustilstand), en Compliance-kolonne med det farvekodede badge fra AI-pre-flight-tjekket, og PDF-/XML-/Slet-handlinger pr. række inline. Siden paginerer 20 rækker ad gangen og viser en samlet værktøjslinje, der kombinerer AI-fritekstsøgning med et dokumenttype-filter (invoice / credit_note / proforma / quote / receipt) plus en løbende tæller til højre. Når AI-søgning er slået til, accepterer søgefeltet fritekst-forespørgsler (for eksempel “Tyske fakturaer sidste måned over 1.000 EUR”), som den valgte provider oversætter til en list-query; de resolverede filter-chips vises over tabellen, så du kan se præcis, hvordan modellen parsede din sætning.

WooCommerce-ordreliste

Invoice Pilot — fakturanummer-kolonne på WC Orders-skærmen
WooCommerce → Ordrer — en Invoice-kolonne viser det dokumentnummer, der er tildelt hver ordre, med et lille preview-ikon, der linker til den renderede PDF.

Invoice Pilot tilføjer en enkelt Invoice-kolonne til standard-WooCommerce-ordrelisten (/wp-admin/admin.php?page=wc-orders), så shop-ejeren kan se på et øjeblik, hvilke ordrer der allerede er dokumenteret, og hvilke ikke, uden at forlade Ordrer-skærmen. Kolonnen sidder mellem Order og Date og viser det dokumentnummer, den konfigurerede serie har tildelt (for eksempel INV-2026-0063) læst ordret fra den uforanderlige number-kolonne, med et lille eye-preview-ikon ved siden af nummeret, der åbner den renderede PDF inline i en ny fane.

Ordrer uden et udstedt dokument renderer en tankestreg — nyttigt, når man fejlsøger trigger-status-uoverensstemmelser eller filtrerer ordrer, der har brug for en manuel wp invoice-pilot issue-kørsel. Den samme renderer wirer både den gamle posts-tabelkolonne (manage_edit-shop_order_columns) og HPOS-kolonnen (manage_woocommerce_page_wc-orders_columns), så oplevelsen er identisk uanset hvilken ordre-storage din shop kører på.

Integrations-log

Invoice Pilot — Integrations-log
Log — kronologisk push-log med provider-/handlingsfiltre og en Slet-handling pr. række; payload-felter redacted ved skrivning af Core\Logger.

Invoice Pilot → Log registrerer hvert integrations-push, hvert svar og hver fejl. Værktøjslinjen øverst kombinerer en Bulk actions-vælger + Apply-knap (i øjeblikket en ét-handlings bulk-delete), en provider-dropdown og en action-dropdown — begge fyldt op fra de værdier, der reelt optræder i loggen, så de kun nogensinde viser filtre, der matcher en faktisk række — og en løbende tæller med antal poster til højre.

Data-griddet har otte kolonner:

KolonneBemærkninger
DATE (UTC)Timestamp-pille, UTC. Sorteret faldende som standard.
PROVIDERLower-cased provider-slug (fattureincloud, smartbill, xero, …).
ACTIONOperation, der producerede posten (push, pull_status, refresh_token, void).
INVOICE#<id>-link tilbage til dokumentet, eller en tankestreg for poster, der ikke relaterer sig til en enkelt faktura (token-refreshes, manuel vedligeholdelse).
HTTPFarvet pille med upstream-statuskoden — grøn for 2xx, gul for 4xx, rød for 5xx (eller enhver post med en ikke-null error-kolonne).
ERRORUpstream-fejlbesked i rød tekst, når kaldet fejlede; tankestreg ved succes.
MSWall-clock-varighed af kaldet i millisekunder.
ACTIONSEn rød Delete-handling pr. række til engangsoprydning.

Følsomme payload-felter redactes ved skrivning af pluginets Core\Logger, så request- og response-bodies er sikre at beholde i loggen. Gamle poster ryddes af det daglige cron invoice_pilot_cleanup_logs ud fra Log-opbevaring (dage)-indstillingen på Avanceret-fanen.

Netværks-admin (Multisite)

På et Multisite-netværk dukker en ekstra side Invoice Pilot Network op i netværks-admin-sidebaren. Den aggregerer faktura-antal og totaler på tværs af hvert under-site, hvor Invoice Pilot er aktivt.

EU-27-fakturering

Invoice Pilot leverer et register over landespecifikke fakturafelter for hvert EU-27-medlemsland. Hvert felt er valgfrit ved checkout (pluginet tvinger ikke B2B-only-data på en B2C-ordre); validering fyrer kun, når køberlandet matcher feltets ISO.

Registret dækker i øjeblikket:

LandFelter
IT Italienei_recipient_code (7 alfanumeriske, standard 0000000), ei_certified_email (PEC), fiscal_regime (RF01–RF19)
FR Frankrigsiren (9 cifre), siret (14 cifre), chorus_pro_service_code
DE Tysklandsteuernummer, ust_id, leitweg_id, hrb
ES Spaniennif, face_oficina_contable, face_organo_gestor, face_unidad_tramitadora
PT Portugalnif (9 cifre), atcud
NL Hollandkvk_number (8 cifre), btw_id
BE Belgienbce_number (10 cifre)
LU Luxembourg
AT Østriguid_nummer, firmenbuchnummer, steuernummer
IE Irland
DK Danmarkcvr_number (8 cifre), ean_location_number
SE Sverigeorganisationsnummer
FI Finlandy_tunnus, ovt_code
PL Polennip (10 cifre), regon, ksef_id
CZ Tjekkietdic, ico (8 cifre), data_box_id
SK Slovakietdic, ico (8 cifre), data_box_id
HU Ungarntax_number, group_member_id
SI Slovenienvat_id, maticna_stevilka
HR Kroatienoib (11 cifre)
RO Rumæniencui
BG Bulgarieneik (9–13 cifre), vat_id
GR Grækenlandafm (9 cifre), dou_code
CY Cyperntic
MT Maltaid_number
LT Litauencompany_code
LV Letlandregistration_number
EE Estlandregistry_code

Blok-checkout-integrationen registrerer felter under namespacet invoice-pilot/... gennem Additional Checkout Fields API. Som standard vises kun de italienske felter i blok-checkout for ikke at overvælde ikke-italienske købere; kontakten Alle EU-27-felter ved checkout under Generelt slår hele sættet til. Den klassiske shortcode-checkout renderer altid hele registret filtreret af det valgte faktura-land.

Landefelter gemmes på ordren, kopieres ind i det uforanderlige faktura-snapshot og forbruges af XML-writerne — for eksempel bliver det italienske ei_recipient_code til CodiceDestinatario / PECDestinatario i FatturaPA-konvolutten, mens det tyske leitweg_id bliver til BuyerReference / EndpointID 0204 i XRechnung.

Integrationer

SmartBill

SmartBill (Rumænien) er koblet ind i pluginets IntegrationManager via filteret invoice_pilot_integration_providers og udstiller den standardiserede provider-grænseflade: push, pull_status, void og test_connection.

  • Push mapper faktura-snapshottet til SmartBill-JSON-skemaet og kalder POST /SBORO/api/v2/invoice med den konfigurerede CIF og serie.
  • Status-sync afstemmer draft- / issued- / paid-state, når cron for retry hvert kvarter kører.
  • Void annullerer en tidligere pushet faktura på SmartBill, når kilde-fakturaen annulleres i WordPress.

Alle handlinger logges til integrations-loggen. Fejl sættes i kø og prøves igen af cronet invoice_pilot_retry_integrations.

Fatture in Cloud

Fatture in Cloud (Italien) følger samme provider-grænseflade og mapper faktura-snapshottet til entity-/items_list-formen, FIC’s udstedte-dokumenter-endpoint forventer. Italienske landespecifikke felter mappes eksplicit:

  • ei_recipient_codeei_code
  • ei_certified_emailcertified_email
  • køber-VAT / skattekode / provins / land → tilsvarende entity-nøgler

OAuth-credentials krypteres at rest. Det daglige cron invoice_pilot_refresh_fic_token opdaterer access-tokenet, når integrationen er slået til. At sætte Opret kunder til til får integrationen til at oprette en ny kunde-post i FIC ved den første faktura for en køber.

Invoice Pilot indsender ikke FatturaPA til SDI for dig. SDI-indsendelse er overladt til et separat manuelt trin inde fra din Fatture in Cloud-konto.

AI smart-fill

AI-laget er fuldt valgfrit. Uden en konfigureret API-nøgle udsteder pluginet fortsat fakturaer, renderer PDF’er og XML, validerer VAT og pusher til integrationer — kun de fire AI-funktioner nedenfor er utilgængelige.

Fem providere understøttes:

ProviderStandardmodelURL til API-nøgle
Anthropicclaude-opus-4-7console.anthropic.com 
OpenAIgpt-5platform.openai.com 
Google Geminigemini-2.5-proaistudio.google.com 
DeepSeekdeepseek-chatplatform.deepseek.com 
Grok (xAI)grok-4-1-fast-non-reasoningconsole.x.ai 

API-nøglen opbevares krypteret at rest via pluginets symmetriske krypto-lag. Et tryk på Test Connection sender et minimalt kald til det valgte endpoint og blotter upstream-fejlen, hvis credentials er forkerte.

Fire funktioner kan slås til og fra hver for sig, så snart en nøgle ligger på:

  • Smart-fill ved checkout — et tekstfelt “Paste billing details” dukker op ved checkout. Modellen parser den fri tekst og udfylder den strukturerede WooCommerce-faktureringsformular, inklusive landespecifikke felter. Rate-limited pr. session.
  • Compliance pre-flight-tjek — hver faktura køres gennem modellen lige inden udstedelse, med mulighed for at blokere udstedelse ved fejl-niveau-findings, når et kritisk problem findes (for eksempel en italiensk B2B-faktura uden SDI-modtagerkode).
  • Auto-oversæt linjer — fakturalinjers beskrivelser oversættes til køberens sprog. Når søster-pluginet Polyglot  er installeret, delegeres oversættelses-pipelinen til det.
  • Natursprog-dokumentsøgning — søgefeltet på Dokumenter-admin-siden accepterer fritekst-forespørgsler, modellen oversætter til en list-query.

Hver funktion har sit eget rate limit pr. time.

Hooks og filtre

Centraliserede hook-navne lever i klassen \InvoicePilot\Core\Hooks. Hele listen:

HookTypeFormål
invoice_pilot_redact_keysfilterEkstra nøgler, der skal redactes fra loggede payloads.
invoice_pilot_xml_writer_for_countryfilterOverstyr XML-writeren pr. køber-ISO. To argumenter: aktuel writer, ISO.
invoice_pilot_validator_chainfilterOverstyr eller udvid VAT-valideringskæden.
invoice_pilot_integration_providersfilterRegistrer flere integrations-providere.
invoice_pilot_country_fieldsfilterTilføjer eller fjerner landespecifikke checkout-felter. To argumenter: nuværende felter-array, ISO-kode.
invoice_pilot_bootedactionFyrer, efter pluginet er bootet. Sender singletonen videre.
invoice_pilot_register_modulesactionHook til modulregistrering.
invoice_pilot_invoice_issuedactionFyrer, efter en ny faktura er udstedt.
invoice_pilot_invoice_renderedactionFyrer, efter PDF eller XML er renderet.
invoice_pilot_integration_pushedactionFyrer efter et vellykket integrations-push.
invoice_pilot_integration_failedactionFyrer efter et fejlet integrations-push.
invoice_pilot_cleanup_logsactionDagligt cron — fjerner gamle integrations-log-poster.
invoice_pilot_retry_integrationsactionCron hvert kvarter — prøver fejlede pushes igen.
invoice_pilot_revalidate_viesactionTimeligt cron — revaliderer forældede VIES-cache-poster.
invoice_pilot_render_integration_tabactionFyres fra Integrationer-fanen, så providere kan rendere deres egne indstillingskort.
invoice_pilot_refresh_fic_tokenactionDagligt cron — opdaterer Fatture in Cloud-access-tokenet.

Registrer en custom XML-writer:

add_filter( 'invoice_pilot_xml_writer_for_country', function ( $writer, $iso ) { if ( 'NL' === $iso ) { return new My_Custom_Nl_Writer(); } return $writer; }, 20, 2 );

Registrer en custom integrations-provider:

add_filter( 'invoice_pilot_integration_providers', function ( array $providers ) { $providers[] = new My_Custom_Provider(); return $providers; } );

Skjul eller udvid landespecifikke checkout-felter (for eksempel for at fjerne Italiens ei_certified_email (PEC) og fiscal_regime (RF-kode) prompts, når din butik aldrig har brug for dem — ingen plugin-fork nødvendig):

add_filter( 'invoice_pilot_country_fields', function ( array $fields, string $iso ) { if ( 'IT' === $iso ) { $fields = array_values( array_filter( $fields, fn ( $f ) => ! in_array( $f->name, [ 'ei_certified_email', 'fiscal_regime' ], true ) ) ); } return $fields; }, 10, 2 );

Filteret kører både på PHP-submit-valideringsstien og på JS-snapshottet serveret til WC Blocks-checkoutet, så de to lag forbliver synkroniserede. Felt-maskinnavne, der i øjeblikket leveres (brug disse i filteret):

LandFeltnavne
ITei_certified_email, fiscal_regime
FRsiren, siret, chorus_pro_service_code
DEsteuernummer, ust_id, leitweg_id, hrb
ESnif, face_oficina_contable, face_organo_gestor, face_unidad_tramitadora
PTnif, atcud
NLkvk_number, btw_id

Den fulde per-land registry er defineret i CountryFieldRegistry::install_defaults() og dækker alle EU-27 ISO’er.

FAQ

Indsender Invoice Pilot FatturaPA til SDI?

Nej. Invoice Pilot genererer FatturaPA-XML’en og gemmer den på ordren; SDI-indsendelse er bevidst overladt til et separat manuelt trin (eller til Fatture in Cloud-integrationen på din konto).

Kan jeg tilføje en writer til et land, der ikke er bygget ind?

Ja. Hægt dig på invoice_pilot_xml_writer_for_country, og returner din egen implementation af \InvoicePilot\Modules\Xml\XmlWriterInterface.

Virker det med WooCommerce’ blok-checkout?

Ja. Landespecifikke felter er registreret via WooCommerce 8.6+ Additional Checkout Fields API, så de optræder både i blok-checkout og i den klassiske shortcode-checkout. På WooCommerce-versioner ældre end 8.6 bruges kun det klassiske filter-flow.

Virker det med WordPress Multisite?

Ja. Hvert under-site har sine egne tabeller, indstillinger og nummerings-tællere. En netværks-admin-side under Network Admin → Invoice Pilot Network aggregerer faktura-antal på tværs af netværket. På nye under-sites oprettes tabeller og standard-serier automatisk via hooken wp_initialize_site.

Er credentials krypteret?

Ja. SmartBill-tokens, Fatture in Cloud-OAuth-tokens og AI-API-nøglen er krypteret at rest via \InvoicePilot\Core\Crypto. Et tomt token-felt ved næste gem bevarer den eksisterende gemte værdi.

Hvad sker der med mine data, hvis jeg sletter pluginet?

Intet, medmindre du vælger det til. Standarden for Avanceret → Slet data ved afinstallation er fra, så tabeller, valg, integrations-logs og valideringscachen bevares på tværs af deaktivering / genaktivering. Slå valget til, hvis du vil have uninstall.php-rutinen til at fjerne alt, når WordPress sletter pluginet.

Hvor får jeg en API-nøgle til AI-funktionerne?

Hver provider har sin egen konsol: Anthropic på console.anthropic.com , OpenAI på platform.openai.com , Google AI Studio på aistudio.google.com , DeepSeek på platform.deepseek.com  og Grok på console.x.ai . AI-fanen linker direkte til den valgte providers konsol.

Skal jeg have en AI-nøgle for at pluginet virker?

Nej. AI-funktionerne (smart-fill, compliance-tjek, linjeoversættelse, natursprogssøgning) er valgfri. Kerne-faktureringsmotoren — dokumentlivscyklus, PDF- og XML-generering, VAT-validering, integrationer, dashboard — kører uden en API-nøgle.

Fejlfinding

Fakturaen udstedes ikke, når ordren skifter til Processing

Tjek Indstillinger → Generelt → Trigger-status. Standarden er processing; har du tilpasset den (for eksempel til completed), fyrer auto-udstedelse kun på den konfigurerede status. Du kan også trykke på Udsted nu fra ordrens meta-boks for at udstede manuelt uanset triggeren.

Checkout viser for mange (eller for få) landefelter

Standarden viser kun de italienske SDI-felter. Åbn Indstillinger → Generelt → Document defaults → Landespecifikke faktureringsfelter og vælg omfanget:

  • Fra — kun de universelle VAT- og skattekode-felter vises.
  • Kun Italien (SDI / PEC / fiscal regime) — standard.
  • Alle EU-27 landespecifikke felter — hver ISO i registret.

Indstillingen gælder både blok-checkout og den klassiske shortcode-checkout. Landespecifikke felter skjules stadig client-side, når faktura-landet ikke matcher.

VAT-validering hænger eller timer ud

VIES-tjenesten er nu og da langsom eller utilgængelig. Pluginet holder en cache pr. VAT i den konfigurerede TTL (24 timer som standard) og revaliderer forældede poster en gang i timen via cronet invoice_pilot_revalidate_vies. Hvis VIES er nede, accepterer Format pr. land-validatoren stadig velformede numre. Du kan også hæve cache-TTL’en under Indstillinger → VAT-validering.

Dashboardet viser ingen data

Dashboardets SQL bruger JSON_EXTRACT / JSON_UNQUOTE mod den uforanderlige snapshot-kolonne. Sørg for, at din databaseserver er MySQL 5.7+ eller MariaDB 10.2+. Hvis periodelinjen viser det rigtige vindue, men kortene bliver stående på --, så åbn /wp-json/invoice-pilot/v1/dashboard?days=30 direkte og se svaret — REST-autentificeringsfejl dukker op som rest_forbidden.

Integrations-push fejler

Åbn Invoice Pilot → Log og find den fejlede post — HTTP-kolonnen markerer ikke-2xx-svar med et farvet badge, og Error-kolonnen viser upstream-fejlbeskeden i rødt. Den fejlede post prøves automatisk igen af cronet invoice_pilot_retry_integrations hvert kvarter; du kan også trykke på Push til provider i ordrens meta-boks for at prøve igen med det samme. Brug Slet-handlingen på en række for at rydde en engangs-post uden at vente på opbevarings-cronet.

Test Connection på AI-fanen rapporterer en fejl

Beskeden i rødt kommer direkte fra providerens endpoint. Almindelige årsager:

  • En ugyldig eller tilbagekaldt API-nøgle — generér en ny, indsæt den i feltet API Key, og gem.
  • Et modelnavn, kontoen ikke har adgang til — vælg en anden model i dropdownen.
  • Hosten blokerer udgående netværk — bekræft, at udgående HTTPS til api.anthropic.com, api.openai.com, generativelanguage.googleapis.com, api.deepseek.com eller api.x.ai er tilladt.

Mail-alerts til kunden kommer ikke frem

Mail med fakturaer til kunder sendes via WordPress’ wp_mail(). Kommer ingen mail frem, ligger fejlen næsten altid i sitets mailopsætning og ikke i Invoice Pilot. Installer et transaktionsmail-plugin (for eksempel et, der sender WordPress-mail via SMTP), og udløs ordre-handlingen Send Invoice Pilot invoice to customer igen fra en test-ordre.

Last updated on