../credit-account

Integrate to PayEx Credit Account API 

Accounts

Request
GET /ledger/credit-account/v1/XXX/accounts HTTP/1.1
Host: -
Authorization: Bearer <Token>
Content-Type: application/json

If the authorization post succeeds, or if a get method is performed to retrieve an existing authorization, it should respond with something like the following:

Response
HTTP/1.1 200 OK
Content-Type: application/json

{
   "@id": "/ledger/credit-account/v1/501/accounts/123456",
   "accountNo": "1234567",    
   "startDate": "2016-05-21",
   "description": null,
   "accountProfileType": "kontodebet | kontokredit | kontofaktura", //Nytt begrepp
   "accountAlias" : "kontokredit1 | matkonto1",
   "customerNo" : "123789654",
   "status" : "open | pending-close | closed",
   "creditLimit": 2000.00, // Kontots kreditlimit
   "unpaidBilledAmount" : 200.0, //total aktuell summa av alla balanser BillingAcc (endast om negativ/skuld, annars 0)
   "debt": 2050.0, // total aktuell summa av alla balanser (kapital/ränta/avgifter osv.) BillingAcc + underliggande CredAccs, OM NEGATIV (skuld)
   "surplus": 0.0, // total aktuell summa av alla balanser (kapital/ränta/avgifter osv.) BillingAcc + underliggande CredAccs, OM POSITIV (tillgodo)
   "reservedAmount": 50.0, // Summerat belopp alla utestående reservationer mot kontot (som är giltiga och ej captured)
   "availableAmount": 100.0, // Tillgänglig kredit (kan ej räknas fram utifrån ovan belopp avgifter kan ingå där, som inte påverkar tillgänglig kredit)
   "openBill" : {
       "amount" : 250.0,
       "bill" : "/ledger/credit-account/v1/501/accounts/123456/bills/963",
       "dueDate" : "2019-10-10",
       "billType" : "Bill"
    },
   "charityDonation": true,
   "interestRate": {
       "debtInterest" : 10.00,
       "penaltyInterest": 15.00
    },
   "offer" : "", //nödvändig??
   "directDebit": "/ledger/credit-account/v1/501/accounts/123456/direct-debit",
   "cards": "/ledger/credit-account/v1/501/accounts/123456/cards",
   "transactions": "/ledger/credit-account/v1/501/accounts/123456/transactions",
   "currency": "sek",
   "bills": "/ledger/credit-account/v1/501/accounts/123456/bills",
   "customer": "/ledger/customers/v1/501/customer/123456",
   "operation" : [
        {
           "rel" : "add-card-info",
           "method" : "post",
           "href" : "/ledger/credit-account/v1/501/accounts/123456/cards"
        },
        {
           "rel" : "request-close-account", // -> pending-close status (workitem för stängning)
           "method" : "post",
           "href" : "/ledger/credit-account/v1/501/accounts/123456/request-close-account"
        },
        {
           "rel" : "apply-for-raised-credit-limit",
           "method" : "post",
           "href" : "/ledger/credit-account-onboardings/v1/501/accounts/123456/apply-for-raised-credit-limit"
        },
        {
           "rel" : "lower-credit-limit",
           "method" : "patch",
           "href" : "/ledger/credit-account-onboardings/v1/501/accounts/123456"
        },
        {
           "rel" : "change-charity-donation",
           "method" : "patch",
           "href" : "/ledger/credit-account-onboardings/v1/501/accounts/123456"
        }
    ]
}

Bills

List bills

Request
GET /ledger/credit-account/v1/XXX/accounts/123/bills HTTP/1.1
Host: -
Authorization: Bearer <Token>
Content-Type: application/json
Response
HTTP/1.1 200 OK
Content-Type: application/json

{
   "bills" : [
        { "billDate" : "2018-09-01", "status" : "open", "billAmount" : 374.10, "@id" : "/ledger/credit-account/v1/501/accounts/123456/bills/963" },
        { "billDate" : "2018-08-01", "status" : "closed", "billAmount" : 374.10, "@id" : "/ledger/credit-account/v1/501/accounts/123456/bills/852" },
        { "billDate" : "2018-07-01", "status" : "closed", "billAmount" : 374.10, "@id" : "/ledger/credit-account/v1/501/accounts/123456/bills/741" }
    ]    
}

Bill resource

Request
GET /ledger/credit-account/v1/XXX/accounts/123/bills/456 HTTP/1.1
Host: -
Authorization: Bearer <Token>
Content-Type: application/json
Response
HTTP/1.1 200 OK
Content-Type: application/json

{
   "@id": "/ledger/credit-account/v1/501/accounts/123456/bills/963",
   "externalReference": "123456",
   "dueDate": "2018-12-05",
   "billNo": "124645",
   "amountToBePayed": 240.00, //kan inte denna heta bara "amount" egentligen?
   "billType" : "Bill",
   "bankPayment": {
       "bankAccountNo": "123",
       "bankAccountType": "BGSE",
       "bic": "123456",
       "iban": "SE12345678945631",
       "paymentReference": "1246fdsdf4687613"
    },
   "activePaymentOrder": {
       "paymentType": "BGAGSE",
       "executionDate": "2019-01-01",
       "amount" : 200.0 //beroende directdebittype kan denna vara beräknad vid varje hämtning (utifrån ev. delbet)
    },
   "pdf": "/ledger/credit-account/v1/501/accounts/123456/bills/963/pdf" //visar senaste ev. childbill?
}

Direct-debit

Request
POST /ledger/credit-account/v1/XXX/accounts/123/direct-debit HTTP/1.1
Host: -
Authorization: Bearer <Token>
Content-Type: application/json
Response
HTTP/1.1 200 OK
Content-Type: application/json

{
"@id" : "/ledger/credit-account/v1/501/accounts/123456/direct-debit",
   "directDebitType" : "fixedRecurring | totalDebt | billedAmount | onDemand",
   "fixedRecurringAmount" : 1500.00,
   "parentHREF": "/ledger/credit-account/v1/501/accounts/123456"  
}

Cards

Request
POST /ledger/credit-account/v1/XXX/accounts/123/cards HTTP/1.1
Host: -
Authorization: Bearer <Token>
Content-Type: application/json

Response
HTTP/1.1 201 Created
Content-Type: application/json

{
   "cards" : [
        {"PanTrunc" : "85479**********648", "@id" : "/ledger/credit-account/v1/501/accounts/123456/cards/741"},
        {"PanTrunc" : "12345**********456", "@id" : "/ledger/credit-account/v1/501/accounts/123456/cards/742"}
    ]
}
Request
POST /ledger/credit-account/v1/XXX/accounts/123/cards/456 HTTP/1.1
Host: -
Authorization: Bearer <Token>
Content-Type: application/json

Response
HTTP/1.1 201 Created
Content-Type: application/json

{
   "token": "954c8699-b38f-47a2-b568-668b8837dad8",
   "PanTrunc": "85479*********648",
   "deleted" : false,
   "mainCard": true,
   "cardHolder" : {
       "number" : "123465",
       "name": "test testsson",
       "nationalConsumerIdentifier": {
           "value": "19101010-1010",
           "countryCode": "SE"
        }
    },    
   "@id": "/ledger/credit-account/v1/501/accounts/123456/cards/741",
   "parentHREF": "/ledger/credit-account/v1/501/accounts/123456",
   "operation" : [
        {
           "rel" : "delete-card-info",
           "method" : "patch",
           "href" : "/ledger/credit-account/v1/501/accounts/123456/cards/741"
        }
    ]
}

Transactions

Request
POST /ledger/credit-account/v1/XXX/accounts/123/transactions HTTP/1.1
Host: -
Authorization: Bearer <Token>
Content-Type: application/json

Response
HTTP/1.1 201 Created
Content-Type: application/json

{
   "operations": null,
   "items": [
        {
           "type": "payment", //transactionTypeGroup
           "description": "",
           "amount": 200.00,
           "billed": false|true,
           "date": "2019-10-09", //ValueDate
           "reserveDate": null
        },
        {
           "type": "purchase", //transactionTypeGroup
           "description": "stora coop visby, k�pref. 12345689",
           "amount": 200.00,
           "billed": false|true,
           "date": "2019-10-09", //ValueDate
           "reserveDate": "2019-10-05",
        },
        {
           "type": "credit", //transactionTypeGroup
           "description": "",
           "amount": 200.00,
           "billed": false|true,
           "date": "2019-10-09", //ValueDate
           "reserveDate": "2019-10-05"
        }
    ],
   "@id": "/ledger/credit-account/v1/501/accounts/123456/transactions?fromDate=2019-10-01",
   "view": {
       "@id": "/ledger/credit-account/v1/501/accounts/123456/transactions?fromDate=2019-10-01&$top=2&$skip=0",
       "next": "/ledger/credit-account/v1/501/accounts/123456/transactions?fromDate=2019-10-01&$top=2&$skip=2"
    }
}

Reservations

Request
POST /ledger/credit-account/v1/XXX/accounts/123/reservations HTTP/1.1
Host: -
Authorization: Bearer <Token>
Content-Type: application/json

Response
HTTP/1.1 201 Created
Content-Type: application/json

{
   "operations": null,
   "items": [
        {
           "amount": 200.00,
           "description" : "", //ta med denna??
           "date": "2019-10-05",
        },
        {
           "amount": 450.00,
           "description" : "", //ta med denna??
           "date": "2019-10-02",
        },
    ],
   "@id": "/ledger/credit-account/v1/501/accounts/123456/reservations",
}

Problems

If an error occur or any validation failed, a "problem" response will be returned.
Below is a list of problems that can occur:

HttpStatus 401 Unauthorized

  • Token expired
  • Token invalid
  • SellerNumber does not match token
  • CompanyNumber does not match token

HttpStatus 400 Error

  • Validation: Argument required
  • Validation: Invalid value

HttpStatus 422 Unprocessable entity

  • Authorization declined

HttpStatus 409 Conflict

  • Invoice already authorized
  • Duplicate InvoiceNumber
  • Authorization is cancelled
  • Authorization already captured
  • Authorization has expired
  • Insufficient debited amount XXX

HttpStatus 501 NotImplemented

  • CompanyNumber XXX not configured
  • SellerNumber XXX not configured at PayEx
  • CompanyNumber XXX missing configuration

HttpStatus 404 NotFound

  • Authorization not found

Below is an example of a problem that will be returned if buyer.nationalConsumerIdentifier.value is not valid in the authorization post request.

Response
HTTP/1.1 400 Error
Content-Type: application/problem+json

{
   "Type": "http://[DNS]/ledger/invoice-purchase/problems/validation",
   "Title": "A validation error occurred",
   "Status": 400,
   "Instance": null,
   "Detail": "A validation error occurred. Please fix the problems mentioned in the 'problems' property below.",
   "Problems": [
        {
           "buyer.nationalConsumerIdentifier.value": "Not a valid SE nationalConsumerIdentifier"
        }
    ]
}
Created by David Persson on 2019/12/04 09:40