Skapa faktura för nästa debiteringsintervall för abonnemang


  1. Skapar kund och abonnemang med API2/API3
    1. Kontrollera om personen finns sedan tidigare (API3 om e-post eller mobil finns, kräver särskilda rättigheter "/customers")
    2. Skapar kunden i BRP (API3 - kap 3.16)
    3. Skapar abonnemanget i BRP (API3 kap. 3.38 och 3.44 /orders respektive /orders/{order}/items/subscriptions)
    4. Sparar person-ID och abonnemangs-ID på sin sida för att varje månad kunna debitera fram abonnemanget
  2. Initial debitering
    1. Markerar beställningen som betald (API3, kräver kunskap om betalsätt och beställning som skapades i 1. Görs som integratör med särskild rättighet "/receipts")
  3. Månatlig debitering
    1. För varje abonnemang
      1. Kontrollera till vilket datum abonnemanget debiterats (API 3 kap 3.28 /customers/{customer}/subscriptions, kräver särskilda rättigheter som integratör)
      2. Kontrollera om abonnemanget är uppsagt (API3, samma punkt 3.1.1)
      3. Kontrollera om abonnemanget är fryst eller har annan avvikelse (API3, samma punkt 3.1.1)
      4. Debiterar fram abonnemanget en debiteringsperiod (vanligtvis en månad) och får tillbaka ett faktura ID (Se information en anrop under)
      5. Markerar fakturan som betald med valt betalsätt (så att intäkten visas hos med betalsättet) (API3, kräver faktura ID samt betalsätt. Görs som integratör med särskild rättighet "/receipts")

Endpoint för att skapa faktura för nästa debiteringsintervall

BaseURL/external/invoice/debitsubscription/{Subscription ID}

Där "BaseURL" är exempelvis "https://api.brpsystems.se/brponline/" och "Subscription ID" är ID:t på abonnemanget man vill debitera fram

Skapa faktura

För att skapa fakturan:

GET {BaseURL}/external/invoice/debitsubscription/{subscriptionId}?dueDate={dueDate}&referenceId={referenceId}&setInvoiceAsSent={setInvoiceAsSent}&hash={hash}

subscriptionId: Abonnemangets ID (heltal), erhålls i svaret från "customers/{customerId}/subscriptions"
dueDate: Vilket datum som ska sättas som förfallodatum på fakturan (krävs inte, räknas fram i BRP om det utesluts)
referenceId: ID till en person som ska sättas som fakturareferens (krävs inte, hämtas från BRP om det utesluts)
setInvoiceAsSent: Sätter status som "skickad" på fakturan. Används inte i hash beräkningen (krävs inte, default FALSE)
hash: SHA-256 hash. Beräknas på parametrarnas värden samt ett hemligt ord (erhålls från BRP Support). subscriptionId + dueDate + referenceId + hemligt ord

Exempel: 
subscriptionId=15
hemligt ord: SecretWord (OBS! Exempel på hemligt ord, för att beräkna korrekt hash måste du erhålla ett hemligt ord från BRP Support) 
 
Ger följande sträng att beräkna hash på: 15SecretWord

Vilket ger följande hash: 208dc6f2f25dbfcb918b0e60d9d965b5a82bbefb56f9afa64cbabc532216931f
 
Exempel 2:
subscriptionId=15
dueDate=2021-01-31
referenceId=8
setInvoiceAsSent=true
hemligt ord: apor
 
Ger följande sträng att beräkna hash på: 152021-01-318apor

Vilket ger följande hash: 3a96c41b6cc068911dd8d5c8626f7ad4fe1de60cfd47716096379ae2df7ea32b
Respons exempel
{
   "invoice":{
      "id":14,
      "type":"REGULAR",
      "company":{
         "id":1,
         "name":"Bolag 1"
      },
      "number":12,
      "prefix":"",
      "ocr":"1248",
      "order":null,
      "customer":{
         "id":79,
         "firstName":"Olga",
         "lastName":"Ordinarie"
      },
      "organization":null,
      "reference":{
         "id":70,
         "firstName":"Monika",
         "lastName":"Testsson"
      },
      "message":null,
      "created":"2021-03-18T02:00:00.000Z",
      "dueDate":"2021-04-17",
      "totalAmount":{
         "amount":50000,
         "currency":"SEK"
      },
      "rest":{
         "amount":50000,
         "currency":"SEK"
      },
      "reminderFeeAmount":{
         "amount":0,
         "currency":"SEK"
      },
      "state":"STATE_SENT",
      "vatSums":[
         {
            "rate":"25",
            "amount":{
               "amount":10000,
               "currency":"SEK"
            }
         }
      ],
      "numberOfDebitAttempts":0
   }
}