Test mode

A test tenant runs every verification and enrollment flow on the production API without real IDs, real wallet passes or real eID.

Getting a test tenant

There is no separate sandbox. Ask support@abyrgverslun.is for a test tenant; Ábyrg Verslun flags it as a test tenant for you. You cannot turn test mode on or off yourself. Set up service clients, locations, devices and employees on it exactly as on a live tenant.

livemode

Every verification response (all three methods, polls and Idempotency-Key replays included), every Employee Enrollment response and every transaction carries livemode: false on a test tenant, true on a live one.

{
  "result": "pass",
  "transactionId": "k57...",
  "livemode": false
}

Refuse a sale on livemode: false in production. A test outcome proves nothing about a real customer. If your integration is not itself running as a test setup, treat livemode: false as a configuration error (someone entered test credentials), not as a verification result.

Test Pass Tokens

Send these as passData with "method": "pass". They have the Pass Token format (53 characters), so they pass any format check in your client. You can encode them in a QR code to test scanning.

passDataOutcome
2TESTPASS0000000000000000000000000000000000000000000Zpass for any requiredAge up to 20 (attests 17, 18 and 20). Never consumed: reuse it as often as you like.
2TESTPASS1700000000000000000000000000000000000000000Zpass at 17; fail at 18 or 20 (attests only 17). The transaction records failReason "underage".
2TESTEXPRD000000000000000000000000000000000000000000Zfail, reason "expired"
2TESTCNSMD000000000000000000000000000000000000000000Zfail, reason "consumed"
2TESTNKNWN000000000000000000000000000000000000000000Zfail, reason "unknown"
2TESTBAD00000000000000000000000000000000000000000000Zfail, reason "invalid"; no transaction is recorded

On a test tenant every other Pass Token, including a real shopper's, reads as unknown and is never looked up or consumed. Rate limits apply as on a live tenant.

Test eID identifiers

Use these as the identifier of an eID verification (either form, with either loginType) or as the phoneNumber of an Employee Enrollment. No phone is prompted: the start response carries code 0000 and the first poll returns the outcome. Spaces and hyphens are ignored.

PhoneKennitalaOutcome
00000010000000001success: an adult born 1990-01-01, so result "pass". Enrollment: enrolled as "Test Person".
00000040000000004success: a person aged 16 today, so result "fail" at 17+. Enrollment: enrolled as "Test Person".
00000020000000002status "rejected" (the person declined)
00000030000000003status "timeout" (the person never answered)

On a test tenant any other identifier is refused with 400 Bad Request; the eID Provider is never called. An employee entered on the dashboard with a real kennitala cannot enroll with a test identifier (the kennitala does not match); employees created through the API can. The test person may enroll as any number of employees; on a live tenant one person is at most one employee.

On a live tenant

  • The test Pass Tokens are not valid Pass Tokens: they read as invalid and nothing is recorded.
  • The test eID identifiers are not real phone numbers or kennitölur: they go to the eID Provider like any other identifier and fail there.
  • When a test tenant goes live, employees enrolled with a test identifier are no longer enrolled and must enroll again with real eID, and pending test eID requests are closed as failed. An Idempotency-Key used in test mode is not replayed live.

What a test transaction is

Test transactions are recorded like live ones (with livemode: false), so you can test lookups by posReference and polling. Manual verifications work as on a live tenant. Test transactions are never sealed for, reported to or counted by the regulatory authority. The transaction list shows only the tenant's current mode: a test tenant lists only its test transactions, and once the tenant goes live its list never includes them again.