Kategoriserer danske regnskabs-/ERP-skills, ERP-data-afstemnings-
skill og to devops-workflows (gitea-issue-agent, kanban-workflows)
som Radix-medlemmers AI-agenter kan dele.
Struktur:
skills/<kategori>/<skill-navn>/SKILL.md
skills/<kategori>/<skill-navn>/{references,templates,scripts}/
Indekseret af index.json (genereret af scripts/rebuild_index.py).
Kør `python3 scripts/rebuild_index.py --check` i CI for at fange
synkroniseringsfejl.
10 KiB
name, description, version, author, license, metadata
| name | description | version | author | license | metadata | |||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| e-conomic-integration | Integration med e-conomic cloud-bogføring — aktiveres ved "bogfør i e-conomic", "hent fakturaer fra e-conomic", "kassekladde", "sync mod e-conomic", "opret kunde i e-conomic", "kontoudtog e-conomic", "REST API", "AppSecretToken". Dækker auth, kontoplan, kassekladder, bogførte fakturaer, kreditorer, kunder og banktransaktioner. | 0.1.0 | radix-accountant | MIT |
|
e-conomic-integration
Integration med e-conomic cloud-bogføringssystem via den officielle REST API. Bruges til at hente fakturaer, kunder, kreditorer, bogføre bilag, synce banktransaktioner og afstemme konti — alt på dansk.
Aktiveres ved
- "Bogfør denne faktura i e-conomic"
- "Hent åbne fakturaer fra e-conomic"
- "Synk banktransaktioner til e-conomic"
- "Opret kunde X i e-conomic"
- "Hvad er saldi på konto 1010 i e-conomic?"
- "Generer kassekladdeline for denne betaling"
- "Vis alle kreditorer med udestående i e-conomic"
API basics
Base-URL
https://restapi.e-conomic.com
Auth (kræver to tokens)
| Header | Værdi | Hvad det er |
|---|---|---|
X-AppSecretToken |
${ECONOMIC_APP_SECRET_TOKEN} |
App-identifikation (din app's hemmelige token) |
X-AgreementGrantToken |
${ECONOMIC_AGREEMENT_GRANT_TOKEN} |
Aftale-specifik adgang (bruger-godkendt) |
Content-Type |
application/json |
Altid JSON |
Idempotency-Key |
<unik UUID> |
Forhindrer dobbeltbogføring ved netværksfejl (POST/PUT) |
⚠️ Tokens skal ALDRIG hardcodes — brug miljøvariabler eller en secret manager.
Demo-mode (sandbox)
Til test/udvikling, tilføj ?demo=true til URL — alle writes deaktiveres (kun GET).
Vigtigste endpoints
| Formål | Endpoint | HTTP |
|---|---|---|
| List konti (kontoplan) | /accounts?pagesize=N |
GET |
| Hent én konto | /accounts/:accountNumber |
GET |
| List bogføringsår | /accounting-years |
GET |
| List perioder (måneder) i et år | /accounting-years/:year/periods |
GET |
| Hent kontosaldo for en periode | /accounts/:accountNumber/accounting-years/:year/periods/:period/totals |
GET |
| List kassekladder | /journals |
GET |
| Hent kassekladdeline | /journals/:id/vouchers?voucherNumber=:n |
GET |
| Opret kassekladdeline (bilag) | /journals/:id/vouchers/:n/entries |
POST |
| Bogfør voucher | /journals/:id/vouchers/:n/book |
POST |
| List bogførte fakturaer | /invoices/booked |
GET |
| Opret bogført faktura | /invoices/booked |
POST |
| Hent kunde | /customers/:customerNumber |
GET |
| Opret kunde | /customers |
POST |
| List kreditorer | /suppliers |
GET |
| Opret kreditor | /suppliers |
POST |
| List moms-konti | /vat-accounts |
GET |
| Hent valutakurser | /currencies |
GET |
⚠️ Rate limit: e-conomic har et fair-use loft. Hold dig under 10 requests/sekund.
e-conomics standardkontoplan (4-cifret)
| Kontointerval | Type | Bruges til |
|---|---|---|
| 1000-1099 | Heading/profitAndLoss | Indtægter, overskrifter |
| 1100-1199 | ProfitAndLoss | Omsætning undergrupper (varekategorier) |
| 1200-1299 | ProfitAndLoss | Diverse indtægter |
| 1300-1399 | ProfitAndLoss | Produktionsomkostninger (COGS) |
| 1500-1599 | ProfitAndLoss | Lokaleomkostninger |
| 1600-1699 | ProfitAndLoss | Salgsomkostninger |
| 1700-1799 | ProfitAndLoss | Administrationsomkostninger |
| 1800-1899 | ProfitAndLoss | Personaleomkostninger (løn) |
| 2000-2099 | ProfitAndLoss | Andre driftsomkostninger |
| 2100-2199 | ProfitAndLoss | Afskrivninger |
| 2200-2299 | ProfitAndLoss | Finansielle indtægter |
| 2300-2399 | ProfitAndLoss | Finansielle udgifter |
| 5500-5899 | Balance | Bank, kasse, tilgodehavender |
| 5800-5899 | Balance | Bankkonti (typisk 5820 = drift) |
| 6000-6899 | Balance | Leverandørgæld, moms, A-skat |
| 6500-6599 | Balance | Moms (6500 = indgående, 6600 = udgående) |
| 6900-6999 | Balance | Diverse statuskonti |
⚠️ Dette er e-conomics STANDARD kontoplan — ikke alle kunder har den. Hent altid kundens egen kontoplan via /accounts endpoint.
Momskoder (VAT-accounts)
| Kode | Type | Sats | Bruges til |
|---|---|---|---|
U25 |
Udgående | 25% | Salg af varer/ydelser i DK (momspligtig) |
I25 |
Indgående | 25% | Køb af varer/ydelser i DK (momsfradrag) |
U0 |
Udgående | 0% | Eksport, EU-salg med VIES, moms-fritagne ydelser |
I0 |
Indgående | 0% | Køb uden moms (import under bagatelgrænse) |
UEU25 |
Udgående | 25% | EU-varesalg (vareleverance til andet EU-land) |
UV25 |
Udgående | 25% | Byggeydelser i andre EU-lande (omvendt betalingspligt) |
⚠️ Korrekt momskode er afgørende for momsangivelsen — forkert kode kan give skattesmæk.
Kassekladder (Journals)
| Journal-ID | Navn (typisk) | Bruges til |
|---|---|---|
| 1 | Daglig / Kassekladde | Almindelige bilag (køb, salg, bank) |
| 2 | Indbetalinger | Kundeindbetalinger (kontra-konto typisk 5820 bank) |
| 3 | Lønninger | Lønbogføring (entryType financeVoucher) |
| 4 | Moms | Momsafregning |
| 5 | Afskrivninger | Anlægsaktiver |
Journal-ID'er varierer fra kunde til kunde — hent altid /journals først.
Workflow: Bogfør et bilag (kassekladdeline)
Eksempel: bogfør kontantkøb af kontorartikler for 1.250,00 kr. inkl. moms (15-06-2026)
Trin 1: Hent kunde-/kassekladde-info
GET /journals
→ Find journal-ID for "Daglig" (typisk 1)
GET /journals/1/vouchers?voucherNumber=42
→ Find næste ledige bilagsnummer
Trin 2: Opret kassekladdeline (visuelt, FØR API-kald)
{
"accountingYear": {
"year": 2026
},
"entries": [
{
"customerInvoiceNumber": "",
"date": "2026-06-15",
"voucherNumber": 42,
"text": "Kontorartikler — Kontorbutikken A/S",
"amount": -1250.00,
"amountInBaseCurrency": -1250.00,
"currency": "DKK",
"account": {
"accountNumber": 1690
},
"contraAccount": {
"accountNumber": 5820
},
"vatAccount": {
"vatCode": "I25"
}
}
]
}
Trin 3: Vis brugeren og bekræft
⚠️ Klar til at bogføre:
Kassekladde: Daglig (#1)
Bilagsnr: 42
Dato: 15-06-2026
Tekst: Kontorartikler — Kontorbutikken A/S
Debet: 1690 Kontorartikler 1.250,00 kr.
Kredit: 5820 Bank, drift −1.250,00 kr.
Momskode: I25 (25% indgående)
Total: 1.250,00 kr. (inkl. 250,00 kr. moms)
Vil du bogføre? (ja/nej)
Trin 4: POST med Idempotency-Key
POST /journals/1/vouchers/42/entries
Headers:
X-AppSecretToken: ${ECONOMIC_APP_SECRET_TOKEN}
X-AgreementGrantToken: ${ECONOMIC_AGREEMENT_GRANT_TOKEN}
Content-Type: application/json
Idempotency-Key: <UUID v4>
Body: [ovenstående entries-array]
⚠️ Bogfør IKKE før brugeren har bekræftet.
Workflow: Synk banktransaktioner
- Hent konti for bank (
/accounts?filter=accountType$eq:balance&pagesize=100) — find bank-konto (typisk 5820) - Hent kontosaldo for indeværende periode:
GET /accounts/5820/accounting-years/2026/periods/6/totals - Sammenlign med bankens faktiske saldo (fra CSV-import eller bank-API)
- Vis diff og identificer manglende/ukorrekte transaktioner
- Foreslå kassekladdeline for hver manglende transaktion
Workflow: Hent åbne fakturaer (kunder)
GET /invoices/booked?filter=balance$gt:0&pagesize=50
Returnerer alle bogførte fakturaer med ubetalt saldo > 0.
For hver faktura:
bookedInvoiceNumber— fakturanrcustomer.name— kundenavnnetAmount/grossAmount— beløb ekskl./inkl. momsbalance— udeståendedueDate— forfaldsdato (udledes aftermsNetDays+date)currency— DKK/EUR/USD
Bruges typisk til:
- Inkasso-rapporter (forfaldne >30 dage)
- Aldersopdelt fordringsliste (0-30, 31-60, 61-90, 90+)
- Likviditetsforecast
Workflow: Opret kunde
POST /customers
{
"name": "Coop Danmark A/S",
"customerGroup": { "customerGroupNumber": 1 },
"paymentTerms": { "paymentTermsNumber": 1 },
"vatZone": { "vatZoneNumber": 1 },
"currency": "DKK",
"address": "Roskildevej 65",
"zip": "2620",
"city": "Albertslund",
"country": "Denmark"
}
⚠️ Tjek altid for duplikat (søg eksisterende kunder først):
GET /customers?filter=name$like:Coop$Danmark
Almindelige fejl
- ❌ Glemmer Idempotency-Key ved POST → netværksfejl kan give dobbeltbogføring
- ❌ Forkert momskode (U25 vs UEU25) → SKAT fanger det i krydstjek
- ❌ Brug danske datoer i API — e-conomic bruger ISO
yyyy-MM-ddi JSON, IKKE danskdd-MM-yyyy - ❌ Beløb uden fortegn-konvention — negativ = debet, positiv = kredit (modsat dansk regnskabstradition)
- ❌ PageSize > 1000 uden pagination
- ❌ POST uden først at have hentet den aktuelle voucher → 409 Conflict
- ✅ ALTID brug Idempotency-Key ved alle writes
- ✅ ALTID konverter dansk dd-MM-yyyy → ISO yyyy-MM-dd FØR API-kald
- ✅ ALTID verificer kontoplanen (
/accounts) før bogføring — kunden kan have egne konti - ✅ ALTID tjek eksisterende kunder/leverandører før oprettelse (dublet-forebyggelse)
- ✅ ALTID vis bogføringsforslag til brugeren FØR API-kald
Demo-mode anbefaling
Brug ALTID ?demo=true under udvikling:
- Læs-data virker (GET)
- Skrive-data deaktiveret (POST/PUT returnerer 405)
- Forhindrer utilsigtet bogføring i produktion
- Kan derfor frit browse konti, fakturaer, kunder uden risiko
Eksempel på aktivering
Bruger: "Bogfør et køb af kontorartikler for 1.250 kr. inkl. moms i e-conomic"
Svar (forkortet):
✅ Forbinder e-conomic...
Klar til bogføring:
Felt Værdi Kassekladde Daglig (#1) Bilagsnr 42 Dato 15-06-2026 Tekst Kontorartikler — Kontorbutikken A/S Debet (1690 Kontorartikler) 1.250,00 kr. Kredit (5820 Bank) −1.250,00 kr. Momskode I25 (indgående 25%) ⚠️ Bekræft før jeg bogfører. Svaret "ja, bogfør" udløser API-kald med Idempotency-Key.