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

Prøv det her på siden

Konsollen herunder kører de samme skemaer og den samme indløsningsregel som API'et, mod et kort, der kun findes i din browser. Ret i kroppen, og se hvilken status dit eget kald ville få.

Konsollen

Kort
PIRR-DLT2-9GPW
Saldo
500,00 kr.
Status
active

Forespørgsel

GET /v1/api/giftcards/PIRR-DLT2-9GPW

Authorization: Bearer pk_test_…

Ingen krop. Koden står i stien.

Svar

200 OK

{
  "giftCard": {
    "id": "gc_3n8qk2vh",
    "code": "PIRR-DLT2-9GPW",
    "orderId": null,
    "status": "active",
    "initialOre": 50000,
    "balanceOre": 50000,
    "expiresAt": "2029-01-15T12:00:00.000Z",
    "merchantSlug": "cafe-noir",
    "reference": "Faktura 2026-114",
    "punchValueOre": null
  }
}

Saldoen er regnet ud af posteringerne, ikke læst af et felt — det er derfor den altid stemmer med indløsningerne.

Svar 200 OK. Saldoen er regnet ud af posteringerne, ikke læst af et felt — det er derfor den altid stemmer med indløsningerne.

Konsollen kalder ikke ud på nettet — den kører de samme skemaer og den samme indløsningsregel som API'et, mod et kort, der kun findes i din browser. Statuskoder og fejltekster er derfor dem, din egen integration får.

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.
Terminal
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

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

Svarer 200 med forretningens kort under giftCards.

Slå et kort op

Terminal
curl https://api.pirr.fun/v1/api/giftcards/PIRR-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.
Terminal
curl -X POST https://api.pirr.fun/v1/api/giftcards/PIRR-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:

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

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