Skip to main content

How to get started with Physical Identity Proofing

Learn how to get started with integrating your backend to Mobai’s PIP service. Use our REST API to order PIP sessions, track status, and retrieve results securely. This guide covers everything you need to connect your system to Mobai’s ID-kontroll workflow — including handling applicant input data, webhooks, and final report delivery.

PIP Flow overview

Prerequisites:

  • Test OAuth 2.0/API key credentials (Please contact Mobai to get credentials)

Resources:

Test environment

  1. Create a PIP request with “POST /v1/requestor/pip” with applicant name and phone number in the body. (Remember to use the test base URL). Take note of the pipId and the attendanceCode in the response.
POST /v1/requestor/pip

// Request body
{
"applicantName": "Bodil Johansen",
"applicantPhoneNumber": "91010203"
}
  1. Finish a PIP with fake identity data with “POST /v1/requestor/pip/{pipId}/finishPipWithFakeData”.
POST /v1/requestor/pip/{pipId}/finishPipWithFakeData

// Request body
{
"documentHolder": "Bodil Johansen",
"nationalIdNumber": "01020312345",
"mrzCode": "P<NOR<<<<<01306623045<<12345<<<5604230M2504115NOR<<<<<<<<<<<SOESTENBYEN<<AASAMUND<SPECIMEN<",
"docNumber": "45612378",
"approved": true
}
  1. Get PIP request details with “GET /v1/requestor/pip/{pipId}” and check that the status is AWAITING_DOWNLOAD or RESULT_SENT (see below for details).
GET /v1/requestor/pip/{pipId}

// Response
{
"pipId": "123e4567-e89b-12d3-a456-426614174000",
"status": "AWAITING_DOWNLOAD",
"lastUpdated": "2023-06-01T14:30:00Z",
"attendanceCode": "345265"
}
  1. Fetch the customer result with either REST API or Digipost - according to you configuration.
  • REST API: Retrieve the result of a completed PIP request in JSON format using "GET /v1/requestor/pip/{pipId}/result". The response includes URLs for the PDF report, XML data, and chip image. Optionally, you can also download a complete ZIP file containing all result files.

  • Digipost: You can see the result from a completed PIP request by going to https://www.test.digipost.no/ select “Logg inn med ID-Porten", “Test ID”, put the user ID provided by us in the “Personidentifikator” field and “Autentiser”.

  1. (Optional) Set up webhooks.

Explanation of each status field:

CREATED – Before the Applicant have started the PIP process.

PROCESSING – Internal processing at Mobai’s server.

RESULT_SENT – A verification that the case has been sent through to Digipost (if Digipost is used).

AWAITING_DOWNLOAD – If the requestor does not use the Digipost option, this will be the status after a valid identity proofing has been done, and Mobai have not received a request from the customer to the Fetch PIP Report endpoint.

RESULT_DOWNLOADED - If the requestor does not use the Digipost option, this will be status after we have replied with a 200 HTTP status code on a request of a process ID. Mobai do not guarantee that the user of the endpoint has completed its task, and the user of this endpoint should not use this status as confirmation that things have been successful on their side.

EXPIRED – The status shown if the process is not completed within 30 days.

ERROR – Shown if there for some reason has been a technical error during the process. In cases like this, both parties know this has happened. Normally Mobai will fix a bug in cases like this.

AWAITING_APPROVAL - If the PIP is waiting for operator approval. This happens when a new operator has conducted the PIP.


Go live

Use your production OAuth 2.0 credentials (contact Mobai if you haven’t received them). Remember to update the base URL and configure webhooks if applicable.


Additional resources:

Overview of the result in PDF, JSON and XML:

Click to expand

Field name PDFJSON nameXML nameFormatSourceNote
ID-kontroll bestillingsnummerpipCodekollinrPIP+10-sifferBackend<PIP><Applicantcode><MMYY> example: PIP1234560125
Dato og klokkeslettdateOfProofingdatoDigitsBackend
Utleveringssted (enhetsnummer og -navn)locationOfProofingutleveringsstedTextBackendAPI from Posten
KundebehandlerregistrationOfficerkundebehandlerTextApp
DokumentinnehaverapplicantNamenavndokinnehaverTextApp
Bestiller navnapplicantPipRequestNamenavnfraediTextBackend
Fødselsdato / fødselsnummernationalIdNumberfnrMax 11 digitsApp
Fødselsnummer / D-nummerdNumberdnrMax 11 digitsApp
Type ID-documentidTypeidtypeTextApp
DokumentnummernfcData.DocNumberdoknrDigitsApp
Utstedt i (land)nfcData.IssuerutstedtTextApp
Gyldig tilnfcData.ValidUntilgyldigtilDigitsApp
TilleggsdokumentasjontilleggsdokPictureApp
MRZ-kodemrzCodeMRZ-kodeCharactersAppFor xml: Max 5 character Get the first character (indicates the ID doc type) and the characters that indicates the issued country example: P-NOR
ID-kontrollapprovedGodkjentTrue/FalseBackend
NAsignaturassistentAlways empty
Automatiske kontroller Manuelle kontrollerNAkontrollstatusAutomatic/Manual (xml)BackendEr automatisk/manuelle kontroll gjennomført
RFID-chip lestautomatic.rfidReadRFIDlestTrue/FalseApp
MRZ ValidMrzValidMRZValidTrue/FalseAppSjekk på at formatet er riktig. Kan sjekke på om det samsvarer med MRZ som ligger i chip.
NAUVValidTrue/FalseAlways empty
NAIRValidTrue/FalseAlways empty
Ugyldig operatør / Time outTerminationCauseAvbrudsgrunnTextBackend
Ansiktssammenligningautomatic.biometricComparisonApprovalAnsiktssammenligningATrue/FalseBackend
Score sammenligningautomatic.biometricComparisonScoreScoreAnsiktssammenligningTextBackend
Ansiktssammenligningmanual.biometricComparsionApprovalAnsiktssammenligningMTrue/FalseApp
Meldt tapt / stjålet (norske pass)StatusToveRegisterStatusFraTOVETextBackendMatch / No Match / Unknown Document
RFID-brikke data (PA)automatic.rfidPassiveAuthenticationRfidPassivAutentisitetTrue/FalseAppNot signed / Signed / Signed and verified
RFID-brikke data (AA)automatic.rfidActiveAuthenticationRfidActiveAutentisitetTrue/FalseApp
pdfUrlTextBackendUsed by JSON API to enable downloading of additional information
imageUrlsTextBackend

Frequently asked questions:

What are pipId and attendanceCode used for, and what’s the difference between them?

pipId is the unique identifier for the PIP request. Not to be exposed to end customer. attendenceCode is to be sent to end customer for identifying the session when attending the physical identity proofing.

What is the OAuth 2.0 token expiry time?

The token has 60 minutes expiration time for production environment, can vary in test/QA.

Why do approved have true, false and null?

true means that the PIP request have been successfully completed.

false means that the PIP request have been rejected — see the detailed report for specifics.

null means the process was either incomplete or failed. This typically occurs when the Registration Officer/Operator rejects the applicant. The reason for rejection can be found in the field terminationCause.

nationalIdentitynumber is that the Norwegian ID number, number on ID doc or d-number?

This is the Norwegian identity number (fødselsnummer) or Norwegian D-number.

Will the PIP result still be approved if the applicant’s name differs slightly from the name on the ID document?

Yes - slight name variations is approved upon the Applicant Officer/Operator’s judgement and according to their training.

Will we get the signature from the ID document in the result?

Yes, even if the signature is on the “back” side of the ID document the operator is asked to take another picture of the signature page. (Note: Some foreign ID documents does not have a signature).

Can we use both Digipost and the API for downloading customer reports?

Yes, you can use both. Inform Mobai about this so we can set it up correctly for you.

Can we use polling instead of webhooks?

Yes, you can. Please be considerate of the polling interval.

What is the expected request and response for persons under 18 years old? Which name and phone number should be used?

When placing an order for an individual under 18, the name provided must match the name on the ID document of the holder (the childs name).

If a customer is under 18, a parent or guardian may enter either their own phone number or the child's when placing the order. During ID verification, this number must be provided.

For individuals under the age of 18, no photograph will be taken. The PIP report will not contain the face image and any automated face verification checks, only picture collected from the ID document and manual ID check result.

Available resources for download: