{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Testing"},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"testing","__idx":0},"children":["Testing"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"overview","__idx":1},"children":["Overview"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Test mode is a parallel data plane that lets you exercise every endpoint and"," ","provider scenario without touching production data or paying real-money"," ","provider fees. It is scoped by API key — test keys can only see and create"," ","test records, and live keys can only see and create live records. The two"," ","planes never overlap."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use test mode while you build out your integration, run end-to-end tests in"," ","CI, and demo the API to stakeholders. Switch to live keys for production"," ","traffic."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"getting-a-test-api-key","__idx":2},"children":["Getting a Test API Key"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["API keys are managed from the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://tenant.checkr.com/settings/developer"},"children":["Developer"," ","Settings"]}," page in the Checkr"," ","Tenant dashboard. Each organization can mint two kinds of keys:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Live keys"]}," — prefixed ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ckr_sk_live_"]},". Used for production traffic."," ","Records created with a live key are real, billable, and route to real"," ","provider integrations."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Test keys"]}," — prefixed ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ckr_sk_test_"]},". Used for development and"," ","integration testing. Records created with a test key are inert, unbilled,"," ","and route to canned provider responses (see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#canned-provider-scenarios"},"children":["Canned Provider"," ","Scenarios"]}," below)."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The full token value is shown once at creation time and cannot be retrieved"," ","later — capture it then. Tokens are sent on every request as a bearer"," ","credential:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"Authorization: Bearer ckr_sk_test_<...>\n"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"identifying-the-mode-of-a-resource","__idx":3},"children":["Identifying the Mode of a Resource"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Order and Report responses carry a boolean ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["live_mode"]}," field that confirms"," ","which plane the record was created in. For Applicants and Properties the"," ","mode is encoded in the resource ID (see below) rather than as a separate"," ","field."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"id\": \"ord_test_TUyYsLnyTbG3xv9hONJF7w\",\n  \"live_mode\": false,\n  \"status\": \"pending\",\n  ...\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Resource IDs also encode the mode: test-mode IDs carry a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["_test_"]}," infix"," ","between the resource prefix and the suffix (e.g. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ord_test_…"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["rp_test_…"]},"),"," ","while live-mode IDs have no infix (e.g. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ord_…"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["rp_…"]},"). Either form is"," ","accepted on read endpoints, but a test key cannot fetch a live ID and vice"," ","versa — the response is ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["404 not_found_error"]}," (see"," ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/errors#status-codes"},"children":["Errors"]},")."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"mode-isolation","__idx":4},"children":["Mode Isolation"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Reads are automatically scoped to the mode of the calling key:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["A list or lookup with a test key returns only test-mode records."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["A list or lookup with a live key returns only live-mode records."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Cross-mode lookups return ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["404 not_found_error"]},". The response is identical"," ","to a record that does not exist, to avoid leaking the existence of records"," ","from the other plane."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"canned-provider-scenarios","__idx":5},"children":["Canned Provider Scenarios"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Orders created with a test API key route to canned provider responses"," ","instead of real screening providers. The applicant fields on the order"," ","determine which scenario fires; partial matches are treated as a miss and"," ","return the clean scenario for every product, so a typo cannot accidentally"," ","leak a hit."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A scenario fires when ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["first name, last name, date of birth, and SSN all"," ","match"]}," one of the profiles below. All test profiles share the same date of"," ","birth: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["1996-04-27"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Submit ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["first_name"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["last_name"]}," on the applicant — for example"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"first_name\": \"Herbert\""]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"last_name\": \"Humphrey\""]}," — along with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["dob"]}," ","and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ssn"]},". Legacy ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["full_name"]}," input is still accepted during the current API"," ","version, but not in the same request as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["first_name"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["last_name"]},"."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"First"},"children":["First"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Last"},"children":["Last"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"DOB"},"children":["DOB"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"SSN"},"children":["SSN"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Criminal History"},"children":["Criminal History"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Credit Report"},"children":["Credit Report"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Eviction History"},"children":["Eviction History"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Income Verification"},"children":["Income Verification"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Sex Offender Registry"},"children":["Sex Offender Registry"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Global Watchlist"},"children":["Global Watchlist"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Herbert"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Humphrey"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["1996-04-27"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["111-11-1111"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["consider"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["clear"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["clear"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["consistent_income"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["clear"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["clear"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Madelyn"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Webster"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["1996-04-27"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["222-22-2222"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["clear"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["consider"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["clear"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["variable_income"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["clear"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["clear"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Norma"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Davies"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["1996-04-27"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["333-33-3333"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["clear"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["clear"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["consider"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["high_assets"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["clear"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["clear"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Tim"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Watkins"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["1996-04-27"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["444-44-4444"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["consider"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["consider"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["consider"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["low_assets"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["consider"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["consider"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Hudson",{"$$mdtype":"Tag","name":"sup","attributes":{},"children":["†"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Green"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["1996-04-27"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["555-55-5555"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["clear"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["clear"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["clear"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["consistent_income"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["clear"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["clear"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"em","attributes":{},"children":["any other tuple"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["clear"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["clear"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["clear"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["consistent_income"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["clear"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["clear"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["† Hudson Green does not circumvent the applicant experience — see"," ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#applicant-experience-in-test-mode"},"children":["Applicant Experience in Test Mode"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Notes:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The SSNs above are reserved test ranges and the names do not collide with"," ","production records, so the values are inert."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Submitting an order with any other applicant returns the clean scenario"," ","for every product. This is the right behavior for golden-path tests where"," ","you do not need a flagged result."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["For income verification, the label in the table identifies which canned"," ","report shape is returned (income streams, account balances, NSF history)."," ","See the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/v1#schema/income-verification"},"children":["income-verification schema"]}," ","for the full field list. Bank-connection setup is bypassed entirely for"," ","test-mode orders."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"income-verification-from-documents","__idx":6},"children":["Income verification from documents"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The tuples above all return bank-sourced income. To exercise the document"," ","path instead, order income verification for ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Ingrid Vance"]},", DOB"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["1996-04-27"]},", with one of two SSNs:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"First"},"children":["First"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Last"},"children":["Last"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"DOB"},"children":["DOB"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"SSN"},"children":["SSN"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Document risk"},"children":["Document risk"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Ingrid"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Vance"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["1996-04-27"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["666-66-6666"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["all three documents ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["low"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Ingrid"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Vance"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["1996-04-27"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["666-66-6667"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["paystub ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["medium"]},", W-2 ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["high"]},", bank statement ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["low"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Submitting the order attaches a bank statement, a paystub and a W-2 as"," ","though the applicant uploaded them in the application flow."," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["income_verification"]}," comes back with a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["verification_method"]}," of"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["document"]},", the three entries in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["documents"]},", and income data extracted from them."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The two tuples differ only in document risk, and the difference is visible"," ","in the reported income: a document assessed ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["high"]}," is excluded, so the second"," ","tuple's W-2 contributes nothing and"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["total_past_12_months_estimated_gross_cents"]}," comes back null, while its"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["medium"]}," paystub still counts."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":5,"id":"downloading-the-documents","__idx":7},"children":["Downloading the documents"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Both document endpoints work against these test-mode orders. Each entry in"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["income_verification.documents"]}," carries a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["download_url"]}," pointing at"," ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/v1#operation/get-report-document"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /reports/{id}/documents/{document_id}/download"]}]},","," ","which returns that document as a real PDF — a sample paystub, W-2 or bank"," ","statement made out to the test applicant."," ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/v1#operation/get-report-documents-zip"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /reports/{id}/documents/zip"]}]}," ","returns a ZIP holding all three in its ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["income_documents/"]}," folder."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Add ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["add_on_products: [\"identity_verification\"]"]}," to the order and the same"," ","archive also carries an ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["identity_verification/"]}," folder. Those images are"," ","fixed placeholder files rather than captured documents, so use them to verify"," ","your handling of the archive's structure, not to check image content."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"identity-verification-add-on-scenarios","__idx":8},"children":["Identity Verification add-on scenarios"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Identity Verification is an ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["add-on product"]},", not bundled into any"," ","package. It runs only when the order is created with"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["add_on_products: [\"identity_verification\"]"]},". Outcomes are selected by a"," ","subset of profiles from the table above — matching one of the rows"," ","below by ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["first name, last name, DOB, and SSN"]}," triggers the listed"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["consider"]}," result; any other applicant tuple returns ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["clear"]},"."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"First"},"children":["First"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Last"},"children":["Last"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"DOB"},"children":["DOB"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"SSN"},"children":["SSN"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Identity Verification"},"children":["Identity Verification"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Norma"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Davies"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["1996-04-27"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["333-33-3333"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["consider"]}," — ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["doc_expired"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Tim"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Watkins"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["1996-04-27"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["444-44-4444"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["consider"]}," — ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["selfie_mismatch"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["name_mismatch"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The categories shown correspond to entries in the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["consider_reasons"]}," array"," ","on the report item. See the"," ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/v1#schema/identity-verification"},"children":["identity-verification schema"]}," for"," ","the full set of possible categories."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Example request that triggers the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["doc_expired"]}," IDV outcome:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"order\": {\n    \"package\": \"starter\",\n    \"add_on_products\": [\"identity_verification\"],\n    \"applicant\": {\n      \"first_name\": \"Norma\",\n      \"last_name\": \"Davies\",\n      \"email\": \"norma@example.com\",\n      \"dob\": \"1996-04-27\",\n      \"ssn\": \"333-33-3333\"\n    },\n    \"property\": { \"...\": \"...\" }\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"applicant-experience-in-test-mode","__idx":9},"children":["Applicant Experience in Test Mode"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["By default, test mode circumvents the applicant experience so that you receive"," ","the test report immediately. No email or SMS communication is sent to the"," ","test applicant and the applicant experience is skipped."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If you would like to see the applicant experience, submit the order with"," ","the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Hudson Green"]}," tuple from the table above. You will receive an application"," ","link at the email provided, and the create-order response includes"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["application_url"]}," (other test profiles return ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["null"]}," for that field because"," ","they skip the apply flow)."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If the selected package includes identity or income verifications, provider flows are bypassed. Buttons to simulate ID upload and/or bank connection appear in their place."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"webhooks","__idx":10},"children":["Webhooks"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Webhook endpoints are also bound to a single mode at registration time and"," ","only receive events from that mode:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["A webhook endpoint registered with a test key receives events for"," ","test-mode resources only."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["A webhook endpoint registered with a live key receives events for"," ","live-mode resources only."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Event payloads use the same shape across modes. Webhook events carry only"," ","the affected resource's ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["id"]}," in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data"]}," (not an embedded object), so the"," ","plane is identifiable from the ID infix — ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["rp_test_…"]}," / ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ord_test_…"]}," for"," ","test-mode events, no infix for live-mode."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"available-resources-in-test-mode","__idx":11},"children":["Available Resources in Test Mode"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Test mode is supported across the public API:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/v1#tag/orders"},"children":["Orders"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/v1#tag/reports"},"children":["Reports"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/v1#tag/applicants"},"children":["Applicants"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/v1#tag/properties"},"children":["Properties"]}]}]}]},"headings":[{"value":"Testing","id":"testing","depth":2},{"value":"Overview","id":"overview","depth":3},{"value":"Getting a Test API Key","id":"getting-a-test-api-key","depth":3},{"value":"Identifying the Mode of a Resource","id":"identifying-the-mode-of-a-resource","depth":3},{"value":"Mode Isolation","id":"mode-isolation","depth":3},{"value":"Canned Provider Scenarios","id":"canned-provider-scenarios","depth":3},{"value":"Income verification from documents","id":"income-verification-from-documents","depth":4},{"value":"Downloading the documents","id":"downloading-the-documents","depth":5},{"value":"Identity Verification add-on scenarios","id":"identity-verification-add-on-scenarios","depth":4},{"value":"Applicant Experience in Test Mode","id":"applicant-experience-in-test-mode","depth":3},{"value":"Webhooks","id":"webhooks","depth":3},{"value":"Available Resources in Test Mode","id":"available-resources-in-test-mode","depth":3}],"frontmatter":{"seo":{"title":"Testing"}},"lastModified":"2026-08-20T20:28:17.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/testing","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}