API
Gavekort
Fem endepunkter dækker hele kortets liv gennem API'et: udsted, list, slå op, indløs, fortryd.
| Metode | Sti | Gør |
|---|---|---|
| POST | /v1/api/giftcards | Udsteder et kort |
| GET | /v1/api/giftcards | Lister forretningens kort |
| GET | /v1/api/giftcards/{code} | Slår ét kort op |
| POST | /v1/api/giftcards/{code}/redeem | Indløser et beløb |
| POST | /v1/api/redemptions/{id}/reverse | Fortryder en indløsning |
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
- KUV-DLT2-9GPW
- Saldo
- 500,00 kr.
- Status
- active
Forespørgsel
GET /v1/api/giftcards/KUV-DLT2-9GPW
Authorization: Bearer pk_test_…
Ingen krop. Koden står i stien.
Svar
200 OK
{
"giftCard": {
"id": "gc_3n8qk2vh",
"code": "KUV-DLT2-9GPW",
"orderId": null,
"status": "active",
"initialOre": 50000,
"balanceOre": 50000,
"expiresAt": "2029-01-15T12:00:00.000Z",
"merchantSlug": "cafe-noir",
"origin": "b2b",
"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 — solgt fra dit eget system, faktureret til en virksomhed, eller givet med på huset.
| Felt | Type | Krav |
|---|---|---|
| amountOre | heltal | Påkrævet. Beløb i øre, mindst 1. |
| validityMonths | heltal | Valgfrit. Mindst 36 — kortere afvises. |
| origin | sold | b2b | comp | Påkrævet. Se herunder. |
| reference | tekst | Valgfrit. Din egen note, fx et fakturanummer. Højst 200 tegn. |
origin er påkrævet her, hvor det er valgfrit i dashboardet. Et system udsteder uden nogen kigger med, og valget følger kortet resten af dets levetid: sold betyder, at en kunde har betalt for det, og så bærer kortet kundens ret til at få restbeløbet udbetalt kontant. b2b og comp gør ikke.
curl -X POST https://api.kuvert.dk/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.kuvert.dk/v1/api/giftcards \
-H "Authorization: Bearer pk_live_..."Svarer 200 med forretningens kort under giftCards.
Slå et kort op
curl https://api.kuvert.dk/v1/api/giftcards/KUV-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.
| Felt | Type | Krav |
|---|---|---|
| amountOre | heltal | Påkrævet. Beløb i øre, mindst 1. |
| location | tekst | Valgfrit. Hvor det skete, fx "Vesterbro". Højst 120 tegn. |
| idempotencyKey | tekst | Valgfrit, men anbefalet. Samme nøgle to gange trækker kun én gang. |
curl -X POST https://api.kuvert.dk/v1/api/giftcards/KUV-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:
{
"id": "red_8f21c0b4",
"code": "KUV-XXXX-XXXX",
"amountOre": 6400,
"remainingBalanceOre": 43600,
"status": "active"
}Gem id. Det er posteringen, og det er det eneste, der kan fortryde netop denne indløsning.
status er kortets tilstand efter indløsningen — en af active, redeemed, expired, void, disputed. Er saldoen brugt op, skifter den til redeemed.
Fortryd en indløsning
Lægger beløbet tilbage på kortet. Det sker som en ny postering med negativt beløb, der peger på den, den fortryder — ingenting slettes, og begge linjer bliver stående i kortets historik. Var kortet brugt helt op, bliver det aktivt igen.
curl -X POST https://api.kuvert.dk/v1/api/redemptions/red_8f21c0b4/reverse \
-H "Authorization: Bearer pk_live_..."Svarer 200 med posteringen, der lagde beløbet tilbage:
{
"id": "red_2c77af90",
"code": "KUV-XXXX-XXXX",
"amountOre": -6400,
"remainingBalanceOre": 50000,
"status": "active"
}| Status | Betyder |
|---|---|
| 404 redemption_not_found | Posteringen findes ikke på din forretning. |
| 409 already_reversed | Den er fortrudt før. Én gang, aldrig to. |
| 409 not_reversible | Posteringen er selv en fortrydelse eller en kontant udbetaling. |
| 409 card_inactive | Kortet er annulleret eller frosset under en indsigelse. |