Spring til indhold
Forta Pay

Reference

Refusion

Forta Pay API v1

5 operationer

Kreditorens refusionsordrer (højst 200), evt. for én kreditnota

GET /creditors/{creditorId}/refund-orders

Parametre

creditorId

path · string · påkrævet

source_credit_note_id

query · string · valgfri

Svar

200

OK · object

404

Fejl (RFC 9457) · Problem

curl
curl -X GET https://api.fortapay.dk/v1/creditors/{creditorId}/refund-orders \
  -H "Authorization: Bearer $FP_KEY"

Bestil refusionen af en spejlet kreditnota (én ordre pr. kreditnota, for altid)

POST /creditors/{creditorId}/refund-orders

🔴 Bag et slukket flag (FORTA_PAY_REFUSIONSORDRER, tom = fra): slukket svarer ruten 404. Spor pay-refusion-f0 (rapporter/syntese-refusion.md §3, G82). Pengene går altid fra kreditorens egen konto (B1). Forudsætter trin 1: POST /invoices/{id}/credit med external_ref = source_credit_note_id (ellers 422 credit_note_not_mirrored). Pay vælger vejen pr. betaling: kort/MobilePay betalt GENNEM Pay → PSP-refund (automatisk); alt andet → kreditor betaler fra egen konto og registrerer en kvittering (.../receipt, altid fire øjne). Virkningen på fakturaen er settle_existing_credit: kun reversed_total (ingen ny kreditering). Fra kreditorens fire-øjne-grænse (refund_from, kumuleret pr. betaling) står ordren awaiting_approval med en api-refund-order-anmodning. 201 ny · 200 samme forretningsnøgle og samme request_hash.

Parametre

creditorId

path · string · påkrævet

Idempotency-Key

header · string (uuid) · påkrævet

Obligatorisk på alle POST/PATCH/DELETE. Lever 24 timer.

Krop · RefundOrderCreate

source

string · påkrævet

source_credit_note_id

string · påkrævet

Samme værdi som external_ref på trin 1 (/invoices/{id}/credit)

credit_note_number

string | null · valgfri

credit_note_customer

string · påkrævet

R-W11: kreditnotaens kunde i kilden; skal være fakturaens debitor (external_ref)

invoice

object · påkrævet

amount

Money · påkrævet

credit_note_total

Money · påkrævet

already_refunded_elsewhere

Money | null · valgfri

allocations

array | null · valgfri

Udeladt → Pay vælger én betaling der alene kan bære beløbet. Angivet → summen skal være præcis amount.

route

string · valgfri

auto

reason

string | null · valgfri

Svar

200

Findes allerede med samme hash · RefundOrder

201

Oprettet · RefundOrder

404

Fejl (RFC 9457) · Problem

409

`refund_order_conflict` (samme kreditnota, anden hash) · `refund_in_progress` · `payment_not_refundable` · `four_eyes_pending` · Problem

422

`credit_note_debtor_mismatch` (R-W11) · `credit_note_not_mirrored` · `credit_note_total_mismatch` · `refund_exceeds_credit_note` · `refund_exceeds_customer_credit` · `refund_exceeds_payment` · `allocation_mismatch` · `allocation_required` · `currency_not_supported` · `reference_not_found` · `refund_psp_reference_missing` · Problem

curl
curl -X POST https://api.fortapay.dk/v1/creditors/{creditorId}/refund-orders \
  -H "Authorization: Bearer $FP_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d @- <<'JSON'
{
  "source": "…",
  "source_credit_note_id": "…",
  "credit_note_customer": "…",
  "invoice": {
    "id": "…"
  },
  "amount": {
    "amount": 0
  },
  "credit_note_total": {
    "amount": 0
  }
}
JSON

Én refusionsordre

GET /creditors/{creditorId}/refund-orders/{refundOrderId}

Parametre

creditorId

path · string · påkrævet

refundOrderId

path · string · påkrævet

Svar

200

OK · RefundOrder

404

Fejl (RFC 9457) · Problem

curl
curl -X GET https://api.fortapay.dk/v1/creditors/{creditorId}/refund-orders/{refundOrderId} \
  -H "Authorization: Bearer $FP_KEY"

Annullér en refusionsordre før noget er sendt

POST /creditors/{creditorId}/refund-orders/{refundOrderId}/cancel

🔴 Bag et slukket flag (FORTA_PAY_REFUSIONSORDRER, tom = fra): slukket svarer ruten 404. Spor pay-refusion-f0 (rapporter/syntese-refusion.md §3, G82). Pengene går altid fra kreditorens egen konto (B1). Åbne fire-øjne-anmodninger på ordren trækkes tilbage. Er et ben sendt eller gennemført: 409 already_dispatched.

Parametre

creditorId

path · string · påkrævet

refundOrderId

path · string · påkrævet

Idempotency-Key

header · string (uuid) · påkrævet

Obligatorisk på alle POST/PATCH/DELETE. Lever 24 timer.

Svar

200

Annulleret · RefundOrder

404

Fejl (RFC 9457) · Problem

409

`already_dispatched` · `invalid_state_transition` · Problem

curl
curl -X POST https://api.fortapay.dk/v1/creditors/{creditorId}/refund-orders/{refundOrderId}/cancel \
  -H "Authorization: Bearer $FP_KEY" \
  -H "Idempotency-Key: $(uuidgen)"

Kreditor HAR betalt benet fra egen konto — kvittering (altid fire øjne)

POST /creditors/{creditorId}/refund-orders/{refundOrderId}/allocations/{allocationId}/receipt

🔴 Bag et slukket flag (FORTA_PAY_REFUSIONSORDRER, tom = fra): slukket svarer ruten 404. Spor pay-refusion-f0 (rapporter/syntese-refusion.md §3, G82). Pengene går altid fra kreditorens egen konto (B1). Svarer ALTID 202 + en ApprovalRequest (refunder-bank). Godkendt af en ANDEN person registreres refunden (REFUND-EXT's vej, ingen penge flyttet af Pay) og benet bliver completed. Kun bank- og eksterne ben; beløbet skal være benets; en bankoverførsel kræver account_last4.

Parametre

creditorId

path · string · påkrævet

refundOrderId

path · string · påkrævet

allocationId

path · string · påkrævet

Idempotency-Key

header · string (uuid) · påkrævet

Obligatorisk på alle POST/PATCH/DELETE. Lever 24 timer.

Krop · RefundReceiptCreate

reference

string · påkrævet

account_last4

string | null · valgfri

paid_on

string (date) · påkrævet

amount

Money · påkrævet

Svar

202

Fire øjne: anmodningen (202 = oprettet, intet udført endnu) · ApprovalRequest

404

Fejl (RFC 9457) · Problem

409

`refund_allocation_automatic` · `invalid_state_transition` · `four_eyes_pending` · Problem

422

`receipt_amount_mismatch` · `validation_failed` · Problem

curl
curl -X POST https://api.fortapay.dk/v1/creditors/{creditorId}/refund-orders/{refundOrderId}/allocations/{allocationId}/receipt \
  -H "Authorization: Bearer $FP_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d @- <<'JSON'
{
  "reference": "…",
  "paid_on": "…",
  "amount": {
    "amount": 0
  }
}
JSON