{"openapi":"3.1.0","info":{"title":"getpayment API","version":"1.0.0","description":"Swish-betalningar via getpayment. Autentisera med `Authorization: Bearer gp_live_…` (produktion) eller `gp_test_…` (Swish testmiljö). Alla belopp anges i ören. Läs INTEGRATION.md för flöden, webhooks och Swish-konton.","contact":{"name":"getpayment","email":"hello@getpayment.se","url":"https://getpayment.se"}},"components":{"securitySchemes":{"apiKey":{"type":"http","scheme":"bearer","description":"gp_live_… / gp_test_… (handlare) eller gp_partner_live_… / gp_partner_test_… (partner) — skapas i dashboarden"}},"schemas":{}},"paths":{"/v1/swish-accounts":{"get":{"summary":"Lista Swish-nummer","tags":["Swish-konton"],"description":"Ett konto (merchant) kan ha flera Swish-nummer, t.ex. ett per butik eller varumärke. Använd `id` som `swishAccountId` när ni skapar betalningar. Endast konton med status `active` kan ta emot betalningar.","responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"label":{"type":"string"},"swishNumber":{"type":"string","description":"Handlarens Swish-nummer (123…)"},"status":{"type":"string","enum":["pending_bank","active","suspended"]},"createdAt":{"type":"string","format":"date-time"}},"required":["id","label","swishNumber","status","createdAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/payments":{"post":{"summary":"Skapa betalning","tags":["Payments"],"description":"Skapar en Swish-betalningsbegäran. Med `payerAlias` får betalaren en push i Swish-appen (e-commerce). Utan `payerAlias` returneras `qr` med token, SVG och app-länk (m-commerce). Skicka `Idempotency-Key` för säker omsändning.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"amount":{"type":"integer","minimum":100,"maximum":99999999999999,"description":"Belopp i ören. Obligatoriskt utom vid dragning på medgivande (mandateId), där medgivandets belopp är standard."},"swishAccountId":{"type":"string","format":"uuid","description":"Vilket av handlarens Swish-nummer som ska ta emot betalningen. Valfritt om handlaren har exakt ett aktivt nummer, annars obligatoriskt."},"message":{"type":"string","maxLength":50,"pattern":"^[a-zA-Z0-9åäöÅÄÖ:;.,?!()\"'\\- ]*$","description":"Visas för betalaren i Swish-appen. Max 50 tecken."},"payerAlias":{"type":"string","pattern":"^46\\d{8,9}$","description":"Betalarens mobilnummer (46701234567). Anges ⇒ e-commerce: betalaren får en push i Swish-appen. Utelämnas ⇒ m-commerce: svaret innehåller QR-kod och app-länk."},"reference":{"type":"string","pattern":"^[A-Za-z0-9-]{1,35}$","description":"Er egen referens, t.ex. ordernummer (1–35 tecken A-Za-z0-9-). Syns på kontoutdrag."},"returnUrl":{"type":"string","format":"uri","pattern":"^https\\:\\/\\/","description":"m-commerce: dit Swish-appen skickar tillbaka betalaren efteråt. Används i appLink."},"metadata":{"type":"object","additionalProperties":{"type":"string","maxLength":500},"description":"Egna nyckel/värde-par som följer med betalningen och i webhooks"},"mandateId":{"type":"string","format":"uuid","description":"Dragning på ett aktivt medgivande (Återkommande betalningar). Då ignoreras payerAlias/swishAccountId."}},"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","maxLength":255},"in":"header","name":"idempotency-key","required":false}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["CREATED","PAID","DECLINED","ERROR","CANCELLED"]},"flow":{"type":"string","enum":["ecommerce","mcommerce"]},"live":{"type":"boolean","description":"false = skapad med testnyckel mot Swish simulator"},"amount":{"type":"integer","minimum":100,"maximum":99999999999999,"description":"Belopp i ören (heltal). 100 = 1 kr."},"currency":{"type":"string","enum":["SEK"]},"swishAccount":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"label":{"type":"string","description":"Etikett som handlaren satt, t.ex. butiksnamn"}},"required":["id","label"],"additionalProperties":false,"description":"Det Swish-nummer (konto) som betalningen tas emot på"},"message":{"type":"string","nullable":true},"reference":{"type":"string","nullable":true},"payerAlias":{"type":"string","nullable":true,"description":"Maskerat mobilnummer, t.ex. 46*****567"},"swishPaymentReference":{"type":"string","nullable":true,"description":"Swish betalningsreferens (finns när status är PAID)"},"errorCode":{"type":"string","nullable":true,"description":"Swish felkod vid DECLINED/ERROR"},"errorMessage":{"type":"string","nullable":true,"description":"Läsbar förklaring på svenska"},"metadata":{"type":"object","additionalProperties":{"type":"string","maxLength":500},"description":"Egna nyckel/värde-par som följer med betalningen och i webhooks","nullable":true},"qr":{"type":"object","properties":{"token":{"type":"string","description":"Swish PaymentRequestToken"},"svg":{"type":"string","description":"QR-kod som SVG (innehållet är token med prefixet D)"},"appLink":{"type":"string","description":"swish://paymentrequest?token=… — öppnar Swish-appen på samma enhet"}},"required":["token","svg","appLink"],"additionalProperties":false,"description":"Endast m-commerce (ingen payerAlias)"},"mandateId":{"type":"string","format":"uuid","nullable":true,"description":"Satt när betalningen är en dragning på ett medgivande."},"createdAt":{"type":"string","format":"date-time"},"paidAt":{"type":"string","format":"date-time","nullable":true}},"required":["id","status","flow","live","amount","currency","swishAccount","message","reference","payerAlias","swishPaymentReference","errorCode","errorMessage","metadata","createdAt","paidAt"],"additionalProperties":false}}}},"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["CREATED","PAID","DECLINED","ERROR","CANCELLED"]},"flow":{"type":"string","enum":["ecommerce","mcommerce"]},"live":{"type":"boolean","description":"false = skapad med testnyckel mot Swish simulator"},"amount":{"type":"integer","minimum":100,"maximum":99999999999999,"description":"Belopp i ören (heltal). 100 = 1 kr."},"currency":{"type":"string","enum":["SEK"]},"swishAccount":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"label":{"type":"string","description":"Etikett som handlaren satt, t.ex. butiksnamn"}},"required":["id","label"],"additionalProperties":false,"description":"Det Swish-nummer (konto) som betalningen tas emot på"},"message":{"type":"string","nullable":true},"reference":{"type":"string","nullable":true},"payerAlias":{"type":"string","nullable":true,"description":"Maskerat mobilnummer, t.ex. 46*****567"},"swishPaymentReference":{"type":"string","nullable":true,"description":"Swish betalningsreferens (finns när status är PAID)"},"errorCode":{"type":"string","nullable":true,"description":"Swish felkod vid DECLINED/ERROR"},"errorMessage":{"type":"string","nullable":true,"description":"Läsbar förklaring på svenska"},"metadata":{"type":"object","additionalProperties":{"type":"string","maxLength":500},"description":"Egna nyckel/värde-par som följer med betalningen och i webhooks","nullable":true},"qr":{"type":"object","properties":{"token":{"type":"string","description":"Swish PaymentRequestToken"},"svg":{"type":"string","description":"QR-kod som SVG (innehållet är token med prefixet D)"},"appLink":{"type":"string","description":"swish://paymentrequest?token=… — öppnar Swish-appen på samma enhet"}},"required":["token","svg","appLink"],"additionalProperties":false,"description":"Endast m-commerce (ingen payerAlias)"},"mandateId":{"type":"string","format":"uuid","nullable":true,"description":"Satt när betalningen är en dragning på ett medgivande."},"createdAt":{"type":"string","format":"date-time"},"paidAt":{"type":"string","format":"date-time","nullable":true}},"required":["id","status","flow","live","amount","currency","swishAccount","message","reference","payerAlias","swishPaymentReference","errorCode","errorMessage","metadata","createdAt","paidAt"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"get":{"summary":"Lista betalningar","tags":["Payments"],"description":"Nyaste först. Filtrera på status, Swish-konto och datum. Paginera med `cursor` = `nextCursor` från föregående svar.","parameters":[{"schema":{"type":"string","enum":["CREATED","PAID","DECLINED","ERROR","CANCELLED"]},"in":"query","name":"status","required":false},{"schema":{"type":"string","format":"uuid"},"in":"query","name":"swishAccountId","required":false},{"schema":{"type":"string","format":"date-time"},"in":"query","name":"from","required":false,"description":"Skapad från och med (ISO 8601)"},{"schema":{"type":"string","format":"date-time"},"in":"query","name":"to","required":false,"description":"Skapad till och med (ISO 8601)"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"in":"query","name":"limit","required":false},{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Värdet nextCursor från föregående svar"}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["CREATED","PAID","DECLINED","ERROR","CANCELLED"]},"flow":{"type":"string","enum":["ecommerce","mcommerce"]},"live":{"type":"boolean","description":"false = skapad med testnyckel mot Swish simulator"},"amount":{"type":"integer","minimum":100,"maximum":99999999999999,"description":"Belopp i ören (heltal). 100 = 1 kr."},"currency":{"type":"string","enum":["SEK"]},"swishAccount":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"label":{"type":"string","description":"Etikett som handlaren satt, t.ex. butiksnamn"}},"required":["id","label"],"additionalProperties":false,"description":"Det Swish-nummer (konto) som betalningen tas emot på"},"message":{"type":"string","nullable":true},"reference":{"type":"string","nullable":true},"payerAlias":{"type":"string","nullable":true,"description":"Maskerat mobilnummer, t.ex. 46*****567"},"swishPaymentReference":{"type":"string","nullable":true,"description":"Swish betalningsreferens (finns när status är PAID)"},"errorCode":{"type":"string","nullable":true,"description":"Swish felkod vid DECLINED/ERROR"},"errorMessage":{"type":"string","nullable":true,"description":"Läsbar förklaring på svenska"},"metadata":{"type":"object","additionalProperties":{"type":"string","maxLength":500},"description":"Egna nyckel/värde-par som följer med betalningen och i webhooks","nullable":true},"qr":{"type":"object","properties":{"token":{"type":"string","description":"Swish PaymentRequestToken"},"svg":{"type":"string","description":"QR-kod som SVG (innehållet är token med prefixet D)"},"appLink":{"type":"string","description":"swish://paymentrequest?token=… — öppnar Swish-appen på samma enhet"}},"required":["token","svg","appLink"],"additionalProperties":false,"description":"Endast m-commerce (ingen payerAlias)"},"mandateId":{"type":"string","format":"uuid","nullable":true,"description":"Satt när betalningen är en dragning på ett medgivande."},"createdAt":{"type":"string","format":"date-time"},"paidAt":{"type":"string","format":"date-time","nullable":true}},"required":["id","status","flow","live","amount","currency","swishAccount","message","reference","payerAlias","swishPaymentReference","errorCode","errorMessage","metadata","createdAt","paidAt"],"additionalProperties":false}},"nextCursor":{"type":"string","nullable":true}},"required":["data","nextCursor"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/payments/{id}":{"get":{"summary":"Hämta betalning","tags":["Payments"],"description":"Returnerar senast verifierad status. Statusändringar bekräftas alltid mot Swish innan de visas här.","parameters":[{"schema":{"type":"string","format":"uuid"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["CREATED","PAID","DECLINED","ERROR","CANCELLED"]},"flow":{"type":"string","enum":["ecommerce","mcommerce"]},"live":{"type":"boolean","description":"false = skapad med testnyckel mot Swish simulator"},"amount":{"type":"integer","minimum":100,"maximum":99999999999999,"description":"Belopp i ören (heltal). 100 = 1 kr."},"currency":{"type":"string","enum":["SEK"]},"swishAccount":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"label":{"type":"string","description":"Etikett som handlaren satt, t.ex. butiksnamn"}},"required":["id","label"],"additionalProperties":false,"description":"Det Swish-nummer (konto) som betalningen tas emot på"},"message":{"type":"string","nullable":true},"reference":{"type":"string","nullable":true},"payerAlias":{"type":"string","nullable":true,"description":"Maskerat mobilnummer, t.ex. 46*****567"},"swishPaymentReference":{"type":"string","nullable":true,"description":"Swish betalningsreferens (finns när status är PAID)"},"errorCode":{"type":"string","nullable":true,"description":"Swish felkod vid DECLINED/ERROR"},"errorMessage":{"type":"string","nullable":true,"description":"Läsbar förklaring på svenska"},"metadata":{"type":"object","additionalProperties":{"type":"string","maxLength":500},"description":"Egna nyckel/värde-par som följer med betalningen och i webhooks","nullable":true},"qr":{"type":"object","properties":{"token":{"type":"string","description":"Swish PaymentRequestToken"},"svg":{"type":"string","description":"QR-kod som SVG (innehållet är token med prefixet D)"},"appLink":{"type":"string","description":"swish://paymentrequest?token=… — öppnar Swish-appen på samma enhet"}},"required":["token","svg","appLink"],"additionalProperties":false,"description":"Endast m-commerce (ingen payerAlias)"},"mandateId":{"type":"string","format":"uuid","nullable":true,"description":"Satt när betalningen är en dragning på ett medgivande."},"createdAt":{"type":"string","format":"date-time"},"paidAt":{"type":"string","format":"date-time","nullable":true}},"required":["id","status","flow","live","amount","currency","swishAccount","message","reference","payerAlias","swishPaymentReference","errorCode","errorMessage","metadata","createdAt","paidAt"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/refunds":{"post":{"summary":"Skapa återbetalning","tags":["Refunds"],"description":"Återbetalar hela eller delar av en betalning med status PAID. Summan av alla återbetalningar kan aldrig överstiga det betalda beloppet. Pengarna dras från det Swish-nummer som tog emot betalningen.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"paymentId":{"type":"string","format":"uuid"},"amount":{"type":"integer","minimum":100,"maximum":99999999999999,"description":"Ören. Utelämnas ⇒ hela återstående beloppet."},"message":{"type":"string","maxLength":50,"pattern":"^[a-zA-Z0-9åäöÅÄÖ:;.,?!()\"'\\- ]*$"},"reference":{"type":"string","pattern":"^[A-Za-z0-9-]{1,35}$"}},"required":["paymentId"],"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","maxLength":255},"in":"header","name":"idempotency-key","required":false}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"paymentId":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["CREATED","VALIDATED","DEBITED","PAID","ERROR"]},"amount":{"type":"integer","minimum":100,"maximum":99999999999999,"description":"Belopp i ören (heltal). 100 = 1 kr."},"currency":{"type":"string","enum":["SEK"]},"swishAccount":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"label":{"type":"string","description":"Etikett som handlaren satt, t.ex. butiksnamn"}},"required":["id","label"],"additionalProperties":false,"description":"Det Swish-nummer (konto) som betalningen tas emot på"},"message":{"type":"string","nullable":true},"reference":{"type":"string","nullable":true},"swishPaymentReference":{"type":"string","nullable":true},"errorCode":{"type":"string","nullable":true},"errorMessage":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"},"paidAt":{"type":"string","format":"date-time","nullable":true}},"required":["id","paymentId","status","amount","currency","swishAccount","message","reference","swishPaymentReference","errorCode","errorMessage","createdAt","paidAt"],"additionalProperties":false}}}},"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"paymentId":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["CREATED","VALIDATED","DEBITED","PAID","ERROR"]},"amount":{"type":"integer","minimum":100,"maximum":99999999999999,"description":"Belopp i ören (heltal). 100 = 1 kr."},"currency":{"type":"string","enum":["SEK"]},"swishAccount":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"label":{"type":"string","description":"Etikett som handlaren satt, t.ex. butiksnamn"}},"required":["id","label"],"additionalProperties":false,"description":"Det Swish-nummer (konto) som betalningen tas emot på"},"message":{"type":"string","nullable":true},"reference":{"type":"string","nullable":true},"swishPaymentReference":{"type":"string","nullable":true},"errorCode":{"type":"string","nullable":true},"errorMessage":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"},"paidAt":{"type":"string","format":"date-time","nullable":true}},"required":["id","paymentId","status","amount","currency","swishAccount","message","reference","swishPaymentReference","errorCode","errorMessage","createdAt","paidAt"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/refunds/{id}":{"get":{"summary":"Hämta återbetalning","tags":["Refunds"],"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"paymentId":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["CREATED","VALIDATED","DEBITED","PAID","ERROR"]},"amount":{"type":"integer","minimum":100,"maximum":99999999999999,"description":"Belopp i ören (heltal). 100 = 1 kr."},"currency":{"type":"string","enum":["SEK"]},"swishAccount":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"label":{"type":"string","description":"Etikett som handlaren satt, t.ex. butiksnamn"}},"required":["id","label"],"additionalProperties":false,"description":"Det Swish-nummer (konto) som betalningen tas emot på"},"message":{"type":"string","nullable":true},"reference":{"type":"string","nullable":true},"swishPaymentReference":{"type":"string","nullable":true},"errorCode":{"type":"string","nullable":true},"errorMessage":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"},"paidAt":{"type":"string","format":"date-time","nullable":true}},"required":["id","paymentId","status","amount","currency","swishAccount","message","reference","swishPaymentReference","errorCode","errorMessage","createdAt","paidAt"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/partner/v1/merchants":{"post":{"summary":"Skapa kundkonto","tags":["Partner"],"description":"Skapar ett kundkonto (merchant) under ert partnerkonto med ett första Swish-nummer i status pending_bank. Svaret innehåller bankInstructions att visa butiksägaren — bankmomentet görs alltid av butiksägaren själv. Kontot faktureras er till partnerpris; inget kort eller Stripe krävs.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"companyName":{"type":"string","minLength":2,"maxLength":200},"orgNumber":{"type":"string","pattern":"^\\d{6}-?\\d{4}$"},"swishNumber":{"type":"string","pattern":"^123\\d{7}$"},"label":{"type":"string","minLength":1,"maxLength":100,"description":"Butiksnamn/etikett som visas i svar och webhooks"},"contactEmail":{"type":"string","format":"email"}},"required":["companyName","orgNumber","swishNumber","label"],"additionalProperties":false}}}},"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"merchantId":{"type":"string","format":"uuid"},"swishAccountId":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["pending_bank","active","suspended"],"description":"Swish-numrets status. Betalningar kräver active"},"bankInstructions":{"type":"string","description":"Färdig svensk instruktion att visa butiksägaren"}},"required":["merchantId","swishAccountId","status","bankInstructions"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"get":{"summary":"Lista kundkonton","tags":["Partner"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"merchantId":{"type":"string","format":"uuid"},"companyName":{"type":"string"},"orgNumber":{"type":"string"},"status":{"type":"string","enum":["onboarding","active","suspended"],"description":"Kontostatus. Betalningar kräver active"},"swishAccounts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"label":{"type":"string"},"swishNumber":{"type":"string","description":"Handlarens Swish-nummer (123…)"},"status":{"type":"string","enum":["pending_bank","active","suspended"]},"createdAt":{"type":"string","format":"date-time"}},"required":["id","label","swishNumber","status","createdAt"],"additionalProperties":false}},"createdAt":{"type":"string","format":"date-time"}},"required":["merchantId","companyName","orgNumber","status","swishAccounts","createdAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/partner/v1/merchants/{id}":{"get":{"summary":"Hämta kundkonto","tags":["Partner"],"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"merchantId":{"type":"string","format":"uuid"},"companyName":{"type":"string"},"orgNumber":{"type":"string"},"status":{"type":"string","enum":["onboarding","active","suspended"],"description":"Kontostatus. Betalningar kräver active"},"swishAccounts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"label":{"type":"string"},"swishNumber":{"type":"string","description":"Handlarens Swish-nummer (123…)"},"status":{"type":"string","enum":["pending_bank","active","suspended"]},"createdAt":{"type":"string","format":"date-time"}},"required":["id","label","swishNumber","status","createdAt"],"additionalProperties":false}},"createdAt":{"type":"string","format":"date-time"}},"required":["merchantId","companyName","orgNumber","status","swishAccounts","createdAt"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/partner/v1/payments":{"post":{"summary":"Skapa betalning för ett kundkonto","tags":["Partner"],"description":"Samma payload som POST /v1/payments plus obligatoriskt merchantId. swishAccountId krävs om kontot har fler än ett aktivt Swish-nummer. Betalningen tas emot på kundens Swish-nummer; ni faktureras partnerpriset.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"amount":{"type":"integer","minimum":100,"maximum":99999999999999,"description":"Belopp i ören. Obligatoriskt utom vid dragning på medgivande (mandateId), där medgivandets belopp är standard."},"swishAccountId":{"type":"string","format":"uuid","description":"Vilket av handlarens Swish-nummer som ska ta emot betalningen. Valfritt om handlaren har exakt ett aktivt nummer, annars obligatoriskt."},"message":{"type":"string","maxLength":50,"pattern":"^[a-zA-Z0-9åäöÅÄÖ:;.,?!()\"'\\- ]*$","description":"Visas för betalaren i Swish-appen. Max 50 tecken."},"payerAlias":{"type":"string","pattern":"^46\\d{8,9}$","description":"Betalarens mobilnummer (46701234567). Anges ⇒ e-commerce: betalaren får en push i Swish-appen. Utelämnas ⇒ m-commerce: svaret innehåller QR-kod och app-länk."},"reference":{"type":"string","pattern":"^[A-Za-z0-9-]{1,35}$","description":"Er egen referens, t.ex. ordernummer (1–35 tecken A-Za-z0-9-). Syns på kontoutdrag."},"returnUrl":{"type":"string","format":"uri","pattern":"^https\\:\\/\\/","description":"m-commerce: dit Swish-appen skickar tillbaka betalaren efteråt. Används i appLink."},"metadata":{"type":"object","additionalProperties":{"type":"string","maxLength":500},"description":"Egna nyckel/värde-par som följer med betalningen och i webhooks"},"mandateId":{"type":"string","format":"uuid","description":"Dragning på ett aktivt medgivande (Återkommande betalningar). Då ignoreras payerAlias/swishAccountId."},"merchantId":{"type":"string","format":"uuid","description":"Vilket av era kundkonton betalningen gäller"}},"required":["merchantId"],"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","maxLength":255},"in":"header","name":"idempotency-key","required":false}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["CREATED","PAID","DECLINED","ERROR","CANCELLED"]},"flow":{"type":"string","enum":["ecommerce","mcommerce"]},"live":{"type":"boolean","description":"false = skapad med testnyckel mot Swish simulator"},"amount":{"type":"integer","minimum":100,"maximum":99999999999999,"description":"Belopp i ören (heltal). 100 = 1 kr."},"currency":{"type":"string","enum":["SEK"]},"swishAccount":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"label":{"type":"string","description":"Etikett som handlaren satt, t.ex. butiksnamn"}},"required":["id","label"],"additionalProperties":false,"description":"Det Swish-nummer (konto) som betalningen tas emot på"},"message":{"type":"string","nullable":true},"reference":{"type":"string","nullable":true},"payerAlias":{"type":"string","nullable":true,"description":"Maskerat mobilnummer, t.ex. 46*****567"},"swishPaymentReference":{"type":"string","nullable":true,"description":"Swish betalningsreferens (finns när status är PAID)"},"errorCode":{"type":"string","nullable":true,"description":"Swish felkod vid DECLINED/ERROR"},"errorMessage":{"type":"string","nullable":true,"description":"Läsbar förklaring på svenska"},"metadata":{"type":"object","additionalProperties":{"type":"string","maxLength":500},"description":"Egna nyckel/värde-par som följer med betalningen och i webhooks","nullable":true},"qr":{"type":"object","properties":{"token":{"type":"string","description":"Swish PaymentRequestToken"},"svg":{"type":"string","description":"QR-kod som SVG (innehållet är token med prefixet D)"},"appLink":{"type":"string","description":"swish://paymentrequest?token=… — öppnar Swish-appen på samma enhet"}},"required":["token","svg","appLink"],"additionalProperties":false,"description":"Endast m-commerce (ingen payerAlias)"},"mandateId":{"type":"string","format":"uuid","nullable":true,"description":"Satt när betalningen är en dragning på ett medgivande."},"createdAt":{"type":"string","format":"date-time"},"paidAt":{"type":"string","format":"date-time","nullable":true},"merchantId":{"type":"string","format":"uuid"}},"required":["id","status","flow","live","amount","currency","swishAccount","message","reference","payerAlias","swishPaymentReference","errorCode","errorMessage","metadata","createdAt","paidAt","merchantId"],"additionalProperties":false}}}},"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["CREATED","PAID","DECLINED","ERROR","CANCELLED"]},"flow":{"type":"string","enum":["ecommerce","mcommerce"]},"live":{"type":"boolean","description":"false = skapad med testnyckel mot Swish simulator"},"amount":{"type":"integer","minimum":100,"maximum":99999999999999,"description":"Belopp i ören (heltal). 100 = 1 kr."},"currency":{"type":"string","enum":["SEK"]},"swishAccount":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"label":{"type":"string","description":"Etikett som handlaren satt, t.ex. butiksnamn"}},"required":["id","label"],"additionalProperties":false,"description":"Det Swish-nummer (konto) som betalningen tas emot på"},"message":{"type":"string","nullable":true},"reference":{"type":"string","nullable":true},"payerAlias":{"type":"string","nullable":true,"description":"Maskerat mobilnummer, t.ex. 46*****567"},"swishPaymentReference":{"type":"string","nullable":true,"description":"Swish betalningsreferens (finns när status är PAID)"},"errorCode":{"type":"string","nullable":true,"description":"Swish felkod vid DECLINED/ERROR"},"errorMessage":{"type":"string","nullable":true,"description":"Läsbar förklaring på svenska"},"metadata":{"type":"object","additionalProperties":{"type":"string","maxLength":500},"description":"Egna nyckel/värde-par som följer med betalningen och i webhooks","nullable":true},"qr":{"type":"object","properties":{"token":{"type":"string","description":"Swish PaymentRequestToken"},"svg":{"type":"string","description":"QR-kod som SVG (innehållet är token med prefixet D)"},"appLink":{"type":"string","description":"swish://paymentrequest?token=… — öppnar Swish-appen på samma enhet"}},"required":["token","svg","appLink"],"additionalProperties":false,"description":"Endast m-commerce (ingen payerAlias)"},"mandateId":{"type":"string","format":"uuid","nullable":true,"description":"Satt när betalningen är en dragning på ett medgivande."},"createdAt":{"type":"string","format":"date-time"},"paidAt":{"type":"string","format":"date-time","nullable":true},"merchantId":{"type":"string","format":"uuid"}},"required":["id","status","flow","live","amount","currency","swishAccount","message","reference","payerAlias","swishPaymentReference","errorCode","errorMessage","metadata","createdAt","paidAt","merchantId"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"get":{"summary":"Lista betalningar","tags":["Partner"],"description":"Aggregerad lista med maskade betalarnummer. Filtrera på merchantId, status, swishAccountId och datum.","parameters":[{"schema":{"type":"string","enum":["CREATED","PAID","DECLINED","ERROR","CANCELLED"]},"in":"query","name":"status","required":false},{"schema":{"type":"string","format":"uuid"},"in":"query","name":"swishAccountId","required":false},{"schema":{"type":"string","format":"date-time"},"in":"query","name":"from","required":false,"description":"Skapad från och med (ISO 8601)"},{"schema":{"type":"string","format":"date-time"},"in":"query","name":"to","required":false,"description":"Skapad till och med (ISO 8601)"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"in":"query","name":"limit","required":false},{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Värdet nextCursor från föregående svar"},{"schema":{"type":"string","format":"uuid"},"in":"query","name":"merchantId","required":false}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["CREATED","PAID","DECLINED","ERROR","CANCELLED"]},"flow":{"type":"string","enum":["ecommerce","mcommerce"]},"live":{"type":"boolean","description":"false = skapad med testnyckel mot Swish simulator"},"amount":{"type":"integer","minimum":100,"maximum":99999999999999,"description":"Belopp i ören (heltal). 100 = 1 kr."},"currency":{"type":"string","enum":["SEK"]},"swishAccount":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"label":{"type":"string","description":"Etikett som handlaren satt, t.ex. butiksnamn"}},"required":["id","label"],"additionalProperties":false,"description":"Det Swish-nummer (konto) som betalningen tas emot på"},"message":{"type":"string","nullable":true},"reference":{"type":"string","nullable":true},"payerAlias":{"type":"string","nullable":true,"description":"Maskerat mobilnummer, t.ex. 46*****567"},"swishPaymentReference":{"type":"string","nullable":true,"description":"Swish betalningsreferens (finns när status är PAID)"},"errorCode":{"type":"string","nullable":true,"description":"Swish felkod vid DECLINED/ERROR"},"errorMessage":{"type":"string","nullable":true,"description":"Läsbar förklaring på svenska"},"metadata":{"type":"object","additionalProperties":{"type":"string","maxLength":500},"description":"Egna nyckel/värde-par som följer med betalningen och i webhooks","nullable":true},"qr":{"type":"object","properties":{"token":{"type":"string","description":"Swish PaymentRequestToken"},"svg":{"type":"string","description":"QR-kod som SVG (innehållet är token med prefixet D)"},"appLink":{"type":"string","description":"swish://paymentrequest?token=… — öppnar Swish-appen på samma enhet"}},"required":["token","svg","appLink"],"additionalProperties":false,"description":"Endast m-commerce (ingen payerAlias)"},"mandateId":{"type":"string","format":"uuid","nullable":true,"description":"Satt när betalningen är en dragning på ett medgivande."},"createdAt":{"type":"string","format":"date-time"},"paidAt":{"type":"string","format":"date-time","nullable":true},"merchantId":{"type":"string","format":"uuid"}},"required":["id","status","flow","live","amount","currency","swishAccount","message","reference","payerAlias","swishPaymentReference","errorCode","errorMessage","metadata","createdAt","paidAt","merchantId"],"additionalProperties":false}},"nextCursor":{"type":"string","nullable":true}},"required":["data","nextCursor"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/partner/v1/payments/{id}":{"get":{"summary":"Hämta betalning","tags":["Partner"],"parameters":[{"schema":{"type":"string","format":"uuid"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["CREATED","PAID","DECLINED","ERROR","CANCELLED"]},"flow":{"type":"string","enum":["ecommerce","mcommerce"]},"live":{"type":"boolean","description":"false = skapad med testnyckel mot Swish simulator"},"amount":{"type":"integer","minimum":100,"maximum":99999999999999,"description":"Belopp i ören (heltal). 100 = 1 kr."},"currency":{"type":"string","enum":["SEK"]},"swishAccount":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"label":{"type":"string","description":"Etikett som handlaren satt, t.ex. butiksnamn"}},"required":["id","label"],"additionalProperties":false,"description":"Det Swish-nummer (konto) som betalningen tas emot på"},"message":{"type":"string","nullable":true},"reference":{"type":"string","nullable":true},"payerAlias":{"type":"string","nullable":true,"description":"Maskerat mobilnummer, t.ex. 46*****567"},"swishPaymentReference":{"type":"string","nullable":true,"description":"Swish betalningsreferens (finns när status är PAID)"},"errorCode":{"type":"string","nullable":true,"description":"Swish felkod vid DECLINED/ERROR"},"errorMessage":{"type":"string","nullable":true,"description":"Läsbar förklaring på svenska"},"metadata":{"type":"object","additionalProperties":{"type":"string","maxLength":500},"description":"Egna nyckel/värde-par som följer med betalningen och i webhooks","nullable":true},"qr":{"type":"object","properties":{"token":{"type":"string","description":"Swish PaymentRequestToken"},"svg":{"type":"string","description":"QR-kod som SVG (innehållet är token med prefixet D)"},"appLink":{"type":"string","description":"swish://paymentrequest?token=… — öppnar Swish-appen på samma enhet"}},"required":["token","svg","appLink"],"additionalProperties":false,"description":"Endast m-commerce (ingen payerAlias)"},"mandateId":{"type":"string","format":"uuid","nullable":true,"description":"Satt när betalningen är en dragning på ett medgivande."},"createdAt":{"type":"string","format":"date-time"},"paidAt":{"type":"string","format":"date-time","nullable":true},"merchantId":{"type":"string","format":"uuid"}},"required":["id","status","flow","live","amount","currency","swishAccount","message","reference","payerAlias","swishPaymentReference","errorCode","errorMessage","metadata","createdAt","paidAt","merchantId"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/partner/v1/refunds":{"post":{"summary":"Skapa återbetalning","tags":["Partner"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"paymentId":{"type":"string","format":"uuid"},"amount":{"type":"integer","minimum":100,"maximum":99999999999999,"description":"Ören. Utelämnas ⇒ hela återstående beloppet."},"message":{"type":"string","maxLength":50,"pattern":"^[a-zA-Z0-9åäöÅÄÖ:;.,?!()\"'\\- ]*$"},"reference":{"type":"string","pattern":"^[A-Za-z0-9-]{1,35}$"},"merchantId":{"type":"string","format":"uuid"}},"required":["paymentId","merchantId"],"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","maxLength":255},"in":"header","name":"idempotency-key","required":false}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"paymentId":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["CREATED","VALIDATED","DEBITED","PAID","ERROR"]},"amount":{"type":"integer","minimum":100,"maximum":99999999999999,"description":"Belopp i ören (heltal). 100 = 1 kr."},"currency":{"type":"string","enum":["SEK"]},"swishAccount":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"label":{"type":"string","description":"Etikett som handlaren satt, t.ex. butiksnamn"}},"required":["id","label"],"additionalProperties":false,"description":"Det Swish-nummer (konto) som betalningen tas emot på"},"message":{"type":"string","nullable":true},"reference":{"type":"string","nullable":true},"swishPaymentReference":{"type":"string","nullable":true},"errorCode":{"type":"string","nullable":true},"errorMessage":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"},"paidAt":{"type":"string","format":"date-time","nullable":true},"merchantId":{"type":"string","format":"uuid"}},"required":["id","paymentId","status","amount","currency","swishAccount","message","reference","swishPaymentReference","errorCode","errorMessage","createdAt","paidAt","merchantId"],"additionalProperties":false}}}},"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"paymentId":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["CREATED","VALIDATED","DEBITED","PAID","ERROR"]},"amount":{"type":"integer","minimum":100,"maximum":99999999999999,"description":"Belopp i ören (heltal). 100 = 1 kr."},"currency":{"type":"string","enum":["SEK"]},"swishAccount":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"label":{"type":"string","description":"Etikett som handlaren satt, t.ex. butiksnamn"}},"required":["id","label"],"additionalProperties":false,"description":"Det Swish-nummer (konto) som betalningen tas emot på"},"message":{"type":"string","nullable":true},"reference":{"type":"string","nullable":true},"swishPaymentReference":{"type":"string","nullable":true},"errorCode":{"type":"string","nullable":true},"errorMessage":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"},"paidAt":{"type":"string","format":"date-time","nullable":true},"merchantId":{"type":"string","format":"uuid"}},"required":["id","paymentId","status","amount","currency","swishAccount","message","reference","swishPaymentReference","errorCode","errorMessage","createdAt","paidAt","merchantId"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/partner/v1/usage":{"get":{"summary":"Faktureringsunderlag per månad","tags":["Partner"],"description":"Underlag för er vidarefakturering: per kundkonto och Swish-nummer antal PAID, volym, partnerpris och summa. Samma siffror som vi fakturerar er för.","parameters":[{"schema":{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])$"},"in":"query","name":"month","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"month":{"type":"string"},"pricePerPaidOre":{"type":"integer","description":"Ert partnerpris per PAID (ören)"},"totals":{"type":"object","properties":{"paidCount":{"type":"integer"},"amountOre":{"type":"integer"},"billableOre":{"type":"integer"}},"required":["paidCount","amountOre","billableOre"],"additionalProperties":false},"merchants":{"type":"array","items":{"type":"object","properties":{"merchantId":{"type":"string","format":"uuid"},"companyName":{"type":"string"},"paidCount":{"type":"integer"},"amountOre":{"type":"integer","description":"Summa mottagna betalningar (ören)"},"billableOre":{"type":"integer","description":"antal PAID × partnerpris"},"swishAccounts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"label":{"type":"string"},"swishNumber":{"type":"string"},"paidCount":{"type":"integer"},"amountOre":{"type":"integer"},"billableOre":{"type":"integer"}},"required":["id","label","swishNumber","paidCount","amountOre","billableOre"],"additionalProperties":false}}},"required":["merchantId","companyName","paidCount","amountOre","billableOre","swishAccounts"],"additionalProperties":false}}},"required":["month","pricePerPaidOre","totals","merchants"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/mandates":{"post":{"summary":"Skapa medgivande (Återkommande betalningar)","tags":["Mandates"],"description":"Skapar ett medgivande som betalaren godkänner med BankID i Swish-appen. Med `payerAlias` skickas begäran direkt till betalarens app (E-com). Utan `payerAlias` returneras `consent` med token, app-länk och QR (M-com). Status blir `active` när betalaren godkänt; webhook `mandate.activated`. Dragningar görs med `POST /v1/payments` och `mandateId`, eller automatiskt av er via er egen schemaläggning. Beloppet på ett medgivande kan aldrig ändras – nytt belopp kräver nytt medgivande.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"amount":{"type":"integer","minimum":100,"maximum":99999999999999,"description":"Belopp per dragning i ören."},"interval":{"type":"string","enum":["monthly","quarterly","yearly"],"description":"monthly | quarterly | yearly"},"swishAccountId":{"type":"string","format":"uuid","description":"Krävs om handlaren har flera aktiva Swish-nummer."},"payerAlias":{"type":"string","pattern":"^46\\d{8,9}$","description":"Betalarens mobilnummer ⇒ medgivandet skickas till Swish-appen (E-com). Utelämnas ⇒ token/app-länk (M-com)."},"description":{"type":"string","maxLength":50,"pattern":"^[a-zA-Z0-9åäöÅÄÖ:;.,?!()\"'\\- ]*$","description":"Visas vid varje dragning. Max 50 tecken."},"chargeImmediately":{"type":"boolean","default":true,"description":"Gör första dragningen direkt när medgivandet aktiverats."},"returnUrl":{"type":"string","format":"uri","pattern":"^https\\:\\/\\/"},"metadata":{"type":"object","additionalProperties":{"type":"string","maxLength":500},"description":"Egna nyckel/värde-par som följer med betalningen och i webhooks"}},"required":["amount","interval"],"additionalProperties":false}}}},"parameters":[{"schema":{"type":"string","maxLength":255},"in":"header","name":"idempotency-key","required":false}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["pending","active","paused","revoked","expired"]},"live":{"type":"boolean"},"amount":{"type":"integer","minimum":100,"maximum":99999999999999,"description":"Belopp i ören (heltal). 100 = 1 kr."},"currency":{"type":"string","enum":["SEK"]},"interval":{"type":"string","enum":["monthly","quarterly","yearly"]},"description":{"type":"string","nullable":true},"swishAccount":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"label":{"type":"string","description":"Etikett som handlaren satt, t.ex. butiksnamn"}},"required":["id","label"],"additionalProperties":false,"description":"Det Swish-nummer (konto) som betalningen tas emot på"},"payerAlias":{"type":"string","nullable":true,"description":"Maskerat mobilnummer"},"swishStatus":{"type":"string","nullable":true,"description":"Swish consent status (ACTIVE, DELETED …)"},"swishSubStatus":{"type":"string","nullable":true},"nextChargeAt":{"type":"string","nullable":true,"description":"Nästa dragning (YYYY-MM-DD)"},"failedAttempts":{"type":"integer"},"metadata":{"type":"object","additionalProperties":{"type":"string","maxLength":500},"description":"Egna nyckel/värde-par som följer med betalningen och i webhooks","nullable":true},"consent":{"type":"object","properties":{"token":{"type":"string"},"appLink":{"type":"string","description":"https://app.swish.nu/1/r/sw/?sw=…&ret=…"},"svg":{"type":"string","description":"QR-kod (SVG) som kodar app-länken"}},"required":["token","appLink","svg"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time"},"activatedAt":{"type":"string","format":"date-time","nullable":true},"revokedAt":{"type":"string","format":"date-time","nullable":true}},"required":["id","status","live","amount","currency","interval","description","swishAccount","payerAlias","swishStatus","swishSubStatus","nextChargeAt","failedAttempts","metadata","createdAt","activatedAt","revokedAt"],"additionalProperties":false}}}},"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["pending","active","paused","revoked","expired"]},"live":{"type":"boolean"},"amount":{"type":"integer","minimum":100,"maximum":99999999999999,"description":"Belopp i ören (heltal). 100 = 1 kr."},"currency":{"type":"string","enum":["SEK"]},"interval":{"type":"string","enum":["monthly","quarterly","yearly"]},"description":{"type":"string","nullable":true},"swishAccount":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"label":{"type":"string","description":"Etikett som handlaren satt, t.ex. butiksnamn"}},"required":["id","label"],"additionalProperties":false,"description":"Det Swish-nummer (konto) som betalningen tas emot på"},"payerAlias":{"type":"string","nullable":true,"description":"Maskerat mobilnummer"},"swishStatus":{"type":"string","nullable":true,"description":"Swish consent status (ACTIVE, DELETED …)"},"swishSubStatus":{"type":"string","nullable":true},"nextChargeAt":{"type":"string","nullable":true,"description":"Nästa dragning (YYYY-MM-DD)"},"failedAttempts":{"type":"integer"},"metadata":{"type":"object","additionalProperties":{"type":"string","maxLength":500},"description":"Egna nyckel/värde-par som följer med betalningen och i webhooks","nullable":true},"consent":{"type":"object","properties":{"token":{"type":"string"},"appLink":{"type":"string","description":"https://app.swish.nu/1/r/sw/?sw=…&ret=…"},"svg":{"type":"string","description":"QR-kod (SVG) som kodar app-länken"}},"required":["token","appLink","svg"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time"},"activatedAt":{"type":"string","format":"date-time","nullable":true},"revokedAt":{"type":"string","format":"date-time","nullable":true}},"required":["id","status","live","amount","currency","interval","description","swishAccount","payerAlias","swishStatus","swishSubStatus","nextChargeAt","failedAttempts","metadata","createdAt","activatedAt","revokedAt"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/mandates/{id}":{"get":{"summary":"Hämta medgivande","tags":["Mandates"],"description":"Statusen verifieras alltid mot Swish innan den returneras.","parameters":[{"schema":{"type":"string","format":"uuid"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["pending","active","paused","revoked","expired"]},"live":{"type":"boolean"},"amount":{"type":"integer","minimum":100,"maximum":99999999999999,"description":"Belopp i ören (heltal). 100 = 1 kr."},"currency":{"type":"string","enum":["SEK"]},"interval":{"type":"string","enum":["monthly","quarterly","yearly"]},"description":{"type":"string","nullable":true},"swishAccount":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"label":{"type":"string","description":"Etikett som handlaren satt, t.ex. butiksnamn"}},"required":["id","label"],"additionalProperties":false,"description":"Det Swish-nummer (konto) som betalningen tas emot på"},"payerAlias":{"type":"string","nullable":true,"description":"Maskerat mobilnummer"},"swishStatus":{"type":"string","nullable":true,"description":"Swish consent status (ACTIVE, DELETED …)"},"swishSubStatus":{"type":"string","nullable":true},"nextChargeAt":{"type":"string","nullable":true,"description":"Nästa dragning (YYYY-MM-DD)"},"failedAttempts":{"type":"integer"},"metadata":{"type":"object","additionalProperties":{"type":"string","maxLength":500},"description":"Egna nyckel/värde-par som följer med betalningen och i webhooks","nullable":true},"consent":{"type":"object","properties":{"token":{"type":"string"},"appLink":{"type":"string","description":"https://app.swish.nu/1/r/sw/?sw=…&ret=…"},"svg":{"type":"string","description":"QR-kod (SVG) som kodar app-länken"}},"required":["token","appLink","svg"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time"},"activatedAt":{"type":"string","format":"date-time","nullable":true},"revokedAt":{"type":"string","format":"date-time","nullable":true}},"required":["id","status","live","amount","currency","interval","description","swishAccount","payerAlias","swishStatus","swishSubStatus","nextChargeAt","failedAttempts","metadata","createdAt","activatedAt","revokedAt"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"delete":{"summary":"Avsluta medgivande","tags":["Mandates"],"description":"Tar bort medgivandet hos Swish. Betalaren kan också avsluta det själv i Swish-appen (webhook `mandate.revoked`).","parameters":[{"schema":{"type":"string","format":"uuid"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["pending","active","paused","revoked","expired"]},"live":{"type":"boolean"},"amount":{"type":"integer","minimum":100,"maximum":99999999999999,"description":"Belopp i ören (heltal). 100 = 1 kr."},"currency":{"type":"string","enum":["SEK"]},"interval":{"type":"string","enum":["monthly","quarterly","yearly"]},"description":{"type":"string","nullable":true},"swishAccount":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"label":{"type":"string","description":"Etikett som handlaren satt, t.ex. butiksnamn"}},"required":["id","label"],"additionalProperties":false,"description":"Det Swish-nummer (konto) som betalningen tas emot på"},"payerAlias":{"type":"string","nullable":true,"description":"Maskerat mobilnummer"},"swishStatus":{"type":"string","nullable":true,"description":"Swish consent status (ACTIVE, DELETED …)"},"swishSubStatus":{"type":"string","nullable":true},"nextChargeAt":{"type":"string","nullable":true,"description":"Nästa dragning (YYYY-MM-DD)"},"failedAttempts":{"type":"integer"},"metadata":{"type":"object","additionalProperties":{"type":"string","maxLength":500},"description":"Egna nyckel/värde-par som följer med betalningen och i webhooks","nullable":true},"consent":{"type":"object","properties":{"token":{"type":"string"},"appLink":{"type":"string","description":"https://app.swish.nu/1/r/sw/?sw=…&ret=…"},"svg":{"type":"string","description":"QR-kod (SVG) som kodar app-länken"}},"required":["token","appLink","svg"],"additionalProperties":false},"createdAt":{"type":"string","format":"date-time"},"activatedAt":{"type":"string","format":"date-time","nullable":true},"revokedAt":{"type":"string","format":"date-time","nullable":true}},"required":["id","status","live","amount","currency","interval","description","swishAccount","payerAlias","swishStatus","swishSubStatus","nextChargeAt","failedAttempts","metadata","createdAt","activatedAt","revokedAt"],"additionalProperties":false}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string","description":"Svenska, kan visas för handlaren"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}}},"servers":[{"url":"https://api.getpayment.se","description":"Produktion + test (nyckeln avgör)"}],"security":[{"apiKey":[]}],"tags":[{"name":"Payments","description":"Betalningar"},{"name":"Refunds","description":"Återbetalningar"},{"name":"Swish-konton","description":"Handlarens Swish-nummer"},{"name":"Mandates","description":"Återkommande betalningar: medgivanden som betalaren godkänner med BankID i Swish-appen, och automatiska dragningar. Kräver att tjänsten är aktiverad (RECURRING_ENABLED)."},{"name":"Partner","description":"Partner-API: skapa och hantera kundkonton, betala med partnernyckel"}]}