Spring til indhold

API

Gavekort

Fire endepunkter dækker hele kortets liv gennem API'et: udsted, list, slå op, indløs.

MetodeStiGør
POST/v1/api/giftcardsUdsteder et kort
GET/v1/api/giftcardsLister forretningens kort
GET/v1/api/giftcards/{code}Slår ét kort op
POST/v1/api/giftcards/{code}/redeemIndløser et beløb

Udsted et kort

Udsteder et kort uden om betalingsflowet — til et B2B-salg mod faktura eller et kort givet med på huset.

FeltTypeKrav
amountOreheltalPåkrævet. Beløb i øre, mindst 1.
validityMonthsheltalValgfrit. Mindst 36 — kortere afvises.
originb2b | compValgfrit. Standard er comp.
referencetekstValgfrit. Din egen note, fx et fakturanummer. Højst 200 tegn.
curl -X POST https://api.pirr.fun/v1/api/giftcards \
  -H "Authorization: Bearer pk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "amountOre": 50000,
    "origin": "b2b",
    "reference": "Faktura 2026-114"
  }'

Svarer 201 med kortet under giftCard. Beløbet er i øre — 50000 er 500,00 kr.

List kort

curl https://api.pirr.fun/v1/api/giftcards \
  -H "Authorization: Bearer pk_live_..."

Svarer 200 med forretningens kort under giftCards.

Slå et kort op

curl https://api.pirr.fun/v1/api/giftcards/GC-XXXX-XXXX \
  -H "Authorization: Bearer pk_live_..."

Svarer 200 med kortet under giftCard, eller 404 hvis koden ikke findes på din forretning.

Indløs

Trækker et beløb fra kortets saldo. Koden står i stien, beløbet i kroppen.

FeltTypeKrav
amountOreheltalPåkrævet. Beløb i øre, mindst 1.
locationtekstValgfrit. Hvor det skete, fx "Vesterbro". Højst 120 tegn.
idempotencyKeytekstValgfrit, men anbefalet. Samme nøgle to gange trækker kun én gang.
curl -X POST https://api.pirr.fun/v1/api/giftcards/GC-XXXX-XXXX/redeem \
  -H "Authorization: Bearer pk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "amountOre": 6400,
    "location": "Vesterbro",
    "idempotencyKey": "pos-terminal-3-1753440000"
  }'

Svarer 200 med resultatet af indløsningen:

{
  "code": "GC-XXXX-XXXX",
  "amountOre": 6400,
  "remainingBalanceOre": 43600,
  "status": "active"
}

status er kortets tilstand efter indløsningen — en af active, redeemed, expired, void. Er saldoen brugt op, skifter den til redeemed.