{"openapi":"3.1.0","info":{"version":"1.0.0","title":"Verification Api","license":{"name":"Truelayer","url":"www.truelayer.com"},"description":"OpenAPI Spec\n"},"servers":[{"url":"https://api.truelayer.com"},{"url":"https://api.truelayer-sandbox.com"}],"paths":{"/verification/v1/verify":{"post":{"operationId":"Verification","summary":"Verify account holder name.","description":"Verify supplied name with account holder's name.\n\n**Headers Required:**\nAuthorization (JWT) Token with bearer scheme format is required to make a call to Verification API.\n","tags":["Account Verification"],"security":[{"OAuth2":["verification"]}],"parameters":[{"in":"header","name":"Authorization","schema":{"type":"string","format":"bearer JWT"},"required":true}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NameVerificationRequest"},"example":{"name":"Jack Johnson"}}},"description":"This is an example name that the client would send to verification api","required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NameVerificationResponse"},"examples":{"match-result":{"$ref":"#/components/examples/Verification200Response-Match"},"no-match-result":{"$ref":"#/components/examples/Verification200Response-NoMatch"}}}}},"400":{"description":"Bad request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationApiErrorResponse"},"examples":{"NoSuitable-Accounts":{"$ref":"#/components/examples/NoSuitableAccount400ErrorResponse"},"ClientSuppliedName-TooLong":{"$ref":"#/components/examples/ClientNameTooLong400ErrorResponse"}}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"},"examples":{"AccessToken-Missing":{"$ref":"#/components/examples/AuthorizationHeader401ErrorResponse"}}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"},"examples":{"Client-Forbidden":{"$ref":"#/components/examples/AuthorizationClient403ErrorResponse"}}}}},"429":{"description":"Too Many Requests","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"},"examples":{"Client-Forbidden":{"$ref":"#/components/examples/TooManyRequest429ErrorResponse"}}}}},"500":{"description":"Internal Server Error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"},"examples":{"Client-Forbidden":{"$ref":"#/components/examples/InternalServer500ErrorResponse"}}}}},"503":{"description":"Service Unavaliable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"},"examples":{"Service-Unavaliable":{"$ref":"#/components/examples/ServiceUnavaliable503ErrorResponse"}}}}},"504":{"description":"Gateway Timeout","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"},"examples":{"Gateway-Timeout":{"$ref":"#/components/examples/GatewayTimeout504ErrorResponse"}}}}}}}},"/v3/verification/fr/verify-account-details":{"post":{"operationId":"VerifyAccountDetails","summary":"Verify account details.","description":"Verify supplied name, account type and date of birth with account holder's name, account type and date of birth.\n\n**Headers Required:**\nAuthorization (JWT) Token with bearer scheme format is required to make a call to Verification API.\n","tags":["Account Verification"],"security":[{"OAuth2":["verification:fr"]}],"parameters":[{"in":"header","name":"Authorization","schema":{"type":"string","format":"bearer JWT"},"required":true}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyAccountDetailsRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyAccountDetailsResponse"},"examples":{"match":{"summary":"name match response","value":{"name_match":{"type":"match","match_score":100},"account_type_match":{"type":"match"},"account_status":"active","date_of_birth_match":{"type":"match"}}},"partial_match":{"summary":"name partial match response","value":{"name_match":{"type":"partial_match","match_score":95},"account_type_match":{"type":"match"},"account_status":"active","date_of_birth_match":{"type":"match"}}},"no_match":{"summary":"name no match response","value":{"name_match":{"type":"no_match","match_score":60},"account_type_match":{"type":"match"},"account_status":"active","date_of_birth_match":{"type":"match"}}},"account_closed":{"summary":"account closed response","value":{"name_match":{"type":"no_match","match_score":0},"account_type_match":{"type":"unknown"},"account_status":"inactive","date_of_birth_match":{"type":"unknown"}}},"account_opted_out":{"summary":"account opted out","value":{"name_match":{"type":"no_match","match_score":0},"account_type_match":{"type":"unknown"},"account_status":"opted_out_from_scheme","date_of_birth_match":{"type":"unknown"}}}}}}},"400":{"description":"Bad request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationApiErrorResponse"},"examples":{"Invalid-Iban":{"$ref":"#/components/examples/InvalidIban400ErrorResponse"}}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"},"examples":{"AccessToken-Missing":{"$ref":"#/components/examples/AuthorizationHeader401ErrorResponse-2"}}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"},"examples":{"Client-Forbidden":{"$ref":"#/components/examples/AuthorizationClient403ErrorResponse-2"}}}}},"500":{"description":"Internal Server Error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"},"examples":{"Client-Forbidden":{"$ref":"#/components/examples/InternalServer500ErrorResponse-2"}}}}}}}},"/v3/account-holder-verifications/requests":{"post":{"tags":["Account Holder Verification"],"summary":"Create account holder verification","operationId":"create-account-holder-verification","description":"Create a request to verify that the provided account holder name matches the name associated with the provided bank account.\n","security":[{"OAuth2":["verification"]}],"parameters":[{"in":"header","name":"Authorization","schema":{"type":"string","format":"bearer JWT"},"required":true},{"$ref":"#/components/parameters/IdempotencyKeyHeader"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAccountHolderVerification"},"examples":{"UK-Account":{"$ref":"#/components/examples/CreateAccountHolderVerificationRequest_UK"},"EU-Account":{"$ref":"#/components/examples/CreateAccountHolderVerificationRequest_EU"}}}},"required":true},"responses":{"202":{"description":"Account holder verification","content":{"application/json":{"schema":{"type":"object","required":["id"],"properties":{"id":{"description":"ID of the account holder verification request","type":"string","format":"uuid","example":"550e8400-e29b-41d4-a716-446655440000"}}},"example":{"id":"550e8400-e29b-41d4-a716-446655440000"}}}},"400":{"description":"Bad request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationApiErrorResponse"},"examples":{"Invalid-Account-Number":{"$ref":"#/components/examples/InvalidSortCode400ErrorResponse"},"Invalid-Iban":{"$ref":"#/components/examples/InvalidIban400ErrorResponse-2"}}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"},"examples":{"AccessToken-Missing":{"$ref":"#/components/examples/Authorization401ErrorResponse"}}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"},"examples":{"Client-Forbidden":{"$ref":"#/components/examples/Authorization403ErrorResponse"}}}}},"409":{"description":"Idempotency-Key Concurrency Conflict","headers":{"Tl-Should-Retry":{"schema":{"type":"boolean"},"description":"Whether retrying with the same idempotency key could return a different result. If you receive a value of true, you should retry your request to get the true result of the operation."}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/IdempotencyKeyConcurrencyConflict"},"examples":{"Idempotency-Key-Concurrency-Conflict":{"$ref":"#/components/examples/IdempotencyKeyConcurrencyConflict409ErrorResponse"}}}}},"422":{"description":"Idempotency-Key Reuse","headers":{"Tl-Should-Retry":{"schema":{"type":"boolean"},"description":"Whether retrying with the same idempotency key could return a different result. If you receive a value of true, you should retry your request to get the true result of the operation."}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/IdempotencyKeyReuse"},"examples":{"Idempotency-Key-Reuse":{"$ref":"#/components/examples/IdempotencyKeyReuse422ErrorResponse"}}}}},"500":{"description":"Internal Server Error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"},"examples":{"Internal-Server-Error":{"$ref":"#/components/examples/InternalServer500ErrorResponse-3"}}}}}}}},"/v3/account-holder-verifications/requests/{id}":{"get":{"tags":["Account Holder Verification"],"summary":"Get account holder verification","operationId":"get-account-holder-verification","description":"Returns the results of account holder verification for the given ID.\n\n**Headers Required:**\nAuthorization (JWT) Token with bearer scheme format is required to make a call to Verification API.\n","security":[{"OAuth2":["verification"]}],"parameters":[{"in":"path","name":"id","description":"ID of the account holder verification request","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAccountHolderVerification"},"examples":{"match":{"summary":"Match","$ref":"#/components/examples/VerifyAccountHolder_Match"},"close_match":{"summary":"Partial match","$ref":"#/components/examples/VerifyAccountHolder_PartialMatch"},"no_match":{"summary":"No match","$ref":"#/components/examples/VerifyAccountHolder_NoMatch"},"match_not_possible":{"summary":"Match Not Possible","$ref":"#/components/examples/VerifyAccountHolder_MatchNotPossible"},"request_pending":{"summary":"Pending","$ref":"#/components/examples/VerifyAccountHolder_Pending"},"request_failed":{"summary":"Failed","$ref":"#/components/examples/VerifyAccountHolder_Failed"}}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"},"examples":{"AccessToken-Missing":{"$ref":"#/components/examples/Authorization401ErrorResponse"}}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"},"examples":{"Client-Forbidden":{"$ref":"#/components/examples/Authorization403ErrorResponse"}}}}},"404":{"description":"Not Found","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"},"examples":{"Verification-Not-Found":{"$ref":"#/components/examples/VerificationNotFound404ErrorResponse"}}}}},"500":{"description":"Internal Server Error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"},"examples":{"Internal-Server-Error":{"$ref":"#/components/examples/InternalServer500ErrorResponse-3"}}}}}}}},"/v3/bank-lookup":{"post":{"operationId":"BankLookup","summary":"Bank lookup by account identifier.","description":"Retrieve bank information (BIC and name) by providing an account identifier (IBAN or Sort Code + Account Number).\n\n**Headers Required:**\nAuthorization (JWT) Token with bearer scheme format is required to make a call to Verification API.\n","tags":["Bank Lookup"],"security":[{"OAuth2":["verification:bank_lookup"]}],"parameters":[{"in":"header","name":"Authorization","schema":{"type":"string","format":"bearer JWT"},"required":true}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BankLookupRequest"},"examples":{"iban_lookup":{"summary":"IBAN bank lookup request","value":{"account_identifier":{"type":"iban","iban":"DE75512108001245126199"}}},"scan_lookup":{"summary":"Sort Code + Account Number bank lookup request","value":{"account_identifier":{"type":"sort_code_account_number","sort_code":"202015","account_number":"55555555"}}}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BankLookupResponse"},"examples":{"success":{"summary":"Successful bank lookup response","value":{"bic":"MONZGB2LXXX","name":"MONZO BANK LIMITED"}}}}}},"400":{"description":"Bad request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ValidationApiErrorResponse"},"examples":{"invalid_iban":{"summary":"IBAN structure is not correct","value":{"type":"https://docs.truelayer.com/docs/error-types#invalid-parameters","title":"Invalid Parameters","status":400,"instance":"/v3/bank-lookup","trace_id":"96ce50247f87f540bb2d86771b3728b8","detail":"The request body was invalid.","errors":{"account_identifier.iban":["IBAN structure is not correct"]}}}}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"},"examples":{"unauthorized":{"summary":"Authorization error","value":{"type":"https://docs.truelayer.com/docs/error-codes","title":"Unauthorized","status":401,"detail":"Access token missing or invalid.","instance":"/v3/bank-lookup","traceId":"92236ad5-605a-4041-a541-435d3131562d"}}}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"},"examples":{"forbidden":{"summary":"AccessDenied","value":{"type":"https://docs.truelayer.com/docs/error-codes","title":"Forbidden","status":403,"instance":"/v3/bank-lookup","traceId":"92236ad5-605a-4041-a541-435d3131562d"}}}}}},"500":{"description":"Internal Server Error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"},"examples":{"internal_server_error":{"summary":"Internal server error","value":{"type":"https://docs.truelayer.com/docs/error-codes","title":"Internal Server Error","status":500,"detail":"Something went wrong. Please try again later.","instance":"/v3/bank-lookup","traceId":"92236ad5-605a-4041-a541-435d3131562d"}}}}}}}}}},"webhooks":{"account-holder-verification":{"post":{"tags":["Account Holder Verification"],"summary":"Account Holder Verification Webhooks","operationId":"account-holder-verification-webhooks","description":"Sent to the webhook URI you registered in Console when:\n- An account holder verification request completes successfully.\n- An account holder verification request fails.\n","parameters":[{"name":"Tl-Signature","in":"header","description":"A JWS with detached content, verifiable with our public key.\nSee [Webhook Request Signing](/docs/configure-webhooks-for-your-integration#validate-the-signature-of-received-webhooks)\n","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/AccountHolderVerificationCompleted"},{"$ref":"#/components/schemas/AccountHolderVerificationFailed"}],"discriminator":{"propertyName":"type","mapping":{"account_holder_verification_completed":"#/components/schemas/AccountHolderVerificationCompleted","account_holder_verification_failed":"#/components/schemas/AccountHolderVerificationFailed"}}},"examples":{"VerificationCompleted-Match":{"$ref":"#/components/examples/AccountHolderVerificationCompletedMatch"},"VerificationCompleted-PartialMatch":{"$ref":"#/components/examples/AccountHolderVerificationCompletedPartialMatch"},"VerificationCompleted-NoMatch":{"$ref":"#/components/examples/AccountHolderVerificationCompletedNoMatch"},"VerificationCompleted-MatchNotPossible":{"$ref":"#/components/examples/AccountHolderVerificationCompletedMatchNotPossible"},"VerificationFailed":{"$ref":"#/components/examples/AccountHolderVerificationFailed"}}}}},"responses":{"200":{"description":"Webhook Handled"}},"security":[]}}},"components":{"securitySchemes":{"OAuth2":{"type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"https://auth.truelayer.com/connect/token","scopes":{"verification":"for accessing all the endpoints of Verification API"}}}}},"schemas":{"NameVerificationRequest":{"type":"object","properties":{"name":{"description":"The name supplied by the client that needs to be matched with the account holder name at the bank.\n\nSample Request Example:\n```\n{\n      \"name\": \"Jack Johnson\"\n}\n```\n\n__Max length: 200 characters__.\n","type":"string","maxLength":200,"example":"Jack Johnson"}},"required":["name"]},"NameVerificationResponse":{"type":"object","title":"NameVerificationResponse","properties":{"verified":{"type":"boolean","description":"Indicates whether there is a successful match."},"account_holder_name":{"type":"string","description":"Account holder's name."},"match_score":{"type":"integer","description":"Value from 0-100 that shows probability of a successful match."},"failure_description":{"type":"string","description":"Description returned when there when account is not verifiable."},"failure_code":{"type":"string","description":"failure Code"},"report":{"type":"array","items":{"type":"object","properties":{"verifiable":{"type":"boolean","description":"Account is verifiable or not"},"failure_description":{"description":"Description returned when there when account is not verifiable.","type":"string"},"failure_code":{"description":"failure Code","type":"string"},"currency":{"type":"string","description":"Currency of account."},"provider_id":{"type":"string","description":"The name of the bank."},"account_type":{"type":"string","description":"Type of the account returned by the bank."},"account_holders":{"type":"array","items":{"properties":{"name":{"type":"string","description":"Array of names of account holders in the account"},"verified":{"type":"boolean","description":"Indicates whether there is a match."},"match_score":{"type":"integer","description":"Value from 0-100 that shows percentage of match certainity"}}}},"display_name":{"type":"string","description":"Name of the account returned by the bank."},"iban":{"type":"string","description":"Accounts IBAN number."},"swift_bic":{"type":"string","description":"Swift code of account."},"account_number":{"type":"string","description":"The account number."},"sort_code":{"type":"string","description":"Sort code of account."}}}}}},"ValidationApiErrorResponse":{"type":"object","title":"ValidationApiErrorResponse","properties":{"errors":{"type":"array","items":{"type":"object","description":"Provides details of where validation error occured","properties":{"propertyName":{"type":"string","description":"Validation error description of the property. Can be multiple properties in the array."}}}},"type":{"description":"Link that describes http status codes","type":"string"},"title":{"description":"Title of the error","type":"string"},"status":{"description":"HTTP status code of the response","type":"integer"},"detail":{"description":"More verbose explanation of the error.\n","type":"string"},"instance":{"description":"The endpoint from where the error occured.\n","type":"string"},"traceId":{"description":"A unique GUID for the request.","type":"string"}}},"ApiErrorResponse":{"type":"object","title":"ApiErrorResponse","properties":{"type":{"description":"Link that describes http status codes","type":"string"},"title":{"description":"Title of the error","type":"string"},"status":{"description":"HTTP status code of the response","type":"integer"},"detail":{"description":"More verbose explanation of the error.\n","type":"string"},"instance":{"description":"The endpoint from where the error occured.\n","type":"string"},"traceId":{"description":"A unique GUID for the request.","type":"string"}}},"Iban":{"type":"object","title":"IBAN","description":"The international bank account number.","required":["type","iban"],"properties":{"type":{"description":"The type of account identifier.","type":"string","enum":["iban"]},"iban":{"description":"Valid International Bank Account Number (no spaces). Consists of a 2 letter country code, followed by 2 check digits, and then by up to 30 alphanumeric characters.","type":"string","minLength":15,"maxLength":34,"pattern":"^[A-Z]{2}[0-9]{2}[A-Z0-9]{11,30}$","example":"FR0218359000430598890U02758"}}},"VerifyAccountDetailsRequest":{"type":"object","required":["name","account_identifier","account_type"],"properties":{"name":{"description":"Account holder name to verify.","type":"string","maxLength":200,"examples":["John Doe"]},"account_identifier":{"$ref":"#/components/schemas/Iban"},"account_type":{"description":"Account type to verify.","enum":["personal","business"],"examples":["personal"]},"date_of_birth":{"description":"Account holder date of birth to verify, in YYYY-MM-DD format.","type":"string","examples":["1977-12-21"]}}},"NameMatch":{"title":"Name Match","type":"object","required":["type","match_score"],"properties":{"type":{"description":"This field represents the type of match between the provided name and the account holder's name. It is a string that can have one of three possible values. </br>\n\n```match``` The provided name perfectly matches the account holder's name.</br> ```partial_match``` The provided name partially matches the account holder's name.</br> ```no_match``` There is no match between the provided name and the account holder's name.","type":"string","enum":["match","partial_match","no_match"],"examples":["match"]},"match_score":{"description":"This field represents the score of the name match, indicating the degree of similarity between the provided name and the account holder's name.</br>\n\n```match``` -> The provided name perfectly matches the account holder's name. Score is 100.</br> ```partial_match```-> The provided name partially matches the account holder's name. Score ranges from 88 to 99. </br> ```no_match```-> There is no match between the provided name and the account holder's name. Score ranges from 0 to 87.","type":"integer","examples":[100]}}},"AccountTypeMatch":{"title":"Account Type Match","type":"object","required":["type"],"properties":{"type":{"description":"This field represents the result of matching the provided account type with the actual account type. It is a string that can have one of three possible values.</br>\n\n```match``` The provided account type perfectly matches the actual account type.</br> ```no_match``` There is no match between the provided account type and the actual account type.</br> ```unknown``` The result of the account type match could not be determined.","enum":["match","no_match","unknown"],"examples":["match"]}}},"DateOfBirthMatch":{"title":"Account status","type":"object","required":["type"],"properties":{"type":{"description":"This field represents the result of matching the provided date of birth with the account holder's date of birth. It is a string that can have one of three possible values.</br>\n\n```match``` The provided date of birth perfectly matches the account holder's date of birth.</br> ```no_match``` There is no match between the provided date of birth and the account holder's date of birth.</br> ```unknown``` The result of the date of birth match could not be determined.","enum":["match","no_match","unknown"],"examples":["match"]}}},"VerifyAccountDetailsResponse":{"type":"object","required":["name_match","account_type_match","account_status"],"properties":{"name_match":{"title":"Name match","$ref":"#/components/schemas/NameMatch"},"account_type_match":{"title":"Account type match","$ref":"#/components/schemas/AccountTypeMatch"},"account_status":{"description":"This field represents the current status of the account. It can have one of four possible values. </br>\n\n```active``` The account is currently active and in good standing.</br> ```inactive``` The account is currently inactive.</br> ```opted_out_from_scheme``` The account has been opted out of sharing details with the underlying scheme.</br> ```unknown``` The status of the account could not be determined.","enum":["active","inactive","opted_out_from_scheme","unknown"],"examples":["active"]},"date_of_birth_match":{"title":"Date of birth match","$ref":"#/components/schemas/DateOfBirthMatch"}}},"SortCodeAccountNumber":{"type":"object","title":"Sort Code + Account Number","description":"The sort code and account number.","required":["type","sort_code","account_number"],"properties":{"type":{"description":"The type of account identifier.","type":"string","enum":["sort_code_account_number"]},"sort_code":{"description":"6 digit sort code (no spaces or dashes).","type":"string","minLength":6,"maxLength":6,"pattern":"^[0-9]{6}$","example":"123456"},"account_number":{"description":"8 digit account number.","type":"string","minLength":8,"maxLength":8,"pattern":"^[0-9]{8}$","example":"12345678"}}},"CreateAccountHolderVerification":{"type":"object","required":["account_holder_name","account_identifier"],"properties":{"account_holder_name":{"description":"Name of the account holder to verify.","type":"string","maxLength":200,"examples":["John Doe"]},"account_identifier":{"type":"object","description":"The identifer of the account holder's account.","oneOf":[{"$ref":"#/components/schemas/SortCodeAccountNumber"},{"$ref":"#/components/schemas/Iban"}]}}},"IdempotencyKeyConcurrencyConflict":{"title":"Idempotency-Key Concurrency Conflict","type":"object","required":["type","title","status","traceId","detail"],"properties":{"type":{"type":"string","enum":["https://docs.truelayer.com/docs/error-codes#idempotency-key-concurrency-conflict"]},"title":{"type":"string","enum":["Idempotency-Key Concurrency Conflict"]},"status":{"type":"integer","format":"int32","enum":[409]},"traceId":{"type":"string","example":"92236ad5-605a-4041-a541-435d3131562d"},"detail":{"type":"string","example":"A request with the same Idempotency-Key is currently being processed. Please wait for the original request to complete."},"instance":{"type":"string","example":"/v3/account-holder-verifications/requests"}}},"IdempotencyKeyReuse":{"title":"Idempotency-Key Reuse","type":"object","required":["type","title","status","traceId","detail"],"properties":{"type":{"type":"string","enum":["https://docs.truelayer.com/docs/error-codes#idempotency-key-reuse"]},"title":{"type":"string","enum":["Idempotency-Key Reuse"]},"status":{"type":"integer","format":"int32","enum":[422]},"traceId":{"type":"string","example":"92236ad5-605a-4041-a541-435d3131562d"},"detail":{"type":"string","example":"The provided Idempotency-Key has been used before with different request data."},"instance":{"type":"string","example":"/v3/account-holder-verifications/requests"}}},"BaseAccountHolderVerification":{"type":"object","required":["id","status"],"properties":{"id":{"description":"ID of the account holder verification request","type":"string","format":"uuid","example":"550e8400-e29b-41d4-a716-446655440000"},"status":{"description":"Current status of the account holder verification request","type":"string"}}},"BaseVerificationResult":{"type":"object","required":["type"],"properties":{"type":{"description":"The result of the name matching process. Aligned with provider responses.","type":"string","enum":["match","partial_match","no_match","match_not_possible"]}}},"MatchResult":{"allOf":[{"$ref":"#/components/schemas/BaseVerificationResult"},{"type":"object","properties":{"type":{"enum":["match"],"example":"match"}}}]},"PartialMatchResult":{"allOf":[{"$ref":"#/components/schemas/BaseVerificationResult"},{"type":"object","required":["account_holder_name"],"properties":{"type":{"enum":["partial_match"],"example":"partial_match"},"account_holder_name":{"description":"Account holder name returned by the provider. Present for partial_match results.","type":"string","maxLength":200,"example":"J Doe"}}}]},"NoMatchResult":{"allOf":[{"$ref":"#/components/schemas/BaseVerificationResult"},{"type":"object","properties":{"type":{"enum":["no_match"],"example":"no_match"}}}]},"MatchNotPossibleResult":{"allOf":[{"$ref":"#/components/schemas/BaseVerificationResult"},{"type":"object","required":["reason"],"properties":{"type":{"enum":["match_not_possible"],"example":"match_not_possible"},"reason":{"description":"Reason for the verification not being possible.","type":"string","example":"Bank unable to match"}}}]},"CompletedAccountHolderVerification":{"allOf":[{"$ref":"#/components/schemas/BaseAccountHolderVerification"},{"type":"object","properties":{"status":{"enum":["completed"],"example":"completed"},"match_result":{"description":"Verification result. Present when status is completed.","oneOf":[{"$ref":"#/components/schemas/MatchResult"},{"$ref":"#/components/schemas/PartialMatchResult"},{"$ref":"#/components/schemas/NoMatchResult"},{"$ref":"#/components/schemas/MatchNotPossibleResult"}],"discriminator":{"propertyName":"type","mapping":{"match":"#/components/schemas/MatchResult","partial_match":"#/components/schemas/PartialMatchResult","no_match":"#/components/schemas/NoMatchResult","match_not_possible":"#/components/schemas/MatchNotPossibleResult"}}}},"required":["match_result"]}]},"PendingAccountHolderVerification":{"allOf":[{"$ref":"#/components/schemas/BaseAccountHolderVerification"},{"type":"object","properties":{"status":{"enum":["pending"],"example":"pending"}}}]},"FailedAccountHolderVerification":{"allOf":[{"$ref":"#/components/schemas/BaseAccountHolderVerification"},{"type":"object","required":["failure_reason"],"properties":{"status":{"enum":["failed"],"example":"failed"},"failure_reason":{"description":"Reason for the verification failure. Present when status is failed.","type":"string","example":"provider_error"}}}]},"GetAccountHolderVerification":{"oneOf":[{"$ref":"#/components/schemas/CompletedAccountHolderVerification"},{"$ref":"#/components/schemas/PendingAccountHolderVerification"},{"$ref":"#/components/schemas/FailedAccountHolderVerification"}],"discriminator":{"propertyName":"status","mapping":{"completed":"#/components/schemas/CompletedAccountHolderVerification","pending":"#/components/schemas/PendingAccountHolderVerification","failed":"#/components/schemas/FailedAccountHolderVerification"}}},"BankLookupAccountIdentifier":{"oneOf":[{"$ref":"#/components/schemas/Iban"},{"$ref":"#/components/schemas/SortCodeAccountNumber"}],"discriminator":{"propertyName":"type","mapping":{"iban":"#/components/schemas/Iban","sort_code_account_number":"#/components/schemas/SortCodeAccountNumber"}},"description":"A unique scheme identifier for bank lookup.\n"},"BankLookupRequest":{"type":"object","required":["account_identifier"],"properties":{"account_identifier":{"$ref":"#/components/schemas/BankLookupAccountIdentifier"}}},"BankLookupResponse":{"type":"object","required":["bic","name"],"properties":{"bic":{"description":"Bank Identifier Code (BIC) of the bank","type":"string","example":"MONZGB2LXXX"},"name":{"description":"Full name of the bank","type":"string","example":"MONZO BANK LIMITED"}}},"WebhookCommon":{"type":"object","properties":{"type":{"type":"string"},"event_version":{"description":"The version of the event schema.\n","type":"integer"},"event_id":{"description":"Unique ID of the event.\n","type":"string","format":"uuid","example":"b8d4dda0-ff2c-4d77-a6da-4615e4bad941"}},"required":["type","event_version","event_id"]},"AccountHolderVerificationCompleted":{"title":"Account Holder Verification Completed","description":"Webhook payload sent when an account holder verification request completes successfully.","allOf":[{"$ref":"#/components/schemas/WebhookCommon"},{"type":"object","required":["type","event_version","account_holder_verification_id","match_result"],"properties":{"type":{"enum":["account_holder_verification_completed"]},"event_version":{"enum":[1]},"account_holder_verification_id":{"description":"The ID of the account holder verification request","type":"string","format":"uuid","example":"550e8400-e29b-41d4-a716-446655440000"},"match_result":{"description":"The result of the verification","oneOf":[{"$ref":"#/components/schemas/MatchResult"},{"$ref":"#/components/schemas/PartialMatchResult"},{"$ref":"#/components/schemas/NoMatchResult"},{"$ref":"#/components/schemas/MatchNotPossibleResult"}],"discriminator":{"propertyName":"type","mapping":{"match":"#/components/schemas/MatchResult","partial_match":"#/components/schemas/PartialMatchResult","no_match":"#/components/schemas/NoMatchResult","match_not_possible":"#/components/schemas/MatchNotPossibleResult"}}}}}]},"AccountHolderVerificationFailed":{"title":"Account Holder Verification Failed","description":"Webhook payload sent when an account holder verification request fails.","allOf":[{"$ref":"#/components/schemas/WebhookCommon"},{"type":"object","required":["type","event_version","account_holder_verification_id","failure_reason"],"properties":{"type":{"enum":["account_holder_verification_failed"]},"event_version":{"enum":[1]},"account_holder_verification_id":{"description":"The ID of the account holder verification request","type":"string","format":"uuid","example":"550e8400-e29b-41d4-a716-446655440000"},"failure_reason":{"description":"Reason for the verification failure","type":"string","example":"provider_error"}}}]}},"examples":{"Verification200Response-Match":{"summary":"Verification Match Response","value":{"verified":true,"account_holder_name":"Jack Johnson","match_score":89,"report":[{"verifiable":true,"currency":"GBP","provider_id":"ob-monzo","account_type":"CURRENT","account_holders":[{"name":"Jack Johnson","verified":true,"match_score":89}],"display_name":"1st Account","iban":"GB71MONZ04435141923452","swift_bic":"MONZGB21","account_number":"41921234","sort_code":"04-01-02"},{"verifiable":false,"failure_description":"Credit cards cannot be verified by this service.","failure_code":"CREDIT_CARD","provider_id":"ob-monzo","account_type":"CREDIT_CARD","display_name":"Gold card"}]}},"Verification200Response-NoMatch":{"summary":"Verification No-Match Response","value":{"verified":false,"account_holder_name":"Jack Johnson","match_score":30,"report":[{"verifiable":true,"currency":"GBP","provider_id":"ob-monzo","account_type":"CURRENT","account_holders":[{"name":"Jack Johnson","verified":false,"match_score":30}],"display_name":"1st Account","iban":"GB71MONZ04435141923452","swift_bic":"MONZGB21","account_number":"41921234","sort_code":"04-01-02"},{"verifiable":false,"failure_description":"Credit cards cannot be verified by this service.","failure_code":"CREDIT_CARD","provider_id":"ob-monzo","account_type":"CREDIT_CARD","display_name":"Gold card"}]}},"NoSuitableAccount400ErrorResponse":{"summary":"No suitable accounts","value":{"type":"https://docs.truelayer.com/docs/error-codes","title":"No suitable accounts to verify.","status":400,"detail":"No Current or Savings account's found to verify.","instance":"/v1/verification","traceId":"92236ad5-605a-4041-a541-435d3131562d"}},"ClientNameTooLong400ErrorResponse":{"summary":"Client name is invalid","value":{"errors":{"name":["The field Name must be a string with a maximum length of 200."]},"type":"https://docs.truelayer.com/docs/error-codes","title":"One or more validation errors occurred.","status":400,"instance":"/v1/verification","traceId":"92236ad5-605a-4041-a541-435d3131562d"}},"AuthorizationHeader401ErrorResponse":{"summary":"Authorization error","value":{"type":"https://docs.truelayer.com/docs/error-codes","title":"Unauthorized","status":401,"detail":"Access token missing or invalid.","instance":"/v1/verification","traceId":"92236ad5-605a-4041-a541-435d3131562d"}},"AuthorizationClient403ErrorResponse":{"summary":"Client not allowed error","value":{"type":"https://docs.truelayer.com/docs/error-codes","title":"Forbidden","status":403,"detail":"Client not allowed.","instance":"/v1/verification","traceId":"92236ad5-605a-4041-a541-435d3131562d"}},"TooManyRequest429ErrorResponse":{"summary":"Too many requests error","value":{"type":"https://docs.truelayer.com/docs/error-codes","title":"Too Many Requests","status":429,"detail":"Please try sending a request later.","instance":"/v1/verification","traceId":"92236ad5-605a-4041-a541-435d3131562d"}},"InternalServer500ErrorResponse":{"summary":"Internal server error","value":{"type":"https://docs.truelayer.com/docs/error-codes","title":"Internal Server Error","status":500,"detail":"Something went wrong. Please try again later.","instance":"/v1/verification","traceId":"92236ad5-605a-4041-a541-435d3131562d"}},"ServiceUnavaliable503ErrorResponse":{"summary":"Service unavailable error","value":{"type":"https://docs.truelayer.com/docs/error-codes","title":"Service Unavailable Error","status":503,"detail":"Something went wrong. Please try again later.","instance":"/v1/verification","traceId":"92236ad5-605a-4041-a541-435d3131562d"}},"GatewayTimeout504ErrorResponse":{"summary":"Gateway Timeout error","value":{"type":"https://docs.truelayer.com/docs/error-codes","title":"Gateway Timeout","status":504,"detail":"Something went wrong. Please try again later.","instance":"/v1/verification","traceId":"92236ad5-605a-4041-a541-435d3131562d"}},"InvalidIban400ErrorResponse":{"summary":"Invalid iban","value":{"type":"https://docs.truelayer.com/docs/error-codes","title":"Invalid iban.","status":400,"detail":"The provided iban is invalid.","instance":"/v3/verification/fr/verify-account-details","traceId":"92236ad5-605a-4041-a541-435d3131562d"}},"AuthorizationHeader401ErrorResponse-2":{"summary":"Authorization error","value":{"type":"https://docs.truelayer.com/docs/error-codes","title":"Unauthorized","status":401,"detail":"Access token missing or invalid.","instance":"/v3/verification/fr/verify-account-details","traceId":"92236ad5-605a-4041-a541-435d3131562d"}},"AuthorizationClient403ErrorResponse-2":{"summary":"AccessDenied","value":{"type":"https://docs.truelayer.com/docs/error-codes","title":"Forbidden","status":403,"instance":"/v3/verification/fr/verify-account-details","traceId":"92236ad5-605a-4041-a541-435d3131562d"}},"InternalServer500ErrorResponse-2":{"summary":"Internal server error","value":{"type":"https://docs.truelayer.com/docs/error-codes","title":"Internal Server Error","status":500,"detail":"Something went wrong. Please try again later.","instance":"/v3/verification/fr/verify-account-details","traceId":"92236ad5-605a-4041-a541-435d3131562d"}},"CreateAccountHolderVerificationRequest_UK":{"summary":"UK account","description":"Example request for verifying an account holder using a UK sort code and account number","value":{"account_holder_name":"John Doe","account_identifier":{"type":"sort_code_account_number","sort_code":"123456","account_number":"12345678"}}},"CreateAccountHolderVerificationRequest_EU":{"summary":"EU account","description":"Example request for verifying an account holder using an IBAN","value":{"account_holder_name":"Marie Dubois","account_identifier":{"type":"iban","iban":"FR1420041010050500013M02606"}}},"InvalidSortCode400ErrorResponse":{"summary":"Invalid sort code","value":{"type":"https://docs.truelayer.com/docs/error-codes","title":"Bad Request","status":400,"detail":"The sort code format is invalid.","instance":"/v3/account-holder-verifications/requests","traceId":"92236ad5-605a-4041-a541-435d3131562d"}},"InvalidIban400ErrorResponse-2":{"summary":"Invalid IBAN","value":{"type":"https://docs.truelayer.com/docs/error-codes","title":"Bad Request","status":400,"detail":"The IBAN format is invalid.","instance":"/v3/account-holder-verifications/requests","traceId":"92236ad5-605a-4041-a541-435d3131562d"}},"Authorization401ErrorResponse":{"summary":"Authorization error","value":{"type":"https://docs.truelayer.com/docs/error-codes","title":"Unauthorized","status":401,"detail":"Access token missing or invalid.","instance":"/v3/account-holder-verifications/requests","traceId":"92236ad5-605a-4041-a541-435d3131562d"}},"Authorization403ErrorResponse":{"summary":"AccessDenied","value":{"type":"https://docs.truelayer.com/docs/error-codes","title":"Forbidden","status":403,"instance":"/v3/account-holder-verifications/requests/550e8400-e29b-41d4-a716-446655440000","traceId":"92236ad5-605a-4041-a541-435d3131562d"}},"IdempotencyKeyConcurrencyConflict409ErrorResponse":{"summary":"Idempotency-Key Concurrency Conflict","value":{"type":"https://docs.truelayer.com/docs/error-codes#idempotency-key-concurrency-conflict","title":"Idempotency-Key Concurrency Conflict","status":409,"detail":"The Idempotency-Key value is being used for a concurrent request.","instance":"/v3/account-holder-verifications/requests","traceId":"92236ad5-605a-4041-a541-435d3131562d"}},"IdempotencyKeyReuse422ErrorResponse":{"summary":"Idempotency-Key Reuse","value":{"type":"https://docs.truelayer.com/docs/error-codes#idempotency-key-reuse","title":"Idempotency-Key Reuse","status":422,"detail":"The provided Idempotency-Key has been used before with different request data.","instance":"/v3/account-holder-verifications/requests","traceId":"92236ad5-605a-4041-a541-435d3131562d"}},"InternalServer500ErrorResponse-3":{"summary":"Internal server error","value":{"type":"https://docs.truelayer.com/docs/error-codes","title":"Internal Server Error","status":500,"detail":"Something went wrong. Please try again later.","instance":"/v3/account-holder-verifications/requests","traceId":"92236ad5-605a-4041-a541-435d3131562d"}},"VerifyAccountHolder_Match":{"summary":"Successful name match verification","description":"Example of a completed verification request with successful match","value":{"id":"550e8400-e29b-41d4-a716-446655440000","status":"completed","match_result":{"type":"match"}}},"VerifyAccountHolder_PartialMatch":{"summary":"Partial match verification result","description":"Example of a completed verification with partial match","value":{"id":"550e8400-e29b-41d4-a716-446655440001","status":"completed","match_result":{"type":"partial_match","account_holder_name":"Jean D."}}},"VerifyAccountHolder_NoMatch":{"summary":"No match verification result","description":"Example of a completed verification with no match","value":{"id":"550e8400-e29b-41d4-a716-446655440002","status":"completed","match_result":{"type":"no_match"}}},"VerifyAccountHolder_MatchNotPossible":{"summary":"Match not possible verification result","description":"Example of a completed verification with match not possible","value":{"id":"550e8400-e29b-41d4-a716-446655440002","status":"completed","match_result":{"type":"match_not_possible","failure_reason":"Bank unable to match"}}},"VerifyAccountHolder_Pending":{"summary":"Pending verification request","description":"Example of a verification request still in progress","value":{"id":"550e8400-e29b-41d4-a716-446655440003","status":"pending"}},"VerifyAccountHolder_Failed":{"summary":"Failed verification request","description":"Example of a verification request that failed due to service unavailability","value":{"id":"550e8400-e29b-41d4-a716-446655440004","status":"failed","failure_reason":"provider_error"}},"VerificationNotFound404ErrorResponse":{"summary":"Verification not found","value":{"type":"https://docs.truelayer.com/docs/error-codes","title":"Not Found","status":404,"detail":"Account holder verification request not found.","instance":"/v3/account-holder-verifications/requests","traceId":"92236ad5-605a-4041-a541-435d3131562d"}},"AccountHolderVerificationCompletedMatch":{"summary":"Match","description":"Example webhook payload sent when an account holder verification completes successfully with a match","value":{"type":"account_holder_verification_completed","event_version":1,"event_id":"b8d4dda0-ff2c-4d77-a6da-4615e4bad941","account_holder_verification_id":"550e8400-e29b-41d4-a716-446655440000","match_result":{"type":"match"}}},"AccountHolderVerificationCompletedPartialMatch":{"summary":"Partial Match","description":"Example webhook payload sent when an account holder verification completes with a partial match","value":{"type":"account_holder_verification_completed","event_version":1,"event_id":"d1f6ffb2-g14e-63f6-c938-6687g7d66152","account_holder_verification_id":"770g0622-g4bd-63g6-d938-6687g7d66152","match_result":{"type":"partial_match","account_holder_name":"J Smith"}}},"AccountHolderVerificationCompletedNoMatch":{"summary":"No Match","description":"Example webhook payload sent when an account holder verification completes with no match","value":{"type":"account_holder_verification_completed","event_version":1,"event_id":"e2g7ggc3-h25f-74g7-d049-7798h8e77263","account_holder_verification_id":"880h1733-h5ce-74h7-e049-7798h8e77263","match_result":{"type":"no_match"}}},"AccountHolderVerificationCompletedMatchNotPossible":{"summary":"Match Not Possible","description":"Example webhook payload sent when an account holder verification completes with match not possible","value":{"type":"account_holder_verification_completed","event_version":1,"event_id":"e2g7ggc3-h25f-74g7-d049-7798h8e77263","account_holder_verification_id":"880h1733-h5ce-74h7-e049-7798h8e77263","match_result":{"type":"match_not_possible","failure_reason":"Bank unable to match"}}},"AccountHolderVerificationFailed":{"summary":"Failed","description":"Example webhook payload sent when an account holder verification fails","value":{"type":"account_holder_verification_failed","event_version":1,"event_id":"c9e5eeb1-f03d-52e5-b827-5576f6c55041","account_holder_verification_id":"660f9511-f3ac-52f5-c827-5576f6c55041","failure_reason":"provider_error"}}},"parameters":{"IdempotencyKeyHeader":{"in":"header","name":"Idempotency-Key","description":"An idempotency key to allow safe retrying without the operation being performed multiple times. The value should be unique for each operation, e.g. a UUID, with the same key being sent on a retry of the same request.\n","schema":{"type":"string"},"required":true}}},"x-readme":{"proxy-enabled":false}}