Kontoen bag API-nøglen (tenant), dens miljø og nøglens scopes
GET /account
Svar
200OK · Account
curl -X GET https://api.fortapay.dk/v1/account \
-H "Authorization: Bearer $FP_KEY"
Reference
Forta Pay API v1
GET /account
200OK · Account
curl -X GET https://api.fortapay.dk/v1/account \
-H "Authorization: Bearer $FP_KEY"
GET /creditors
cursorquery · string · valgfri
limitquery · integer · valgfri
updated_afterquery · string (date-time) · valgfri
K5: alle lister har updated_after
200OK · Page
curl -X GET https://api.fortapay.dk/v1/creditors \
-H "Authorization: Bearer $FP_KEY"
POST /creditors
Idempotency-Keyheader · string (uuid) · påkrævet
Obligatorisk på alle POST/PATCH/DELETE. Lever 24 timer.
CreditorCreatelegal_namestring · påkrævet
cvrstring · påkrævet
countrystring · valgfri
Må udelades — serveren sætter DK. Altid til stede i svar
external_refstring · valgfri
Kundens id for kreditoren (fx CRM company_id)
contact_emailstring (email) · valgfri
settlement_accountobject · valgfri
KREDITORS egen bankkonto (regnr/kontonr) som ordning/indløser afregner til — Forta Pay har ingen konto i kæden
default_dunning_plan_idstring · valgfri
distribution_defaultsobject · valgfri
write_off_residual_feesboolean · valgfri
Afskriv resterende gebyrer og renter når HOVEDSTOLEN er betalt, og stop rykkerne. Standard true — fravalg er en bevidst handling
debtor_paid_noticeboolean · valgfri
Debitors «Jeg har betalt» på betalingssiden: pauser næste rykkertrin HØJST 5 dage, ÉN gang pr. faktura (Andreas 15-09 ②). Standard true — kreditor kan slå den fra
principal_toleranceMoney · valgfri
previous_systemstring · valgfri
Kreditorens TIDLIGERE opkrævningssystem (B8). Bæres videre til skyggens claims, skiftet, afstemningen og fremmede kvitteringer. Standard farpay
farpay · regnskabssystem · andet
201OK · Creditor
422Fejl (RFC 9457) · Problem
curl -X POST https://api.fortapay.dk/v1/creditors \ -H "Authorization: Bearer $FP_KEY" \ -H "Idempotency-Key: $(uuidgen)" \ -H "Content-Type: application/json" \ -d @- <<'JSON' { "legal_name": "…", "cvr": "…" } JSON
GET /creditors/{creditorId}
creditorIdpath · string · påkrævet
200OK · Creditor
404Fejl (RFC 9457) · Problem
curl -X GET https://api.fortapay.dk/v1/creditors/{creditorId} \
-H "Authorization: Bearer $FP_KEY"
PATCH /creditors/{creditorId}
H9 (pay-b1-rand 11-10-2026): settlement_account på en LIVE-kreditor skrives ikke straks. Svaret er 202 med en ventende settlement_account_change (og kreditoren, hvor resten af PATCH'en ER skrevet); kontoen ændres først, når en ANDEN konto-bred admin-nøgle godkender. Alle kreditorens aktive administratorer får en mail. Sandbox: straks.
creditorIdpath · string · påkrævet
Idempotency-Keyheader · string (uuid) · påkrævet
Obligatorisk på alle POST/PATCH/DELETE. Lever 24 timer.
CreditorUpdatelegal_namestring · valgfri
cvrstring · valgfri
countrystring · valgfri
external_refstring · valgfri
contact_emailstring (email) · valgfri
settlement_accountobject · valgfri
default_dunning_plan_idstring · valgfri
distribution_defaultsobject · valgfri
Fletter (JSON Merge Patch, ét niveau): felter der ikke er med, bevares; et felt sat til null fjernes og får standarden; null for hele objektet fjerner kreditorens opsætning
write_off_residual_feesboolean · valgfri
Afskriv resterende gebyrer og renter når HOVEDSTOLEN er betalt, og stop rykkerne
debtor_paid_noticeboolean · valgfri
Debitors «Jeg har betalt» på betalingssiden (højst 5 dage, én gang pr. faktura)
principal_toleranceMoney · valgfri
previous_systemstring · valgfri
Kreditorens TIDLIGERE opkrævningssystem (B8). Bæres videre til skyggens claims, skiftet, afstemningen og fremmede kvitteringer. Standard farpay
farpay · regnskabssystem · andet
debtor_attribute_sourceDebtorAttributeSource · valgfri
spor pay-attributforskel (B8). Hvem er sandheden pr. debitorfelt, når en import møder en debitor Pay allerede har. existing = debitoren som den står (for en kreditor med regnskabsforbindelse: regnskabssystemets værdi, som indlæsningen alligevel skriver ved næste kundeopdatering); forskellen bliver en note kilde_eksisterende:<felt>, og rækken er exists_identical. stop = exists_different med diff:<felt>. Importen overskriver ALDRIG en eksisterende debitor. Standard: existing for name/address/type, stop for resten. I PATCH ændres kun medsendte felter. Importens metadata-nøgler er et supplement: kun en nøgle begge sider har med forskellig værdi er diff:metadata.
200OK · Creditor
202Afregningskontoen afventer godkendelse · SettlementAccountChange
curl -X PATCH https://api.fortapay.dk/v1/creditors/{creditorId} \
-H "Authorization: Bearer $FP_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d @- <<'JSON'
{}
JSON
GET /creditors/{creditorId}/settlement-account-changes
creditorIdpath · string · påkrævet
200OK · object
404Fejl (RFC 9457) · Problem
curl -X GET https://api.fortapay.dk/v1/creditors/{creditorId}/settlement-account-changes \
-H "Authorization: Bearer $FP_KEY"
POST /creditors/{creditorId}/settlement-account-changes/{changeId}/approve
ÆNDRET (pay-sikkerhed2 T6-9, 18-10-2026). To nøgler er ikke to personer: den der havde to konto-brede admin-nøgler, kunne bede med den ene og godkende med den anden. En ny afregningskonto godkendes nu af en ADMINISTRATOR i kreditorfladen (Indstillinger → Kreditor), en navngiven person med andet trin. Databasens værn kræver det samme. Afvisning (…/reject) kan stadig ske med en admin-nøgle.
creditorIdpath · string · påkrævet
changeIdpath · string · påkrævet
Idempotency-Keyheader · string (uuid) · påkrævet
Obligatorisk på alle POST/PATCH/DELETE. Lever 24 timer.
403Fejl (RFC 9457) · Problem
curl -X POST https://api.fortapay.dk/v1/creditors/{creditorId}/settlement-account-changes/{changeId}/approve \
-H "Authorization: Bearer $FP_KEY" \
-H "Idempotency-Key: $(uuidgen)"
POST /creditors/{creditorId}/settlement-account-changes/{changeId}/reject
creditorIdpath · string · påkrævet
changeIdpath · string · påkrævet
Idempotency-Keyheader · string (uuid) · påkrævet
Obligatorisk på alle POST/PATCH/DELETE. Lever 24 timer.
200OK · SettlementAccountChange
404Fejl (RFC 9457) · Problem
409Fejl (RFC 9457) · Problem
curl -X POST https://api.fortapay.dk/v1/creditors/{creditorId}/settlement-account-changes/{changeId}/reject \
-H "Authorization: Bearer $FP_KEY" \
-H "Idempotency-Key: $(uuidgen)"
GET /creditors/{creditorId}/rails
creditorIdpath · string · påkrævet
200OK · liste af RailStatus
curl -X GET https://api.fortapay.dk/v1/creditors/{creditorId}/rails \
-H "Authorization: Bearer $FP_KEY"
GET /creditors/{creditorId}/termination-exports
TILFØJET af pay-r-eksport 27-09-2026 (R-27, GDPR art. 28, stk. 3, litra g). ZIP'en (alle dokumenter som PDF, kontrolspor og data for kreditoren) dannes af driften med python -m app.services.ophoerseksport og udleveres ikke over API'et. current = ingen hændelse for kreditoren siden eksporten; den kommende ophørssletning kræver en gældende eksport (409 export_required).
creditorIdpath · string · påkrævet
200OK · object
404Fejl (RFC 9457) · Problem
curl -X GET https://api.fortapay.dk/v1/creditors/{creditorId}/termination-exports \
-H "Authorization: Bearer $FP_KEY"
GET /creditors/{creditorId}/recovery
TILFØJET af pay-recovery 15-10-2026. Hver matchet indbetaling (netto efter refusioner) på en faktura med forfald i [from, to] tæller ÉT sted: til tiden, ellers den første af inkasso, afdrag, SMS, betalingslink, rykker 3/2/1, påmindelse, «efter forfald, før rykker» — vurderet den dag pengene kom. reconciled = summen over mekanismerne er lig alt indbetalt på periodens fakturaer (selvstændig optælling). Uden from/to: forrige måned. Højst 366 dage. Samme tal og samme port som kreditorfladens Nøgletal (409 noegletal_not_enabled).
creditorIdpath · string · påkrævet
fromquery · string (date) · valgfri
toquery · string (date) · valgfri
200OK · RecoveryReport
400Fejl (RFC 9457) · Problem
404Fejl (RFC 9457) · Problem
409Fejl (RFC 9457) · Problem
curl -X GET https://api.fortapay.dk/v1/creditors/{creditorId}/recovery \
-H "Authorization: Bearer $FP_KEY"
GET /creditors/{creditorId}/exceptions
TILFØJET af pay-recovery 15-10-2026. Samme prædikat som kreditorfladens fane «Hvorfor sker der intet?»: åbne fakturaer med en indsigelse, et ukendt PSP-svar, en fejlet udsendelse, et bogføringshold, en afvigelse fra regnskabet, et rykkerværn (reelt betalt) eller en begrænset debitor — og mulige dubletter uanset status. reasons bærer også rykkermotorens port (dunning_gate, med gate). Ældste forfald først.
creditorIdpath · string · påkrævet
cursorquery · string · valgfri
limitquery · integer · valgfri
200OK · object
400Fejl (RFC 9457) · Problem
404Fejl (RFC 9457) · Problem
curl -X GET https://api.fortapay.dk/v1/creditors/{creditorId}/exceptions \
-H "Authorization: Bearer $FP_KEY"
GET /creditors/{creditorId}/rails/{rail}
TILFØJET af pay-integration 11-09 (fase 2A). agreement_ref er kreditorens EGEN aftale hos ordningen (BS: PBS-nr.); config er ikke-hemmelig opsætning. Status ændres ikke her — den følger onboarding-tjeklisten.
creditorIdpath · string · påkrævet
railpath · string · påkrævet
200OK · RailConfig
404Fejl (RFC 9457) · Problem
curl -X GET https://api.fortapay.dk/v1/creditors/{creditorId}/rails/{rail} \
-H "Authorization: Bearer $FP_KEY"
PATCH /creditors/{creditorId}/rails/{rail}
creditorIdpath · string · påkrævet
railpath · string · påkrævet
Idempotency-Keyheader · string (uuid) · påkrævet
Obligatorisk på alle POST/PATCH/DELETE. Lever 24 timer.
RailConfigUpdateagreement_refstring · valgfri
BS: kreditorens PBS-nr. (1-8 cifre; gemmes med 8). FI: kreditorens FI-kreditornr. (præcis 8 cifre)
configobject · valgfri
Tilladte nøgler afhænger af røret — en ukendt nøgle giver 422 (config.<nøgle>, code unsupported)
200OK · RailConfig
404Fejl (RFC 9457) · Problem
409Fejl (RFC 9457) · Problem
422Fejl (RFC 9457) · Problem
curl -X PATCH https://api.fortapay.dk/v1/creditors/{creditorId}/rails/{rail} \
-H "Authorization: Bearer $FP_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d @- <<'JSON'
{}
JSON
GET /creditors/{creditorId}/onboarding
TILFØJET af pay-fundament 11-09 (B8). Trin markeres gennemført af Forta Pay (platform-rollen), ikke af kreditors egen nøgle. Et rør kan ikke blive active i live før dets blokerende trin (inkl. dpa_signed) er completed — håndhævet i databasen. I sandbox står trinene som waived_sandbox.
creditorIdpath · string · påkrævet
200OK · OnboardingChecklist
404Fejl (RFC 9457) · Problem
curl -X GET https://api.fortapay.dk/v1/creditors/{creditorId}/onboarding \
-H "Authorization: Bearer $FP_KEY"
POST /creditors/{creditorId}/onboarding/dpa-acceptance
TILFØJET af pay-portalonb (PORTAL-ONB, design-api-opus §7.1). Kræver scope admin. Acceptén gemmes med versionen OG sha256 af teksten i den version (GET …/onboarding → dpa), og dpa_signed.evidence_ref peger på den. DPA'en er det ENESTE trin kreditoren selv gør completed — alle andre indsendes (…/steps/{step}/submit) og godkendes af Forta Pay. Et udkast (dpa.final=false) kan kun accepteres i sandbox.
creditorIdpath · string · påkrævet
Idempotency-Keyheader · string (uuid) · påkrævet
Obligatorisk på alle POST/PATCH/DELETE. Lever 24 timer.
DpaAcceptanceCreatedpa_versionstring · påkrævet
Skal være den gældende (OnboardingChecklist.dpa.version)
signer_namestring · påkrævet
signer_titlestring · påkrævet
retention_monthsobject | null · valgfri
TILFØJET af pay-r-dpa (R-21, Bilag C.4): kreditorens valg af opbevaringsperiode i hele måneder pr. kategori (bilag, kontrolspor, kontakt, betalingsaftaler, debitor_uden_bilag). En udeladt kategori får forslaget. Ukendt kategori eller et tal uden for rammen → 422 med feltet opbevaring.<kategori>.
201OK · DpaAcceptance
404Fejl (RFC 9457) · Problem
409`dpa_version_mismatch` (ikke den gældende; `current_version` i svaret) · `dpa_version_not_final` (udkast i live) · `dpa_already_accepted` · Problem
422Fejl (RFC 9457) · Problem
curl -X POST https://api.fortapay.dk/v1/creditors/{creditorId}/onboarding/dpa-acceptance \
-H "Authorization: Bearer $FP_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d @- <<'JSON'
{
"dpa_version": "…",
"signer_name": "…",
"signer_title": "…"
}
JSON
POST /creditors/{creditorId}/onboarding/steps/{step}/submit
TILFØJET af pay-portalonb (PORTAL-ONB). Kræver scope admin. Kun trin med owner = creditor eller bank (ikke dpa_signed). Forta Pay godkender (completed) eller afviser (tilbage til missing med decision_reason). Håndhævet i databasen: kreditorens egen nøgle kan ikke gøre et trin completed.
creditorIdpath · string · påkrævet
steppath · string · påkrævet
Idempotency-Keyheader · string (uuid) · påkrævet
Obligatorisk på alle POST/PATCH/DELETE. Lever 24 timer.
OnboardingStepSubmitevidencestring · påkrævet
Fri tekst: hvad beviset er og hvor det står (fx «MPS' kvittering 3/10, sag 55123»). Forta Pay henter ingen URL
200OK · OnboardingStep
404Fejl (RFC 9457) · Problem
409`step_not_submittable` — DPA-trinet, et trin Forta Pay selv registrerer (`scheme`/`forta_pay`), eller et trin der allerede er `completed`/`waived_sandbox` · Problem
422Fejl (RFC 9457) · Problem
curl -X POST https://api.fortapay.dk/v1/creditors/{creditorId}/onboarding/steps/{step}/submit \
-H "Authorization: Bearer $FP_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d @- <<'JSON'
{
"evidence": "…"
}
JSON
GET /approval-requests/{approvalRequestId}
status: pending → venter på en anden persons godkendelse i kreditorfladen. approved → handlingen er udført, og result_id er reversalen, inkassosagen eller fakturaen. rejected → intet er udført; decision_note er grunden. withdrawn → trukket tilbage (fx fordi fire øjne blev slået fra). Handlingen udføres højst én gang. Hvert endeligt udfald — approved, rejected og withdrawn (også når fire øjne slås fra med åbne anmodninger) — meldes som hændelsen approval_request.decided (webhook og /events), præcis én gang pr. anmodning, med anmodningen i data.object (samme form som her) — så kalderen ikke behøver at polle. Selve OPRETTELSEN (fra API'et som her, og fra kreditorfladen) meldes som approval_request.created, præcis én gang pr. anmodning.
approvalRequestIdpath · string · påkrævet
200Fire øjne: anmodningen (202 = oprettet, intet udført endnu) · ApprovalRequest
404Fejl (RFC 9457) · Problem
curl -X GET https://api.fortapay.dk/v1/approval-requests/{approvalRequestId} \
-H "Authorization: Bearer $FP_KEY"