Updated 16.03.2026
Consumer Loans API v3
REST API
Authentication
Contact Teya for access information at hjalp@teya.is or 560 1600.
All API requests require HTTP Basic Authentication. Include the Authorization header with Base64-encoded username:password credentials.
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
API Endpoints
List of endpoints from the Consumer Loans API v3 are used for the eCommerce loan process:
- List Payment Methods -
GET /online/payment- to display available payment options to the customer. - Create Token (Web) -
POST /online/token/web- to create a token that authorizes temporary access to Teya's self-service portal. - Create Token (SMS) -
POST /online/token/sms- to send an SMS with a loan URL and pre-register merchant information. - Check Loan Status -
GET /online/status- to poll for loan process status. - Validate Loan -
PUT /online/validate- to validate that the customer successfully created a loan. - Cancel Loan -
PUT /online/cancel- to cancel the loan process. - Loan Advertisement -
GET /helpers/advert?- Calculates information for product advertising purposes.
Create Token (Web)
Creates a token and returns it. The merchant uses this token to redirect the customer to Teya's self-service portal for eCommerce loan applications.
Request
POST /online/token/web
Content-Type: application/json
Parameters (JSON Body)
TokenRequest object.
Example Request
{
"SocialSecurityNumber": "0101502479",
"Email": "customer@example.is",
"PhoneNumber": "8111111",
"ProgressValidMinutes": 10,
"TokenValidMinutes": 10,
"LoanInformation": {
"MerchantNumber": "9635422",
"LoanTypeId": 23,
"Amount": 121313,
"Description": "Product purchase",
"NumberOfPayments": 12,
"FlexibleNumberOfPayments": true,
"SuccessUrl": "https://www.webstore.is/order/success",
"CancelUrl": "https://www.webstore.is/order/cancel"
}
}
Response
Returns token as a string (64 characters).
Example Response
4PPURAkB9us9HR7rqGqY5ljN6T8L5Bidr4I7Y0UcbQhJJnXrnxKR5DAMhYnljjSX
HTTP Status Codes
| Code | Type | Description |
|---|---|---|
| 200 | string | Token returned |
| 400 | FailureResponse | Input validation error |
| 403 | FailureResponse | Merchant access denied |
| 500 | FailureResponse | Internal service error |
Create Token (SMS)
Creates a token and sends an SMS to the customer with a URL to Teya's self-service portal. Used for POS loan applications.
Request
POST /online/token/sms
Content-Type: application/json
Parameters (JSON Body)
TokenSMSRequest object.
Example Request
{
"SocialSecurityNumber": "0101502479",
"Email": "customer@example.is",
"PhoneNumber": "8111111",
"ProgressValidMinutes": 5,
"TokenValidMinutes": 2,
"LoanInformation": {
"MerchantNumber": "9635422",
"LoanTypeId": 24,
"Amount": 64995,
"Description": "Playstation 4",
"NumberOfPayments": 12,
"FlexibleNumberOfPayments": true,
"SuccessUrl": "https://radgreidslur.saltpay.is/Pos/Success",
"CancelUrl": "https://radgreidslur.saltpay.is/Pos/Cancel"
}
}
Response
Returns token as a string (64 characters).
Example Response
4PPURAkB9us9HR7rqGqY5ljN6T8L5Bidr4I7Y0UcbQhJJnXrnxKR5DAMhYnljjSX
HTTP Status Codes
| Code | Type | Description |
|---|---|---|
| 200 | string | Token returned |
| 400 | FailureResponse | Input validation error |
| 403 | FailureResponse | Merchant access denied |
| 500 | FailureResponse | Internal service error |
List Payment Methods
Returns a list of available payment methods for a given amount and merchant. Returns an empty list if all payment options exceed the allowed APR.
Request
GET /online/payment?amount={amount}&merchantNumber={merchantNumber}
Parameters (Query String)
| Field | Type | Description |
|---|---|---|
| amount | decimal | Loan amount. |
| merchantNumber | string | The merchant ID. |
Example Request
GET /online/payment?amount=64995&merchantNumber=9635422
Response
Returns a list of PaymentMethodInfo objects.
Example Response
[
{
"loanTypeId": 23,
"paymentName": "Raðgreiðslur án vaxta",
"paymentInfo": "12 mánaða greiðsluáætlun án vaxta",
"maxNumberOfPayments": 12,
"logoUrl": "https://radgreidslur.saltpay.is/logo.png"
},
{
"loanTypeId": 24,
"paymentName": "Raðgreiðslur með vöxtum",
"paymentInfo": "Allt að 36 mánaða greiðsluáætlun",
"maxNumberOfPayments": 36,
"logoUrl": "https://radgreidslur.saltpay.is/logo.png"
}
]
HTTP Status Codes
| Code | Type | Description |
|---|---|---|
| 200 | a list of PaymentMethodInfo | List of payment methods returned |
| 400 | FailureResponse | Input validation error |
| 403 | FailureResponse | Merchant access denied |
| 500 | FailureResponse | Internal service error |
Validate Loan
Validates that a customer has successfully created an online loan. Called after receiving SUCCESS status from the Check Loan Status endpoint. The "RedirectUrl" field should contain the same value as "SuccessUrl" field from the Create Token endpoint, plus "token={token}"
Request
PUT /online/validate
Content-Type: application/json
Parameters (JSON Body)
ValidateRequest object.
Example Request
{
"Token": "i73IkhjKDRtKTCABkPwleaep6YvuqVsVk9pyt5Pu7AZroiWBgAyldsGzqgNrpgpE",
"RedirectUrl": "https://www.webstore.is/order/success?token=i73IkhjKDRtKTCABkPwleaep6YvuqVsVk9pyt5Pu7AZroiWBgAyldsGzqgNrpgpE",
"MerchantNumber": "9635422"
}
Response
Returns ContractInfoCompact object if loan is valid.
Example Response
{
"contractNumber": "608012",
"authorizationNumber": "103145",
"socialSecurityNumber": "0101502479"
}
HTTP Status Codes
| Code | Type | Description |
|---|---|---|
| 200 | ContractInfoCompact | Loan validated successfully |
| 400 | FailureResponse | Input validation error |
| 403 | FailureResponse | Merchant access denied |
| 422 | FailureResponse | Loan could not be validated |
| 500 | FailureResponse | Internal service error |
Cancel Loan
Cancels an online loan by setting its status to CANCELED. Can only be done if the current status is CREATED or INPROGRESS.
Request
PUT /online/cancel?token={token}&merchantNumber={merchantNumber}
Parameters (Query String)
| Field | Type | Description |
|---|---|---|
| token | string | Authentication token from token endpoint. |
| merchantNumber | string | The merchant ID. |
Example Request
PUT /online/cancel?token=i73IkhjKDRtKTCABkPwleaep6YvuqVsVk9pyt5Pu7AZroiWBgAyldsGzqgNrpgpE&merchantNumber=9635422
Response
Returns HTTP 200 with no body on success.
HTTP Status Codes
| Code | Type | Description |
|---|---|---|
| 200 | Empty | Loan canceled |
| 400 | FailureResponse | Input validation error |
| 403 | FailureResponse | Merchant access denied |
| 422 | FailureResponse | Cannot cancel loan in current status |
| 500 | FailureResponse | Internal service error |
Check Loan Status
Returns the current status of a loan application. Used by both eCommerce webstores and POS systems to poll for status changes.
Request
GET /online/status?token={token}&merchantNumber={merchantNumber}
Parameters (Query String)
| Field | Type | Description |
|---|---|---|
| token | string | Authentication token from token endpoint. |
| merchantNumber | string | The merchant ID. |
Example Request
GET /online/status?token=i73IkhjKDRtKTCABkPwleaep6YvuqVsVk9pyt5Pu7AZroiWBgAyldsGzqgNrpgpE&merchantNumber=9635422
Response
Returns one of the following status codes as a string.
Example Response
INPROGRESS
| Status Code | Description |
|---|---|
| CREATED | Loan access has been created. |
| INPROGRESS | Token has been used and borrower is in loan progress. |
| PENDING | Loan authorization is in progress. |
| PROGRESSEXPIRED | Loan progress expired and loan cannot be created. |
| TOKENEXPIRED | Token expired before being used. |
| SUCCESS | Loan has been successfully created. |
| FAILED | Loan could not be validated. |
| CANCELED | Borrower or POS canceled the loan process. |
HTTP Status Codes
| Code | Type | Description |
|---|---|---|
| 200 | string | Status returned |
| 400 | FailureResponse | Input validation error |
| 403 | FailureResponse | Merchant access denied |
| 500 | FailureResponse | Internal service error |
Helper Endpoints
Get Loan Advertisement
Calculates key information for consumer loan to be displayed on merchant website for product advertising purposes.
Request
GET /helpers/advert?amount={amount}&loanTypeId={loanTypeId}&numberOfPayments={numberOfPayments}&merchantNumber={merchantNumber}
Parameters (Query String)
| Field | Type | Description |
|---|---|---|
| amount | decimal | The loan amount. |
| loanTypeId | int | Loan contract type id from List Payment Methods. |
| numberOfPayments | int | Number of payments the loan is divided into. |
| merchantNumber | string | The merchant ID. |
Response
Returns LoanAdvert object.
Example Response
{
"aprRatio": 12.5,
"interestRate": 6.9,
"loanFeeRate": 1.5,
"numberOfPayments": 12,
"totalPayment": 68750,
"amount": 64995,
"paymentFee": 195,
"averagePayment": 5729,
"created": "2026-03-16T00:00:00",
"firstPayment": "2026-05-01T00:00:00",
"lastPayment": "2027-04-01T00:00:00"
}
HTTP Status Codes
| Code | Type | Description |
|---|---|---|
| 200 | LoanAdvert | Loan advert returned |
| 400 | FailureResponse | Input validation error |
| 403 | FailureResponse | Merchant access denied |
| 422 | FailureResponse | Cannot cancel loan in current status |
| 500 | FailureResponse | Internal service error |
Objects
TokenRequest
Used for Create Token (Web).
| Field | Type | Required | Description |
|---|---|---|---|
| LoanInformation | OnlineLoan | Yes | The online loan information. |
| SocialSecurityNumber | string | No | Customer social security number (10 digits). |
| string | No | Customer email address. | |
| PhoneNumber | string | No | Customer mobile phone number (7 digits, starts with 6, 7 or 8). |
| ProgressValidMinutes | int | Yes | How long customer has to finish loan process (max 40 min). |
| TokenValidMinutes | int | Yes | How long the redirect URL is valid (max 120 min). |
TokenSMSRequest
Used for Create Token (SMS).
| Field | Type | Required | Description |
|---|---|---|---|
| LoanInformation | OnlineLoan | Yes | The online loan information. |
| SocialSecurityNumber | string | No | Customer social security number (10 digits). |
| string | No | Customer email address. | |
| PhoneNumber | string | Yes | Customer mobile phone number (7 digits, starts with 6, 7 or 8). |
| ProgressValidMinutes | int | Yes | How long customer has to finish loan process (max 40 min). |
| TokenValidMinutes | int | Yes | How long the SMS URL is valid (max 120 min). |
OnlineLoan
Loan information object used in TokenRequest and TokenSMSRequest.
| Field | Type | Required | Description |
|---|---|---|---|
| MerchantNumber | string | Yes | The merchant number (7 digits). |
| LoanTypeId | int | Yes | Loan contract type id from List Payment Methods. |
| Amount | decimal | Yes | Loan amount in ISK (1 - 2,999,000). |
| Description | string | Yes | Product description. |
| NumberOfPayments | int | Yes | The exact or maximum number of payments (1 - 120). |
| FlexibleNumberOfPayments | bool | Yes | Allow customer to choose number of payments up to NumberOfPayments. Cannot go lower than APR minimum. |
| SuccessUrl | string | Yes | Redirect URL for successfully created loan. |
| CancelUrl | string | Yes | Redirect URL if customer cancels the loan process. |
ValidateRequest
Used for Validate Loan.
| Field | Type | Required | Description |
|---|---|---|---|
| Token | string | Yes | Authentication token from token creation endpoint. |
| RedirectUrl | string | Yes | Customer redirect URL from Teya consumer loan website. |
| MerchantNumber | string | Yes | The merchant ID (7 digits). |
ContractInfoCompact
Returned from Validate Loan.
| Field | Type | Description |
|---|---|---|
| ContractNumber | string | Loan contract number/id. |
| AuthorizationNumber | string | Credit card authorization number. |
| SocialSecurityNumber | string | Borrower social security number. |
PaymentMethodInfo
Returned from List Payment Methods.
| Field | Type | Description |
|---|---|---|
| LoanTypeId | int | Unique ID of loan contract type. |
| PaymentName | string | Name of payment method. |
| PaymentInfo | string | Information about payments. |
| MaxNumberOfPayments | int | Maximum number of payments allowed for payment method. |
| LogoUrl | string | Raðgreiðslur logo URL. |
LoanAdvert
Returned from Get Loan Advertisement.
| Field | Type | Description |
|---|---|---|
| AprRatio | decimal | Annual percentage rate. |
| InterestRate | decimal | Loan interest rate. |
| LoanFeeRate | decimal | Loan fee percent rate. |
| NumberOfPayments | int | Loan payment count. |
| TotalPayment | decimal | Total amount to be paid. |
| Amount | decimal | Loan principal amount. |
| PaymentFee | decimal | Loan payment fee. |
| AveragePayment | decimal | Loan average amount per payment. |
| Created | DateTime | Loan calculation date. |
| FirstPayment | DateTime | Loan first payment date. |
| LastPayment | DateTime | Loan last payment date. |
FailureResponse
Returned for HTTP 400 and 500 responses.
| Field | Type | Description |
|---|---|---|
| ErrorId | string | Teya error ID for HTTP 400 or 500 responses. |
| Message | string | Reason for failure. |
Example Response
{
"errorId": "",
"message": "The field Amount must be between 1 and 2999000."
}