b. arvekram.de Developers

REST-API v1

Base-URL: https://arvekram.com/api/v1

Authentifizierung

Bearer-Token im Authorization-Header. Token erzeugst du im Dashboard unter Einstellungen → API-Tokens.

Authorization: Bearer 42|YourPlainTextTokenHere

Antwort-Format

Alle Endpoints liefern JSON. Listen kommen paginiert in einem data-Array mit Metadata:

{
  "data": [...],
  "links": { "first": "...", "last": "...", "next": "...", "prev": null },
  "meta": { "current_page": 1, "per_page": 25, "total": 142 }
}

Rate Limits

60 Requests pro Minute pro Token. Bei Überschreitung kommt HTTP 429 mit Retry-After-Header.

Endpoints

Auth & Profile

GET /me User + Tenant + Token-Info

Kunden / Lieferanten

GET /customers?type=customer&q=acme
POST /customers
GET /customers/{id}
PATCH /customers/{id}
DELETE /customers/{id}
POST /api/v1/customers
{
  "type": "customer",
  "company_name": "Acme GmbH",
  "email": "max@acme.example",
  "address_line1": "Hauptstr. 5",
  "postal_code": "10115",
  "city": "Berlin",
  "country": "DE",
  "vat_id": "DE123456789"
}

Rechnungen

GET /invoices?status=issued&customer_id=...
POST /invoices
GET /invoices/{id}
DELETE /invoices/{id} nur Drafts
POST /api/v1/invoices
{
  "customer_id": "uuid",
  "invoice_date": "2026-05-15",
  "due_date": "2026-05-29",
  "subject": "Mai-Beratung",
  "currency": "EUR",
  "status": "issued",
  "items": [
    {"title": "Consulting", "quantity": 8, "unit": "h", "unit_price_net": 120, "vat_rate": 24},
    {"title": "Travel costs", "quantity": 1, "unit": "tk", "unit_price_net": 85, "vat_rate": 24}
  ]
}

Die Umsatzsteuer wird gegen das Dokumentdatum geprüft. Historische estnische Regelsätze wie 22 % (01.01.2024–30.06.2025) sind für passende Altbelege zulässig, werden aber nicht als aktuelle Standards angeboten. Steuerliche Übergangsausnahmen müssen gesondert geprüft werden.

Belege

GET /receipts?status=draft
POST /receipts
GET /receipts/{id}
DELETE /receipts/{id}

Projekte

GET /projects?status=active
POST /projects
GET /projects/{id}
PATCH /projects/{id}
DELETE /projects/{id}

Zeit-Einträge

GET /time-entries?from=2026-05-01&to=2026-05-31
POST /time-entries
GET /time-entries/{id}
DELETE /time-entries/{id}

Bank

POST /bank-transactions/import MT940, CSV oder camt.053
GET /bank-transactions?match_status=unmatched
GET /bank-transactions/{id}
POST /bank-transactions/{id}/allocations Rechnung/Beleg zuordnen
DELETE /bank-transactions/{id}/allocations/{allocation_id}
curl -X POST https://arvekram.com/api/v1/bank-transactions/import \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json" \
  -F "file=@statement.csv"

{
  "data": {"statements": 1, "transactions": 24, "matched": 7},
  "message": "Bank statement imported."
}

Benötigte Token-Berechtigung: bank-transactions:write. Unterstützt werden Dateien bis 10 MB in MT940 (.sta, .mt940, .txt), Bank-CSV (.csv) und camt.053 (.xml). Wiederholte Imports werden dedupliziert.

POST /api/v1/bank-transactions/{id}/allocations
{
  "document_type": "receipt",
  "document_id": "receipt-uuid",
  "amount": 50.00
}

amount ist optional; ohne Betrag wird höchstens der kleinere offene Betrag von Bankbewegung und Dokument zugeordnet. Positive Zahlungseingänge können Rechnungen, negative Zahlungsausgänge Belegen zugeordnet werden. Die Antwort enthält die aktualisierte Bankbewegung und allocation_id für ein späteres Rückgängigmachen.

Buchhaltung vollständig zurücksetzen

GET /accounting-reset/preview Zählung + 10-Minuten-Challenge
POST /accounting-reset unwiderruflich

Hierfür ist ein eigens ausgestellter Owner-Token erforderlich, der ausschließlich accounting:reset enthält. Er gilt 15 Minuten und wird nach erfolgreicher Ausführung widerrufen. Wildcard-Tokens (*) sind ausdrücklich ausgeschlossen. Hole zuerst die Vorschau und sende anschließend deren challenge und confirmation_phrase unverändert zurück:

POST /api/v1/accounting-reset
{
  "challenge": "preview-challenge",
  "confirmation": "RESET ACCOUNTING tenant-uuid",
  "acknowledge_irreversible": true
}

Gelöscht werden sämtliche operativen Buchhaltungsdaten einschließlich Rechnungen, Belege, Bankimporte und Zuordnungen, Journal, Nummernkreise, Lohn, Projekte, Anlagen, AI-Drafts sowie Import- und Integrationsereignisse. Firma, Benutzer, Tarif, API-Sicherheitsprotokoll, Support-Tickets, Webhook-Konfiguration, Plugin-Zugangsdaten und Steuerberaterzugang bleiben erhalten. Webhooks werden deaktiviert, damit wartende Alt-Ereignisse nicht mehr versendet werden; nach der Kontrolle können sie wieder aktiviert werden. Aktive Import-Jobs sowie wartende, laufende oder wiederholbare Plugin-Ereignisse blockieren den Reset.

Fehler-Codes