## Review a customer's identity results `customers.review.get(id, **kwargs) -> CustomerReviewV1` **get** `/v1/customers/{id}/review` Retrieves and analyzes the results of a customer's identity validation and fraud score. This endpoint provides a comprehensive breakdown of the validation outcome, including: - Risk and correlation scores - Reason codes for the decision - Results of watchlist screening - Any network alerts detected Use this endpoint to gain insights into the verification process and make informed decisions about customer onboarding. ### Parameters - `id: String` - `correlation_id: String` - `request_id: String` - `straddle_account_id: String` ### Returns - `class CustomerReviewV1` - `data: { customer_details, identity_details}` - `customer_details: { id, created_at, email, 11 more}` - `id: String` Unique identifier for the customer. - `created_at: Time` Timestamp of when the customer record was created. - `email: String` The customer's email address. - `name: String` Full name of the individual or business name. - `phone: String` The customer's phone number in E.164 format. - `status: :pending | :review | :verified | 2 more` - `:pending` - `:review` - `:verified` - `:inactive` - `:rejected` - `type: :individual | :business` - `:individual` - `:business` - `updated_at: Time` Timestamp of the most recent update to the customer record. - `address: CustomerAddressV1` An object containing the customer's address. This is optional, but if provided, all required fields must be present. - `address1: String` Primary address line (e.g., street, PO Box). - `city: String` City, district, suburb, town, or village. - `state: String` Two-letter state code. - `zip: String` Zip or postal code. - `address2: String` Secondary address line (e.g., apartment, suite, unit, or building). - `compliance_profile: { dob, ssn} | { ein, legal_business_name, representatives, website}` PII required to trigger Patriot Act compliant KYC verification. - `class IndividualComplianceProfile` PII required to trigger Patriot Act compliant KYC verification. - `dob: Date` Masked date of birth in ****-**-** format. - `ssn: String` Masked Social Security Number in the format ***-**-*\***. - `class BusinessComplianceProfile` Business registration data required to trigger Patriot Act compliant KYB verification. - `ein: String` Masked Employer Identification Number in the format **-**\***** - `legal_business_name: String` The official registered name of the business. This name should be correlated with the `ein` value. - `representatives: Array[{ name, email, phone}]` A list of people related to the company. Only valid where customer type is 'business'. - `name: String` - `email: String` - `phone: String` - `website: String` Official business website URL. Optional but recommended for enhanced KYB. - `config: { processing_method, sandbox_outcome}` - `processing_method: :inline | :background | :skip` - `:inline` - `:background` - `:skip` - `sandbox_outcome: :standard | :verified | :rejected | :review` - `:standard` - `:verified` - `:rejected` - `:review` - `device: { ip_address}` - `ip_address: String` The customer's IP address at the time of profile creation. Use `0.0.0.0` to represent an offline customer registration. - `external_id: String` Unique identifier for the customer in your database, used for cross-referencing between Straddle and your systems. - `metadata: Hash[Symbol, String]` Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the customer in a structured format. - `identity_details: { breakdown, created_at, decision, 7 more}` - `breakdown: { address, business_evaluation, business_identification, 5 more}` Detailed breakdown of the customer verification results, including decisions, risk scores, correlation score, and more. - `address: IdentityVerificationBreakdownV1` - `codes: Array[String]` List of specific result codes from the fraud and risk screening. - `correlation: :low_confidence | :potential_match | :likely_match | :high_confidence` - `:low_confidence` - `:potential_match` - `:likely_match` - `:high_confidence` - `correlation_score: Float` Represents the strength of the correlation between provided and known information. A higher score indicates a stronger correlation. - `decision: :accept | :reject | :review` - `:accept` - `:reject` - `:review` - `risk_score: Float` Predicts the inherent risk associated with the customer for a given module. A higher score indicates a greater likelihood of fraud. - `business_evaluation: IdentityVerificationBreakdownV1` - `business_identification: IdentityVerificationBreakdownV1` - `business_validation: IdentityVerificationBreakdownV1` - `email: IdentityVerificationBreakdownV1` - `fraud: IdentityVerificationBreakdownV1` - `phone: IdentityVerificationBreakdownV1` - `synthetic: IdentityVerificationBreakdownV1` - `created_at: Time` Timestamp of when the review was initiated. - `decision: :accept | :reject | :review` - `:accept` - `:reject` - `:review` - `review_id: String` Unique identifier for the review. - `updated_at: Time` Timestamp of the most recent update to the review. - `kyc: { validations, codes, decision}` - `validations: { address, city, dob, 7 more}` Boolean values indicating the result of each validation in the KYC process. - `address: bool` - `city: bool` - `dob: bool` - `email: bool` - `first_name: bool` - `last_name: bool` - `phone: bool` - `ssn: bool` - `state: bool` - `zip: bool` - `codes: Array[String]` List of specific result codes from the KYC screening process. - `decision: :accept | :reject | :review` - `:accept` - `:reject` - `:review` - `messages: Hash[Symbol, String]` Dictionary of all messages from the customer verification process. - `network_alerts: { alerts, codes, decision}` - `alerts: Array[String]` Any alerts or flags raised during the consortium alert screening. - `codes: Array[String]` List of specific result codes from the consortium alert screening. - `decision: :accept | :reject | :review` - `:accept` - `:reject` - `:review` - `reputation: { codes, decision, insights, risk_score}` - `codes: Array[String]` Specific codes related to the Straddle reputation screening results. - `decision: :accept | :reject | :review` - `:accept` - `:reject` - `:review` - `insights: { accounts_active_count, accounts_closed_count, accounts_closed_dates, 30 more}` - `accounts_active_count: Integer` - `accounts_closed_count: Integer` - `accounts_closed_dates: Array[Date]` - `accounts_count: Integer` - `accounts_fraud_count: Integer` - `accounts_fraud_labeled_dates: Array[Date]` - `accounts_fraud_loss_total_amount: Float` - `ach_fraud_transactions_count: Integer` - `ach_fraud_transactions_dates: Array[Date]` - `ach_fraud_transactions_total_amount: Float` - `ach_returned_transactions_count: Integer` - `ach_returned_transactions_dates: Array[Date]` - `ach_returned_transactions_total_amount: Float` - `applications_approved_count: Integer` - `applications_count: Integer` - `applications_dates: Array[Date]` - `applications_declined_count: Integer` - `applications_fraud_count: Integer` - `card_disputed_transactions_count: Integer` - `card_disputed_transactions_dates: Array[Date]` - `card_disputed_transactions_total_amount: Float` - `card_fraud_transactions_count: Integer` - `card_fraud_transactions_dates: Array[Date]` - `card_fraud_transactions_total_amount: Float` - `card_stopped_transactions_count: Integer` - `card_stopped_transactions_dates: Array[Date]` - `user_active_profile_count: Integer` - `user_address_count: Integer` - `user_closed_profile_count: Integer` - `user_dob_count: Integer` - `user_email_count: Integer` - `user_institution_count: Integer` - `user_mobile_count: Integer` - `risk_score: Float` - `watch_list: { codes, decision, matched, matches}` - `codes: Array[String]` Specific codes related to the Straddle watchlist screening results. - `decision: :accept | :reject | :review` - `:accept` - `:reject` - `:review` - `matched: Array[String]` Information about any matches found during screening. - `matches: Array[{ correlation, list_name, match_fields, urls}]` Information about any matches found during screening. - `correlation: :low_confidence | :potential_match | :likely_match | :high_confidence` - `:low_confidence` - `:potential_match` - `:likely_match` - `:high_confidence` - `list_name: String` The name of the list the match was found. - `match_fields: Array[String]` Data fields that matched. - `urls: Array[String]` Relevent Urls to review. - `meta: ResponseMetadata` Metadata about the API request, including an identifier and timestamp. - `api_request_id: String` Unique identifier for this API request, useful for troubleshooting. - `api_request_timestamp: Time` Timestamp for this API request, useful for troubleshooting. - `response_type: :object | :array | :error | :none` Indicates the structure of the returned content. - "object" means the `data` field contains a single JSON object. - "array" means the `data` field contains an array of objects. - "error" means the `data` field contains an error object with details of the issue. - "none" means no data is returned. - `:object` - `:array` - `:error` - `:none` ### Example ```ruby require "straddle" straddle = Straddle::Client.new( api_key: "My API Key", environment: "production" # defaults to "sandbox" ) customer_review_v1 = straddle.customers.review.get("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") puts(customer_review_v1) ``` #### Response ```json { "data": { "customer_details": { "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "created_at": "2019-12-27T18:11:19.117Z", "email": "ron.swanson@pawnee.com", "name": "Ron Swanson", "phone": "+12128675309", "status": "pending", "type": "individual", "updated_at": "2019-12-27T18:11:19.117Z", "address": { "address1": "123 Main St", "city": "Anytown", "state": "CA", "zip": "12345", "address2": "Apt 1" }, "compliance_profile": { "dob": "2019-12-27", "ssn": "***-**-****" }, "config": { "processing_method": "inline", "sandbox_outcome": "standard" }, "device": { "ip_address": "192.168.1.1" }, "external_id": "external_id", "metadata": { "foo": "string" } }, "identity_details": { "breakdown": { "address": { "codes": [ "string" ], "correlation": "low_confidence", "correlation_score": 0, "decision": "accept", "risk_score": 0 }, "business_evaluation": { "codes": [ "string" ], "correlation": "low_confidence", "correlation_score": 0, "decision": "accept", "risk_score": 0 }, "business_identification": { "codes": [ "string" ], "correlation": "low_confidence", "correlation_score": 0, "decision": "accept", "risk_score": 0 }, "business_validation": { "codes": [ "string" ], "correlation": "low_confidence", "correlation_score": 0, "decision": "accept", "risk_score": 0 }, "email": { "codes": [ "string" ], "correlation": "low_confidence", "correlation_score": 0, "decision": "accept", "risk_score": 0 }, "fraud": { "codes": [ "string" ], "correlation": "low_confidence", "correlation_score": 0, "decision": "accept", "risk_score": 0 }, "phone": { "codes": [ "string" ], "correlation": "low_confidence", "correlation_score": 0, "decision": "accept", "risk_score": 0 }, "synthetic": { "codes": [ "string" ], "correlation": "low_confidence", "correlation_score": 0, "decision": "accept", "risk_score": 0 } }, "created_at": "2019-12-27T18:11:19.117Z", "decision": "accept", "review_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "updated_at": "2019-12-27T18:11:19.117Z", "kyc": { "validations": { "address": true, "city": true, "dob": true, "email": true, "first_name": true, "last_name": true, "phone": true, "ssn": true, "state": true, "zip": true }, "codes": [ "string" ], "decision": "accept" }, "messages": { "foo": "string" }, "network_alerts": { "alerts": [ "string" ], "codes": [ "string" ], "decision": "accept" }, "reputation": { "codes": [ "string" ], "decision": "accept", "insights": { "accounts_active_count": 0, "accounts_closed_count": 0, "accounts_closed_dates": [ "2019-12-27" ], "accounts_count": 0, "accounts_fraud_count": 0, "accounts_fraud_labeled_dates": [ "2019-12-27" ], "accounts_fraud_loss_total_amount": 0, "ach_fraud_transactions_count": 0, "ach_fraud_transactions_dates": [ "2019-12-27" ], "ach_fraud_transactions_total_amount": 0, "ach_returned_transactions_count": 0, "ach_returned_transactions_dates": [ "2019-12-27" ], "ach_returned_transactions_total_amount": 0, "applications_approved_count": 0, "applications_count": 0, "applications_dates": [ "2019-12-27" ], "applications_declined_count": 0, "applications_fraud_count": 0, "card_disputed_transactions_count": 0, "card_disputed_transactions_dates": [ "2019-12-27" ], "card_disputed_transactions_total_amount": 0, "card_fraud_transactions_count": 0, "card_fraud_transactions_dates": [ "2019-12-27" ], "card_fraud_transactions_total_amount": 0, "card_stopped_transactions_count": 0, "card_stopped_transactions_dates": [ "2019-12-27" ], "user_active_profile_count": 0, "user_address_count": 0, "user_closed_profile_count": 0, "user_dob_count": 0, "user_email_count": 0, "user_institution_count": 0, "user_mobile_count": 0 }, "risk_score": 0 }, "watch_list": { "codes": [ "string" ], "decision": "accept", "matched": [ "string" ], "matches": [ { "correlation": "low_confidence", "list_name": "list_name", "match_fields": [ "string" ], "urls": [ "string" ] } ] } } }, "meta": { "api_request_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "api_request_timestamp": "2019-12-27T18:11:19.117Z" }, "response_type": "object" } ```