Request a Document Trust Analysis

On this page, you will learn how to initiate a new Document Trust Analysis request using the API.

Initiate a Document Trust Analysis request

When calling our document Analysis endpoint, you will need to specify the type of analysis you are looking to run.

Fraud analysis

If you are simply looking to get a risk label on a given document, specify :

  • analysis_type[fraud_level] : advanced.
  • analysis_type[extraction] : false.

Fraud analysis and extraction

To get an extraction of data in addition to a fraud label, you will need to specify a document type from the current supported document list and specify :

  • analysis_type[fraud_level] : 'advanced'
  • analysis_type[extraction] : true

To initiate a Document Trust Analysis you can call this endpoint :

POST /document_analyses

curl --location --request POST '{baseUrl}/document_analyses' \
--header 'Authorization: Bearer {apiKey}' \
--header 'Content-Type: multipart/form-data' \
--form 'file=@company_certificate.pdf' \
--form type='company_certificate' \
--form workspace_id='c0840991-848c-47ed-9bfa-68c9daca4793'
--form analysis_type[fraudl_level]='advanced'
--form analysis_type[extraction]=true
{
    "id": "023bb153-7901-49c2-b670-62990a1a8cb1",
    "workspace_id": "7e7895fe-f647-47d0-9a75-da811834d092",
    "workflow_session_id": null,
    "previous_attempt_id": null,
    "applicant_id": null,
    "created_at": "2026-06-22T11:54:18+00:00",
    "updated_at": "2026-06-22T11:54:18+00:00",
    "status": "pending",
    "status_codes": [],
    "type": "company_certificate",
    "country_code": null,
    "data_anonymized": false,
    "extracted_from_document": {
        "verification_number": null,
        "company_name": null,
        "company_number": null,
        "registered_address": null,
        "issuance_date": null,
        "legal_representatives": [],
        "document_type": null
    },
    "checks": null,
    "analysis_type": {
        "extraction": true,
        "fraud_level": "advanced"
    },
    "fraud_risk_analysis": null
}

In the response, you'll find the id. This value is required to retrieve the verification results.

Supported document types for extraction and consistency checks

Type

Description

social_security

Currently only French Documents are supported : carte vitale and Attestation de Sécurité sociale.

company_certificate

French document certifying the registration of a company in the Commercial Register, commonly called : KBIS.

rne_certificate

French document certifying that a company is registered in the Registre Nationale des Entreprises.

business_registration_certificate

Commonly called : Avis de situation. Fills the same role as a rne_certificate. Useful when company is on file in a different register.

driver_licence

We currently support French driver licences in the new format.

vehicle_registration_document

Document certifying the ownership of a vehicle. We currently support French and Italian formats.

auto_insurance_claims_history

Document containing current or past car insurance information. Commonly called in French : Relevé d'information.

temporary_vehicle_registration_document

Temporary certificate of vehicle ownership. We currently support Italian : permesso di circolazione.

tax_notice

🇫🇷 French tax notice is used to prove the income declared to the tax authorities.

🇩🇪 The Steuerbescheid (German tax assessment notice) is an official document issued by the Finanzamt (tax office) confirming the assessed income and final tax liability for a specific fiscal year. It serves as proof of taxable income and tax compliance.

🇮🇹 The Certificazione unica (Italian single income certification) is an official document issued annually by an employer, pension fund, or other income-paying entity to confirm the total income paid and taxes withheld at source for a specific fiscal year. It serves as proof of taxable income and social contributions.

payslip

Document issued by an employer summarizing an employee's earnings for a given pay period. Used to verify income and employment status. We currently support French and Italian payslips.

invoice

Commercial and accounting document issued by a supplier to a customer, confirming a completed commercial transaction. It serves as legal proof of the sale or the provision of services.

What data are extracted ?

For the type : social_security , the following data will be extracted :

"first_name": "Leo",
"last_name": "Dupont",
"full_name": "Leo Dupont",
"social_security_number": "101111300509563"  
"document_type": "Carte Vitale"

Failure to extract all data will result in an inconclusive status.

For the type : company_certificate, rne_certificate, business_registration_certificate , the following data will be extracted from the document.

"verification_number": "EHqrFQ8wOS",
"company_name": "TEST COMPANY",
"company_number": "451 456 120",
"registered_address": "Lorem Ipsum",
"issuance_date": "2021-03-07",
"legal_representatives": [
            {
                "type": "natural_person",
                "first_name": "John",
                "last_name": "Doe",
                "full_name": "Jonh Doe",
                "function": "Président",
                "company_name": null,
                "company_number": null
            }
			], 
"document_type": "KBIS"
    },
 "issuance_date": "2025-11-14",
 "company_description": {
            "active": true,
            "legal_form": "Entrepreneur individuel",
            "company_name": null,
            "company_number": "812599215",
            "headquarter_company_number": "81259921501245",
            "first_name": "John",
            "last_name": "Doe",
            "full_name": "John Doe"
        },
        "branch_description": {
            "branch_company_number": "81259921501245",
            "address": "14 RUE DE LA PAIX",
            "city": "PARIS",
            "postal_code": "75000",
            "active": true
        }
    },
"company_name": "My Company",
"company_number": "812 120 000",
"registered_address": "14 RUE DE LA PAIX",
"issuance_date": "2025-09-27",
"legal_representatives": [
            {
                "type": "natural_person",
                "first_name": "John",
                "last_name": "Doe",
                "full_name": "John Doe",
                "function": null,
                "company_name": null,
                "company_number": null
            }
        ]
    },
📘

For company_certificate type document you can use the verification_number to check the given document on the following website https://controle.infogreffe.fr/controle.

In case a legal representative is of type : legal_person first_name, last_name and full_name will be null.

For the type: driver_licence , we currently only handle the french new format of driver license. (⚠️ we currently not handle old driver licenses formats). On driver_licence document types the following data will be extracted :

"first_name": "JOHN",
"last_name": "DOE",
"full_name": "JOHN DOE",
"born_on": "2002-05-20",
"expired_on": "2036-10-08",
"license_type": [
            "AM",
            "B1",
            "B"
        ]

For the type: tax_notice, the following data will be extracted:

"fiscalNumber1": "1234567",
"fiscalNumber2": "2345678",
"taxNoticeReference": "12345678",
"issuanceDate": "2025-05-20",
"incomeYear": "2024",
"referenceIncome": "123456"
"fiscalNumber1": "1234567",
"full_name": "John Doe",
"fiscalNumber2": "2345678",
"full_name": "Jane Doe",
"taxNoticeReference": "12345678",
"issuanceDate": "2025-05-20",
"incomeYear": "2024",
"referenceIncome": "123456"
"employer_name": "Acme corp",
"employer_codice_fiscale": "12345678910",
"fiscalNumber1": "1234567",
"employee_full_name": "John Doe",
"employee_codice_fiscale": "2345678",
"issuanceDate": "2025-05-20",
"incomeYear": "2024",
"referenceIncome": "123456"

For the type: payslip, the following data will be extracted:

"first_name": "John",
"last_name": "Doe",
"full_name": "John Doe",
"employer_name": "Test Company",
"pay_period_start_date": "2023-09-01",
"pay_period_end_date": "2023-09-30",
"net_pay": 2311.6,
"gross_pay": 3074.38,
"document_type": "Fiche de paie"

For the type: invoice, the following data will be extracted:

"issuance_date": "2023-12-03",
"invoice_number": "29941989",
"invoice_date": "2023-11-26",
"seller_name": "Acme corp",
"seller_address": "Rue De Suède Av Pierre Berthelot 14000 CAEN",
"seller_company_number": "123456789",
"vat_identification_number": "FR12 123456789",
"shipping_address": "12 rue des hirondelles 14000 Caen",
"buyer_name": "John Doe",
"buyer_address": "13 avenue des marguerites 14000 Caen",
"total_excluding_taxes": 340.83,
"total_including_taxes": 408.99,
"document_type": "Facture"
"issuance_date": "2023-12-03",
"invoice_number": "29941989",
"invoice_date": "2023-11-26",
"seller_name": "ACME corp",
"seller_address": "Via Silvio Spaventa 52 06068 Perugia",
"seller_company_number": "01234567890",
"vat_identification_number": "IT 01234567890",
"seller_codice_fiscale": "01234567890",
"billing_address": null,
"shipping_address": "	Via Partenope 193 47010 Forli",
"buyer_name": "John Doe",
"buyer_address": "VIA P. NENNI 22/28, 50054 Fucecchio", 
"buyer_codice_fiscale": "RSSMRA85T10A562S",
"total_excluding_taxes": 340.83,
"total_including_taxes": 408.99,
"document_type": "Fattura"

Classified document types

When calling Document Trust with : analysis_type[extraction]:true and specifying a type you will receive in the data inside :extracted_from_document a document_type value. This value is used to match the classified document type with the expected document type you defined.

The possible extracted_from_document.document_typevalues are the following :

  • KBIS
  • Avis de situation
  • Attestation RNE
  • Permis de conduire français (nouveau format)
  • Permis de conduire français (ancien format)
  • Carte vitale / Attestation de sécurité sociale
  • carte_grise / carta_di_circolazione
  • Avis d'impôts sur le revenu
  • Fiche de paie/ Busta paga
  • Facture / Fattura / Rechnung

How to perform consistency checks ?

📘

Performing data consistency checks requires you to specify :

  • The type of document you are uploading.
  • analysis_type[extraction] : true

By default, when passing a type , we classify the uploaded document and match it against your expected document type.

To run data consistency checks you can call the following endpoint by passing the checks optional parameters in the payload :

To check that a document belongs to a person you can call the following endpoint by passing the checks optional parameters in the payload :

For social_security, driver_licence type documents :

Query ParamTypeDescription
filefile**[required]**The file containing the data to extract. Accepted formats: PDF, PNG, JPG, JPEG. Max size: 10 MB. Max number of pages for PDF: 2.
typestring[required] The type of the document you are trying to analyze. Example : social_security
checksobject[optional]
checks[first_name]stringThe first name of the person you want to check
checks[last_name]stringThe last name of the person you want to check.

For company_certificate, rne_certificate type documents :

For company_certificate, rne_certificate type documents you can pass a list of legal representative first_names and last_names to confirm they appear on the document.

Query ParamTypeDescription
filefile[required] The file containing the data to extract. Accepted formats: PDF, PNG, JPG, JPEG. Max size: 10 MB. Max number of pages for PDF: 2.
typestring[required] The type of the document you are trying to analyze. Example : social_security
legal_representativeslist of objects[optional]
checks[legal_representatives][0][first_name]stringThe first name name of the legal representative you want to check.
checks[legal_representatives][0][last_name]stringThe last name name of the legal representative you want to check.
curl --location --request POST '{baseUrl}/document_analyses' \
--header 'Authorization: Bearer {apiKey}' \
--header 'Content-Type: multipart/form-data' \
--form 'file=@social_security_card.pdf' \
--form type='social_security' \
--form workspace_id='c0840991-848c-47ed-9bfa-68c9daca4793'
--form checks[first_name]:'John'
--form checks[first_name]:'Doe'
curl --request POST \
     --url '{baseUrl}/document_analyses' \
     --header 'accept: application/json' \
     --header 'content-type: multipart/form-data' \
     --form type=company_certificate \
     --form [legal_representative][0][first_name]=John \
     --form [legal_representative][0][last_name]=Doe
curl --request POST \
     --url '{baseUrl}/document_analyses' \
     --header 'accept: application/json' \
     --header 'content-type: multipart/form-data' \
     --form type=rne_certificate \
     --form [legal_representative][0][first_name]=John \
     --form [legal_representative][0][last_name]=Doe
📘

Comparison rules

When providing a first_name and a last_name, we will compute a full_name and compare it with the extracted data based on the following rules : Name Matching rules.

Additionally, on company_certificate, rne_certificate type documents we use the issuance_date to check that the document is at least 3 months old. To learn more on how to follow a Document Analysis results check the full guide on statuses here.

For vehicle_registration_document,temporary_vehicle_registration_document type documents :

Query ParamTypeDescription
filefile**[required]**The file containing the data to extract. Accepted formats: PDF, PNG, JPG, JPEG. Max size: 10 MB. Max number of pages for PDF: 2.
typestring[required] The type of the document you are trying to analyze. Example : social_security
country_codestringDefines the country of origin of the document.
checksobject[optional]
checks[vehicle_owner][type]stringThe type of vehicle of owner : legal_person or natural_person
checks[vehicle_owner][first_name]stringThe first name of the owner of the vehicle
checks[vehicle_owner][last_name]stringThe last name of the owner of the vehicle
checks[vehicle_owner][company_name]stringRequired when type is legal_person.

For auto_insurance_claims_history documents :

Query ParamTypeDescription
filefile**[required]**The file containing the data to extract. Accepted formats: PDF, PNG, JPG, JPEG. Max size: 10 MB. Max number of pages for PDF: 2.
typestring[required] The type of the document you are trying to analyze. Example : social_security
checksobject[optional]
checks[policy_holder][type]stringThe type of vehicle of owner : legal_person or natural_person
checks[policy_holder][first_name]stringThe first name of the owner of the vehicle
checks[policy_holder][last_name]stringThe last name of the owner of the vehicle
checks[policy_holder][company_name]stringRequired when type is legal_person.

For tax_notice documents :

Query ParamTypeDescription
typestringThe type of the document you are trying to analyze. Example : tax_notice
country_codestringDefines the country of origin of the document.
Checks[first_name] [FR]string[optional] The first name provided must match exactly as it appears on the document, as a consistency check will be performed.
Checks[last_name] [FR]string[optional] The last name provided must match exactly as it appears on the document, as a consistency check will be performed.
Checks[employee_full_name] [IT]string[optional] The full name provided must match exactly as it appears on the document, as a consistency check will be performed.
Checks[full_name] [DE]string[optional] The full name provided must match exactly as it appears on the document, as a consistency check will be performed.
Checks[income_year]string[optional] The tax filing period

ℹ️ Comparison rules

  • For the French tax notice:
    when providing a first_name and a last_name, the verification will automatically read and extract the information from the 2D-Doc and cross-check it with the provided document content.
  • For tax_notice documents, you can also provide income_year to check that the tax filing period matches the document.

For payslip documents :

Query ParamTypeDescription
filefile[required] The file containing the data to extract. Accepted formats: PDF, PNG, JPG, JPEG. Max size: 10 MB. Max number of pages for PDF: 2.
typestring[required] The type of the document you are trying to analyze. Example : payslip
country_codestringDefines the country of origin of the document.
checksobject[optional]
checks[first_name]stringThe first name of the person you want to check
checks[last_name]stringThe last name of the person you want to check

For invoice documents :

Query ParamTypeDescription
filefile[required] The file containing the data to extract. Accepted formats: PDF, PNG, JPG, JPEG. Max size: 10 MB. Max number of pages for PDF: 2.
typestring[required] The type of the document you are trying to analyze. Example : invoice
country_codestringDefines the country of origin of the document.
checksobject[optional]
checks[buyer_name]stringThe first and last name of the person you want to check