# Customers ## Lookup a customer **get** `/v1/customers/{id}` Retrieves the details of an existing customer. Supply the unique customer ID that was returned from your 'create customer' request, and Straddle will return the corresponding customer information. ### Path Parameters - `id: string` ### Header Parameters - `"Correlation-Id": optional string` - `"Request-Id": optional string` - `"Straddle-Account-Id": optional string` ### Returns - `CustomerV1 = object { data, meta, response_type }` - `data: object { id, created_at, email, 11 more }` - `id: string` Unique identifier for the customer. - `created_at: string` 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" or "review" or "verified" or 2 more` - `"pending"` - `"review"` - `"verified"` - `"inactive"` - `"rejected"` - `type: "individual" or "business"` - `"individual"` - `"business"` - `updated_at: string` Timestamp of the most recent update to the customer record. - `address: optional 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: optional string` Secondary address line (e.g., apartment, suite, unit, or building). - `compliance_profile: optional object { dob, ssn } or object { ein, legal_business_name, representatives, website }` PII required to trigger Patriot Act compliant KYC verification. - `IndividualComplianceProfile = object { dob, ssn }` PII required to trigger Patriot Act compliant KYC verification. - `dob: string` Masked date of birth in ****-**-** format. - `ssn: string` Masked Social Security Number in the format ***-**-*\***. - `BusinessComplianceProfile = object { ein, legal_business_name, representatives, website }` 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: optional array of object { name, email, phone }` A list of people related to the company. Only valid where customer type is 'business'. - `name: string` - `email: optional string` - `phone: optional string` - `website: optional string` Official business website URL. Optional but recommended for enhanced KYB. - `config: optional object { processing_method, sandbox_outcome }` - `processing_method: optional "inline" or "background" or "skip"` - `"inline"` - `"background"` - `"skip"` - `sandbox_outcome: optional "standard" or "verified" or "rejected" or "review"` - `"standard"` - `"verified"` - `"rejected"` - `"review"` - `device: optional object { 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: optional string` Unique identifier for the customer in your database, used for cross-referencing between Straddle and your systems. - `metadata: optional map[string]` Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the customer in a structured format. - `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: string` Timestamp for this API request, useful for troubleshooting. - `response_type: "object" or "array" or "error" or "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 ```http curl https://sandbox.straddle.com/v1/customers/$ID \ -H "Authorization: Bearer $STRADDLE_API_KEY" ``` #### Response ```json { "data": { "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" } }, "meta": { "api_request_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "api_request_timestamp": "2019-12-27T18:11:19.117Z" }, "response_type": "object" } ``` ## Update a customer **put** `/v1/customers/{id}` Updates an existing customer's information. This endpoint allows you to modify the customer's contact details, PII, and metadata. ### Path Parameters - `id: string` ### Header Parameters - `"Correlation-Id": optional string` - `"Idempotency-Key": optional string` - `"Request-Id": optional string` - `"Straddle-Account-Id": optional string` ### Body Parameters - `device: DeviceUnmaskedV1` - `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. - `email: string` The customer's email address. - `name: string` The customer's full name or business name. - `phone: string` The customer's phone number in E.164 format. - `status: "pending" or "review" or "verified" or 2 more` - `"pending"` - `"review"` - `"verified"` - `"inactive"` - `"rejected"` - `address: optional 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: optional string` Secondary address line (e.g., apartment, suite, unit, or building). - `compliance_profile: optional object { dob, ssn } or object { ein, legal_business_name, representatives, website }` Individual PII data required to trigger Patriot Act compliant KYC verification. - `IndividualComplianceProfile = object { dob, ssn }` Individual PII data required to trigger Patriot Act compliant KYC verification. - `dob: string` Date of birth (YYYY-MM-DD). Required for Patriot Act-compliant KYC verification. - `ssn: string` Social Security Number (format XXX-XX-XXXX). Required for Patriot Act-compliant KYC verification. - `BusinessComplianceProfile = object { ein, legal_business_name, representatives, website }` Business registration data required to trigger Patriot Act compliant KYB verification. - `ein: string` Employer Identification Number (format XX-XXXXXXX). Required for Patriot Act-compliant KYB verification. - `legal_business_name: string` Official registered business name as listed with the IRS. This value will be matched against the 'legal_business name'. - `representatives: optional array of object { name, email, phone }` A list of people related to the company. Only valid where customer type is 'business'. - `name: string` - `email: optional string` - `phone: optional string` - `website: optional string` Official business website URL. Optional but recommended for enhanced KYB. - `external_id: optional string` Unique identifier for the customer in your database, used for cross-referencing between Straddle and your systems. - `metadata: optional map[string]` Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the customer in a structured format. ### Returns - `CustomerV1 = object { data, meta, response_type }` - `data: object { id, created_at, email, 11 more }` - `id: string` Unique identifier for the customer. - `created_at: string` 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" or "review" or "verified" or 2 more` - `"pending"` - `"review"` - `"verified"` - `"inactive"` - `"rejected"` - `type: "individual" or "business"` - `"individual"` - `"business"` - `updated_at: string` Timestamp of the most recent update to the customer record. - `address: optional 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: optional string` Secondary address line (e.g., apartment, suite, unit, or building). - `compliance_profile: optional object { dob, ssn } or object { ein, legal_business_name, representatives, website }` PII required to trigger Patriot Act compliant KYC verification. - `IndividualComplianceProfile = object { dob, ssn }` PII required to trigger Patriot Act compliant KYC verification. - `dob: string` Masked date of birth in ****-**-** format. - `ssn: string` Masked Social Security Number in the format ***-**-*\***. - `BusinessComplianceProfile = object { ein, legal_business_name, representatives, website }` 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: optional array of object { name, email, phone }` A list of people related to the company. Only valid where customer type is 'business'. - `name: string` - `email: optional string` - `phone: optional string` - `website: optional string` Official business website URL. Optional but recommended for enhanced KYB. - `config: optional object { processing_method, sandbox_outcome }` - `processing_method: optional "inline" or "background" or "skip"` - `"inline"` - `"background"` - `"skip"` - `sandbox_outcome: optional "standard" or "verified" or "rejected" or "review"` - `"standard"` - `"verified"` - `"rejected"` - `"review"` - `device: optional object { 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: optional string` Unique identifier for the customer in your database, used for cross-referencing between Straddle and your systems. - `metadata: optional map[string]` Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the customer in a structured format. - `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: string` Timestamp for this API request, useful for troubleshooting. - `response_type: "object" or "array" or "error" or "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 ```http curl https://sandbox.straddle.com/v1/customers/$ID \ -X PUT \ -H 'Content-Type: application/json' \ -H "Authorization: Bearer $STRADDLE_API_KEY" \ -d '{ "device": { "ip_address": "192.168.1.1" }, "email": "dev@stainless.com", "name": "name", "phone": "+46991022", "status": "pending" }' ``` #### Response ```json { "data": { "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" } }, "meta": { "api_request_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "api_request_timestamp": "2019-12-27T18:11:19.117Z" }, "response_type": "object" } ``` ## Delete a customer **delete** `/v1/customers/{id}` Permanently removes a customer record from Straddle. This action cannot be undone and should only be used to satisfy regulatory requirements or for privacy compliance. ### Path Parameters - `id: string` ### Header Parameters - `"Correlation-Id": optional string` - `"Idempotency-Key": optional string` - `"Request-Id": optional string` - `"Straddle-Account-Id": optional string` ### Returns - `CustomerV1 = object { data, meta, response_type }` - `data: object { id, created_at, email, 11 more }` - `id: string` Unique identifier for the customer. - `created_at: string` 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" or "review" or "verified" or 2 more` - `"pending"` - `"review"` - `"verified"` - `"inactive"` - `"rejected"` - `type: "individual" or "business"` - `"individual"` - `"business"` - `updated_at: string` Timestamp of the most recent update to the customer record. - `address: optional 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: optional string` Secondary address line (e.g., apartment, suite, unit, or building). - `compliance_profile: optional object { dob, ssn } or object { ein, legal_business_name, representatives, website }` PII required to trigger Patriot Act compliant KYC verification. - `IndividualComplianceProfile = object { dob, ssn }` PII required to trigger Patriot Act compliant KYC verification. - `dob: string` Masked date of birth in ****-**-** format. - `ssn: string` Masked Social Security Number in the format ***-**-*\***. - `BusinessComplianceProfile = object { ein, legal_business_name, representatives, website }` 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: optional array of object { name, email, phone }` A list of people related to the company. Only valid where customer type is 'business'. - `name: string` - `email: optional string` - `phone: optional string` - `website: optional string` Official business website URL. Optional but recommended for enhanced KYB. - `config: optional object { processing_method, sandbox_outcome }` - `processing_method: optional "inline" or "background" or "skip"` - `"inline"` - `"background"` - `"skip"` - `sandbox_outcome: optional "standard" or "verified" or "rejected" or "review"` - `"standard"` - `"verified"` - `"rejected"` - `"review"` - `device: optional object { 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: optional string` Unique identifier for the customer in your database, used for cross-referencing between Straddle and your systems. - `metadata: optional map[string]` Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the customer in a structured format. - `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: string` Timestamp for this API request, useful for troubleshooting. - `response_type: "object" or "array" or "error" or "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 ```http curl https://sandbox.straddle.com/v1/customers/$ID \ -X DELETE \ -H "Authorization: Bearer $STRADDLE_API_KEY" ``` #### Response ```json { "data": { "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" } }, "meta": { "api_request_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "api_request_timestamp": "2019-12-27T18:11:19.117Z" }, "response_type": "object" } ``` ## List customers **get** `/v1/customers` Lists or searches customers connected to your account. All supported query parameters are optional. If none are provided, the response will include all customers connected to your account. This endpoint supports advanced sorting and filtering options. ### Query Parameters - `created_from: optional string` Start date for filtering by `created_at` date. - `created_to: optional string` End date for filtering by `created_at` date. - `email: optional string` Filter customers by `email` address. - `external_id: optional string` Filter by your system's `external_id`. - `name: optional string` Filter customers by `name` (partial match). - `page_number: optional number` Page number for paginated results. Starts at 1. - `page_size: optional number` Number of results per page. Maximum: 1000. - `search_text: optional string` General search term to filter customers. - `sort_by: optional "name" or "created_at"` - `"name"` - `"created_at"` - `sort_order: optional "asc" or "desc"` - `"asc"` - `"desc"` - `status: optional array of "pending" or "review" or "verified" or 2 more` Filter customers by their current `status`. - `"pending"` - `"review"` - `"verified"` - `"inactive"` - `"rejected"` - `types: optional array of "individual" or "business"` Filter by customer type `individual` or `business`. - `"individual"` - `"business"` ### Header Parameters - `"Correlation-Id": optional string` - `"Request-Id": optional string` - `"Straddle-Account-Id": optional string` ### Returns - `CustomerSummaryPagedV1 = object { data, meta, response_type }` - `data: array of object { id, created_at, email, 6 more }` - `id: string` Unique identifier for the customer. - `created_at: string` 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" or "review" or "verified" or 2 more` - `"pending"` - `"review"` - `"verified"` - `"inactive"` - `"rejected"` - `type: "individual" or "business"` - `"individual"` - `"business"` - `updated_at: string` Timestamp of the most recent update to the customer record. - `external_id: optional string` Unique identifier for the customer in your database, used for cross-referencing between Straddle and your systems. - `meta: object { api_request_id, api_request_timestamp, max_page_size, 6 more }` - `api_request_id: string` Unique identifier for this API request, useful for troubleshooting. - `api_request_timestamp: string` Timestamp for this API request, useful for troubleshooting. - `max_page_size: number` Maximum allowed page size for this endpoint. - `page_number: number` Page number for paginated results. - `page_size: number` Number of items per page in this response. - `sort_by: string` The field that the results were sorted by. - `sort_order: "asc" or "desc"` - `"asc"` - `"desc"` - `total_items: number` - `total_pages: number` The number of pages available. - `response_type: "object" or "array" or "error" or "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 ```http curl https://sandbox.straddle.com/v1/customers \ -H "Authorization: Bearer $STRADDLE_API_KEY" ``` #### Response ```json { "data": [ { "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "created_at": "2019-12-27T18:11:19.117Z", "email": "dev@stainless.com", "name": "name", "phone": "+46991022", "status": "pending", "type": "individual", "updated_at": "2019-12-27T18:11:19.117Z", "external_id": "external_id" } ], "meta": { "api_request_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "api_request_timestamp": "2019-12-27T18:11:19.117Z", "max_page_size": 0, "page_number": 0, "page_size": 0, "sort_by": "sort_by", "sort_order": "asc", "total_items": 0, "total_pages": 0 }, "response_type": "object" } ``` ## Create a customer **post** `/v1/customers` Creates a new customer record and automatically initiates identity, fraud, and risk assessment scores. This endpoint allows you to create a customer profile and associate it with paykeys and payments. ### Header Parameters - `"Correlation-Id": optional string` - `"Idempotency-Key": optional string` - `"Request-Id": optional string` - `"Straddle-Account-Id": optional string` ### Body Parameters - `device: DeviceUnmaskedV1` - `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. - `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. Mobile number is preferred. - `type: "individual" or "business"` - `"individual"` - `"business"` - `address: optional CustomerAddressV1` An object containing the customer's address. **This is optional.** If used, 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: optional string` Secondary address line (e.g., apartment, suite, unit, or building). - `compliance_profile: optional object { dob, ssn } or object { ein, legal_business_name, representatives, website }` An object containing the customer's compliance profile. **This is optional.** If all required fields must be present for the appropriate customer type. - `IndividualComplianceProfile = object { dob, ssn }` Individual PII data required to trigger Patriot Act compliant KYC verification. - `dob: string` Date of birth (YYYY-MM-DD). Required for Patriot Act-compliant KYC verification. - `ssn: string` Social Security Number (format XXX-XX-XXXX). Required for Patriot Act-compliant KYC verification. - `BusinessComplianceProfile = object { ein, legal_business_name, representatives, website }` Business registration data required to trigger Patriot Act compliant KYB verification. - `ein: string` Employer Identification Number (format XX-XXXXXXX). Required for Patriot Act-compliant KYB verification. - `legal_business_name: string` Official registered business name as listed with the IRS. This value will be matched against the 'legal_business name'. - `representatives: optional array of object { name, email, phone }` A list of people related to the company. Only valid where customer type is 'business'. - `name: string` - `email: optional string` - `phone: optional string` - `website: optional string` Official business website URL. Optional but recommended for enhanced KYB. - `config: optional object { processing_method, sandbox_outcome }` - `processing_method: optional "inline" or "background" or "skip"` - `"inline"` - `"background"` - `"skip"` - `sandbox_outcome: optional "standard" or "verified" or "rejected" or "review"` - `"standard"` - `"verified"` - `"rejected"` - `"review"` - `external_id: optional string` Unique identifier for the customer in your database, used for cross-referencing between Straddle and your systems. - `metadata: optional map[string]` Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the customer in a structured format. ### Returns - `CustomerV1 = object { data, meta, response_type }` - `data: object { id, created_at, email, 11 more }` - `id: string` Unique identifier for the customer. - `created_at: string` 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" or "review" or "verified" or 2 more` - `"pending"` - `"review"` - `"verified"` - `"inactive"` - `"rejected"` - `type: "individual" or "business"` - `"individual"` - `"business"` - `updated_at: string` Timestamp of the most recent update to the customer record. - `address: optional 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: optional string` Secondary address line (e.g., apartment, suite, unit, or building). - `compliance_profile: optional object { dob, ssn } or object { ein, legal_business_name, representatives, website }` PII required to trigger Patriot Act compliant KYC verification. - `IndividualComplianceProfile = object { dob, ssn }` PII required to trigger Patriot Act compliant KYC verification. - `dob: string` Masked date of birth in ****-**-** format. - `ssn: string` Masked Social Security Number in the format ***-**-*\***. - `BusinessComplianceProfile = object { ein, legal_business_name, representatives, website }` 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: optional array of object { name, email, phone }` A list of people related to the company. Only valid where customer type is 'business'. - `name: string` - `email: optional string` - `phone: optional string` - `website: optional string` Official business website URL. Optional but recommended for enhanced KYB. - `config: optional object { processing_method, sandbox_outcome }` - `processing_method: optional "inline" or "background" or "skip"` - `"inline"` - `"background"` - `"skip"` - `sandbox_outcome: optional "standard" or "verified" or "rejected" or "review"` - `"standard"` - `"verified"` - `"rejected"` - `"review"` - `device: optional object { 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: optional string` Unique identifier for the customer in your database, used for cross-referencing between Straddle and your systems. - `metadata: optional map[string]` Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the customer in a structured format. - `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: string` Timestamp for this API request, useful for troubleshooting. - `response_type: "object" or "array" or "error" or "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 ```http curl https://sandbox.straddle.com/v1/customers \ -H 'Content-Type: application/json' \ -H "Authorization: Bearer $STRADDLE_API_KEY" \ -d '{ "device": { "ip_address": "192.168.1.1" }, "email": "ron.swanson@pawnee.com", "name": "Ron Swanson", "phone": "+12128675309", "type": "individual", "external_id": "customer_123" }' ``` #### Response ```json { "data": { "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" } }, "meta": { "api_request_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "api_request_timestamp": "2019-12-27T18:11:19.117Z" }, "response_type": "object" } ``` ## Unmask customer data **get** `/v1/customers/{id}/unmasked` Retrieves the unmasked details, including PII, of an existing customer. Supply the unique customer ID that was returned from your 'create customer' request, and Straddle will return the corresponding customer information. This endpoint needs to be enabled by Straddle and should only be used when absolutely necessary. ### Path Parameters - `id: string` ### Header Parameters - `"Correlation-Id": optional string` - `"Request-Id": optional string` - `"Straddle-Account-Id": optional string` ### Returns - `CustomerUnmaskedV1 = object { data, meta, response_type }` - `data: object { id, created_at, email, 11 more }` - `id: string` Unique identifier for the customer. - `created_at: string` 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" or "review" or "verified" or 2 more` - `"pending"` - `"review"` - `"verified"` - `"inactive"` - `"rejected"` - `type: "individual" or "business"` - `"individual"` - `"business"` - `updated_at: string` Timestamp of the most recent update to the customer record. - `address: optional 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: optional string` Secondary address line (e.g., apartment, suite, unit, or building). - `compliance_profile: optional object { dob, ssn } or object { ein, legal_business_name, representatives, website }` Individual PII data required to trigger Patriot Act compliant KYC verification. - `IndividualComplianceProfile = object { dob, ssn }` Individual PII data required to trigger Patriot Act compliant KYC verification. - `dob: string` Date of birth (YYYY-MM-DD). Required for Patriot Act-compliant KYC verification. - `ssn: string` Social Security Number (format XXX-XX-XXXX). Required for Patriot Act-compliant KYC verification. - `BusinessComplianceProfile = object { ein, legal_business_name, representatives, website }` Business registration data required to trigger Patriot Act compliant KYB verification. - `ein: string` Employer Identification Number (format XX-XXXXXXX). Required for Patriot Act-compliant KYB verification. - `legal_business_name: string` Official registered business name as listed with the IRS. This value will be matched against the 'legal_business name'. - `representatives: optional array of object { name, email, phone }` A list of people related to the company. Only valid where customer type is 'business'. - `name: string` - `email: optional string` - `phone: optional string` - `website: optional string` Official business website URL. Optional but recommended for enhanced KYB. - `config: optional object { processing_method, sandbox_outcome }` - `processing_method: optional "inline" or "background" or "skip"` - `"inline"` - `"background"` - `"skip"` - `sandbox_outcome: optional "standard" or "verified" or "rejected" or "review"` - `"standard"` - `"verified"` - `"rejected"` - `"review"` - `device: optional DeviceUnmaskedV1` - `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: optional string` Unique identifier for the customer in your database, used for cross-referencing between Straddle and your systems. - `metadata: optional map[string]` Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the customer in a structured format. - `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: string` Timestamp for this API request, useful for troubleshooting. - `response_type: "object" or "array" or "error" or "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 ```http curl https://sandbox.straddle.com/v1/customers/$ID/unmasked \ -H "Authorization: Bearer $STRADDLE_API_KEY" ``` #### Response ```json { "data": { "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": "1969-04-20", "ssn": "123-45-6789" }, "config": { "processing_method": "inline", "sandbox_outcome": "standard" }, "device": { "ip_address": "192.168.1.1" }, "external_id": "external_id", "metadata": { "foo": "string" } }, "meta": { "api_request_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "api_request_timestamp": "2019-12-27T18:11:19.117Z" }, "response_type": "object" } ``` ## Domain Types ### Customer Address V1 - `CustomerAddressV1 = object { address1, city, state, 2 more }` 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: optional string` Secondary address line (e.g., apartment, suite, unit, or building). ### Customer Summary Paged V1 - `CustomerSummaryPagedV1 = object { data, meta, response_type }` - `data: array of object { id, created_at, email, 6 more }` - `id: string` Unique identifier for the customer. - `created_at: string` 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" or "review" or "verified" or 2 more` - `"pending"` - `"review"` - `"verified"` - `"inactive"` - `"rejected"` - `type: "individual" or "business"` - `"individual"` - `"business"` - `updated_at: string` Timestamp of the most recent update to the customer record. - `external_id: optional string` Unique identifier for the customer in your database, used for cross-referencing between Straddle and your systems. - `meta: object { api_request_id, api_request_timestamp, max_page_size, 6 more }` - `api_request_id: string` Unique identifier for this API request, useful for troubleshooting. - `api_request_timestamp: string` Timestamp for this API request, useful for troubleshooting. - `max_page_size: number` Maximum allowed page size for this endpoint. - `page_number: number` Page number for paginated results. - `page_size: number` Number of items per page in this response. - `sort_by: string` The field that the results were sorted by. - `sort_order: "asc" or "desc"` - `"asc"` - `"desc"` - `total_items: number` - `total_pages: number` The number of pages available. - `response_type: "object" or "array" or "error" or "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"` ### Customer Unmasked V1 - `CustomerUnmaskedV1 = object { data, meta, response_type }` - `data: object { id, created_at, email, 11 more }` - `id: string` Unique identifier for the customer. - `created_at: string` 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" or "review" or "verified" or 2 more` - `"pending"` - `"review"` - `"verified"` - `"inactive"` - `"rejected"` - `type: "individual" or "business"` - `"individual"` - `"business"` - `updated_at: string` Timestamp of the most recent update to the customer record. - `address: optional 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: optional string` Secondary address line (e.g., apartment, suite, unit, or building). - `compliance_profile: optional object { dob, ssn } or object { ein, legal_business_name, representatives, website }` Individual PII data required to trigger Patriot Act compliant KYC verification. - `IndividualComplianceProfile = object { dob, ssn }` Individual PII data required to trigger Patriot Act compliant KYC verification. - `dob: string` Date of birth (YYYY-MM-DD). Required for Patriot Act-compliant KYC verification. - `ssn: string` Social Security Number (format XXX-XX-XXXX). Required for Patriot Act-compliant KYC verification. - `BusinessComplianceProfile = object { ein, legal_business_name, representatives, website }` Business registration data required to trigger Patriot Act compliant KYB verification. - `ein: string` Employer Identification Number (format XX-XXXXXXX). Required for Patriot Act-compliant KYB verification. - `legal_business_name: string` Official registered business name as listed with the IRS. This value will be matched against the 'legal_business name'. - `representatives: optional array of object { name, email, phone }` A list of people related to the company. Only valid where customer type is 'business'. - `name: string` - `email: optional string` - `phone: optional string` - `website: optional string` Official business website URL. Optional but recommended for enhanced KYB. - `config: optional object { processing_method, sandbox_outcome }` - `processing_method: optional "inline" or "background" or "skip"` - `"inline"` - `"background"` - `"skip"` - `sandbox_outcome: optional "standard" or "verified" or "rejected" or "review"` - `"standard"` - `"verified"` - `"rejected"` - `"review"` - `device: optional DeviceUnmaskedV1` - `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: optional string` Unique identifier for the customer in your database, used for cross-referencing between Straddle and your systems. - `metadata: optional map[string]` Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the customer in a structured format. - `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: string` Timestamp for this API request, useful for troubleshooting. - `response_type: "object" or "array" or "error" or "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"` ### Customer V1 - `CustomerV1 = object { data, meta, response_type }` - `data: object { id, created_at, email, 11 more }` - `id: string` Unique identifier for the customer. - `created_at: string` 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" or "review" or "verified" or 2 more` - `"pending"` - `"review"` - `"verified"` - `"inactive"` - `"rejected"` - `type: "individual" or "business"` - `"individual"` - `"business"` - `updated_at: string` Timestamp of the most recent update to the customer record. - `address: optional 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: optional string` Secondary address line (e.g., apartment, suite, unit, or building). - `compliance_profile: optional object { dob, ssn } or object { ein, legal_business_name, representatives, website }` PII required to trigger Patriot Act compliant KYC verification. - `IndividualComplianceProfile = object { dob, ssn }` PII required to trigger Patriot Act compliant KYC verification. - `dob: string` Masked date of birth in ****-**-** format. - `ssn: string` Masked Social Security Number in the format ***-**-*\***. - `BusinessComplianceProfile = object { ein, legal_business_name, representatives, website }` 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: optional array of object { name, email, phone }` A list of people related to the company. Only valid where customer type is 'business'. - `name: string` - `email: optional string` - `phone: optional string` - `website: optional string` Official business website URL. Optional but recommended for enhanced KYB. - `config: optional object { processing_method, sandbox_outcome }` - `processing_method: optional "inline" or "background" or "skip"` - `"inline"` - `"background"` - `"skip"` - `sandbox_outcome: optional "standard" or "verified" or "rejected" or "review"` - `"standard"` - `"verified"` - `"rejected"` - `"review"` - `device: optional object { 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: optional string` Unique identifier for the customer in your database, used for cross-referencing between Straddle and your systems. - `metadata: optional map[string]` Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the customer in a structured format. - `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: string` Timestamp for this API request, useful for troubleshooting. - `response_type: "object" or "array" or "error" or "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"` ### Device Unmasked V1 - `DeviceUnmaskedV1 = object { 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. # Review ## Review a customer's identity results **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. ### Path Parameters - `id: string` ### Header Parameters - `"Correlation-Id": optional string` - `"Request-Id": optional string` - `"Straddle-Account-Id": optional string` ### Returns - `CustomerReviewV1 = object { data, meta, response_type }` - `data: object { customer_details, identity_details }` - `customer_details: object { id, created_at, email, 11 more }` - `id: string` Unique identifier for the customer. - `created_at: string` 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" or "review" or "verified" or 2 more` - `"pending"` - `"review"` - `"verified"` - `"inactive"` - `"rejected"` - `type: "individual" or "business"` - `"individual"` - `"business"` - `updated_at: string` Timestamp of the most recent update to the customer record. - `address: optional 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: optional string` Secondary address line (e.g., apartment, suite, unit, or building). - `compliance_profile: optional object { dob, ssn } or object { ein, legal_business_name, representatives, website }` PII required to trigger Patriot Act compliant KYC verification. - `IndividualComplianceProfile = object { dob, ssn }` PII required to trigger Patriot Act compliant KYC verification. - `dob: string` Masked date of birth in ****-**-** format. - `ssn: string` Masked Social Security Number in the format ***-**-*\***. - `BusinessComplianceProfile = object { ein, legal_business_name, representatives, website }` 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: optional array of object { name, email, phone }` A list of people related to the company. Only valid where customer type is 'business'. - `name: string` - `email: optional string` - `phone: optional string` - `website: optional string` Official business website URL. Optional but recommended for enhanced KYB. - `config: optional object { processing_method, sandbox_outcome }` - `processing_method: optional "inline" or "background" or "skip"` - `"inline"` - `"background"` - `"skip"` - `sandbox_outcome: optional "standard" or "verified" or "rejected" or "review"` - `"standard"` - `"verified"` - `"rejected"` - `"review"` - `device: optional object { 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: optional string` Unique identifier for the customer in your database, used for cross-referencing between Straddle and your systems. - `metadata: optional map[string]` Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the customer in a structured format. - `identity_details: optional object { breakdown, created_at, decision, 7 more }` - `breakdown: object { address, business_evaluation, business_identification, 5 more }` Detailed breakdown of the customer verification results, including decisions, risk scores, correlation score, and more. - `address: optional IdentityVerificationBreakdownV1` - `codes: optional array of string` List of specific result codes from the fraud and risk screening. - `correlation: optional "low_confidence" or "potential_match" or "likely_match" or "high_confidence"` - `"low_confidence"` - `"potential_match"` - `"likely_match"` - `"high_confidence"` - `correlation_score: optional number` Represents the strength of the correlation between provided and known information. A higher score indicates a stronger correlation. - `decision: optional "accept" or "reject" or "review"` - `"accept"` - `"reject"` - `"review"` - `risk_score: optional number` Predicts the inherent risk associated with the customer for a given module. A higher score indicates a greater likelihood of fraud. - `business_evaluation: optional IdentityVerificationBreakdownV1` - `business_identification: optional IdentityVerificationBreakdownV1` - `business_validation: optional IdentityVerificationBreakdownV1` - `email: optional IdentityVerificationBreakdownV1` - `fraud: optional IdentityVerificationBreakdownV1` - `phone: optional IdentityVerificationBreakdownV1` - `synthetic: optional IdentityVerificationBreakdownV1` - `created_at: string` Timestamp of when the review was initiated. - `decision: "accept" or "reject" or "review"` - `"accept"` - `"reject"` - `"review"` - `review_id: string` Unique identifier for the review. - `updated_at: string` Timestamp of the most recent update to the review. - `kyc: optional object { validations, codes, decision }` - `validations: object { address, city, dob, 7 more }` Boolean values indicating the result of each validation in the KYC process. - `address: optional boolean` - `city: optional boolean` - `dob: optional boolean` - `email: optional boolean` - `first_name: optional boolean` - `last_name: optional boolean` - `phone: optional boolean` - `ssn: optional boolean` - `state: optional boolean` - `zip: optional boolean` - `codes: optional array of string` List of specific result codes from the KYC screening process. - `decision: optional "accept" or "reject" or "review"` - `"accept"` - `"reject"` - `"review"` - `messages: optional map[string]` Dictionary of all messages from the customer verification process. - `network_alerts: optional object { alerts, codes, decision }` - `alerts: optional array of string` Any alerts or flags raised during the consortium alert screening. - `codes: optional array of string` List of specific result codes from the consortium alert screening. - `decision: optional "accept" or "reject" or "review"` - `"accept"` - `"reject"` - `"review"` - `reputation: optional object { codes, decision, insights, risk_score }` - `codes: optional array of string` Specific codes related to the Straddle reputation screening results. - `decision: optional "accept" or "reject" or "review"` - `"accept"` - `"reject"` - `"review"` - `insights: optional object { accounts_active_count, accounts_closed_count, accounts_closed_dates, 30 more }` - `accounts_active_count: optional number` - `accounts_closed_count: optional number` - `accounts_closed_dates: optional array of string` - `accounts_count: optional number` - `accounts_fraud_count: optional number` - `accounts_fraud_labeled_dates: optional array of string` - `accounts_fraud_loss_total_amount: optional number` - `ach_fraud_transactions_count: optional number` - `ach_fraud_transactions_dates: optional array of string` - `ach_fraud_transactions_total_amount: optional number` - `ach_returned_transactions_count: optional number` - `ach_returned_transactions_dates: optional array of string` - `ach_returned_transactions_total_amount: optional number` - `applications_approved_count: optional number` - `applications_count: optional number` - `applications_dates: optional array of string` - `applications_declined_count: optional number` - `applications_fraud_count: optional number` - `card_disputed_transactions_count: optional number` - `card_disputed_transactions_dates: optional array of string` - `card_disputed_transactions_total_amount: optional number` - `card_fraud_transactions_count: optional number` - `card_fraud_transactions_dates: optional array of string` - `card_fraud_transactions_total_amount: optional number` - `card_stopped_transactions_count: optional number` - `card_stopped_transactions_dates: optional array of string` - `user_active_profile_count: optional number` - `user_address_count: optional number` - `user_closed_profile_count: optional number` - `user_dob_count: optional number` - `user_email_count: optional number` - `user_institution_count: optional number` - `user_mobile_count: optional number` - `risk_score: optional number` - `watch_list: optional object { codes, decision, matched, matches }` - `codes: optional array of string` Specific codes related to the Straddle watchlist screening results. - `decision: optional "accept" or "reject" or "review"` - `"accept"` - `"reject"` - `"review"` - `matched: optional array of string` Information about any matches found during screening. - `matches: optional array of object { correlation, list_name, match_fields, urls }` Information about any matches found during screening. - `correlation: "low_confidence" or "potential_match" or "likely_match" or "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 of string` Data fields that matched. - `urls: array of 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: string` Timestamp for this API request, useful for troubleshooting. - `response_type: "object" or "array" or "error" or "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 ```http curl https://sandbox.straddle.com/v1/customers/$ID/review \ -H "Authorization: Bearer $STRADDLE_API_KEY" ``` #### 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" } ``` ## Update a customer's verification status **patch** `/v1/customers/{id}/review` Updates the status of a customer's identity decision. This endpoint allows you to modify the outcome of a customer risk screening and is useful for correcting or updating the status of a customer's verification. Note that this endpoint is only available for customers with a current status of `review`. ### Path Parameters - `id: string` ### Header Parameters - `"Correlation-Id": optional string` - `"Idempotency-Key": optional string` - `"Request-Id": optional string` - `"Straddle-Account-Id": optional string` ### Body Parameters - `status: "verified" or "rejected"` The final status of the customer review. - `"verified"` - `"rejected"` ### Returns - `CustomerV1 = object { data, meta, response_type }` - `data: object { id, created_at, email, 11 more }` - `id: string` Unique identifier for the customer. - `created_at: string` 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" or "review" or "verified" or 2 more` - `"pending"` - `"review"` - `"verified"` - `"inactive"` - `"rejected"` - `type: "individual" or "business"` - `"individual"` - `"business"` - `updated_at: string` Timestamp of the most recent update to the customer record. - `address: optional 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: optional string` Secondary address line (e.g., apartment, suite, unit, or building). - `compliance_profile: optional object { dob, ssn } or object { ein, legal_business_name, representatives, website }` PII required to trigger Patriot Act compliant KYC verification. - `IndividualComplianceProfile = object { dob, ssn }` PII required to trigger Patriot Act compliant KYC verification. - `dob: string` Masked date of birth in ****-**-** format. - `ssn: string` Masked Social Security Number in the format ***-**-*\***. - `BusinessComplianceProfile = object { ein, legal_business_name, representatives, website }` 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: optional array of object { name, email, phone }` A list of people related to the company. Only valid where customer type is 'business'. - `name: string` - `email: optional string` - `phone: optional string` - `website: optional string` Official business website URL. Optional but recommended for enhanced KYB. - `config: optional object { processing_method, sandbox_outcome }` - `processing_method: optional "inline" or "background" or "skip"` - `"inline"` - `"background"` - `"skip"` - `sandbox_outcome: optional "standard" or "verified" or "rejected" or "review"` - `"standard"` - `"verified"` - `"rejected"` - `"review"` - `device: optional object { 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: optional string` Unique identifier for the customer in your database, used for cross-referencing between Straddle and your systems. - `metadata: optional map[string]` Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the customer in a structured format. - `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: string` Timestamp for this API request, useful for troubleshooting. - `response_type: "object" or "array" or "error" or "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 ```http curl https://sandbox.straddle.com/v1/customers/$ID/review \ -X PATCH \ -H 'Content-Type: application/json' \ -H "Authorization: Bearer $STRADDLE_API_KEY" \ -d '{ "status": "verified" }' ``` #### Response ```json { "data": { "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" } }, "meta": { "api_request_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "api_request_timestamp": "2019-12-27T18:11:19.117Z" }, "response_type": "object" } ``` ## Update a customer's identity decision **put** `/v1/customers/{id}/refresh_review` Updates the decision of a customer's identity validation. This endpoint allows you to modify the outcome of a customer decision and is useful for correcting or updating the status of a customer's verification. ### Path Parameters - `id: string` ### Header Parameters - `"Correlation-Id": optional string` - `"Idempotency-Key": optional string` - `"Request-Id": optional string` - `"Straddle-Account-Id": optional string` ### Returns - `CustomerV1 = object { data, meta, response_type }` - `data: object { id, created_at, email, 11 more }` - `id: string` Unique identifier for the customer. - `created_at: string` 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" or "review" or "verified" or 2 more` - `"pending"` - `"review"` - `"verified"` - `"inactive"` - `"rejected"` - `type: "individual" or "business"` - `"individual"` - `"business"` - `updated_at: string` Timestamp of the most recent update to the customer record. - `address: optional 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: optional string` Secondary address line (e.g., apartment, suite, unit, or building). - `compliance_profile: optional object { dob, ssn } or object { ein, legal_business_name, representatives, website }` PII required to trigger Patriot Act compliant KYC verification. - `IndividualComplianceProfile = object { dob, ssn }` PII required to trigger Patriot Act compliant KYC verification. - `dob: string` Masked date of birth in ****-**-** format. - `ssn: string` Masked Social Security Number in the format ***-**-*\***. - `BusinessComplianceProfile = object { ein, legal_business_name, representatives, website }` 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: optional array of object { name, email, phone }` A list of people related to the company. Only valid where customer type is 'business'. - `name: string` - `email: optional string` - `phone: optional string` - `website: optional string` Official business website URL. Optional but recommended for enhanced KYB. - `config: optional object { processing_method, sandbox_outcome }` - `processing_method: optional "inline" or "background" or "skip"` - `"inline"` - `"background"` - `"skip"` - `sandbox_outcome: optional "standard" or "verified" or "rejected" or "review"` - `"standard"` - `"verified"` - `"rejected"` - `"review"` - `device: optional object { 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: optional string` Unique identifier for the customer in your database, used for cross-referencing between Straddle and your systems. - `metadata: optional map[string]` Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the customer in a structured format. - `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: string` Timestamp for this API request, useful for troubleshooting. - `response_type: "object" or "array" or "error" or "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 ```http curl https://sandbox.straddle.com/v1/customers/$ID/refresh_review \ -X PUT \ -H "Authorization: Bearer $STRADDLE_API_KEY" ``` #### Response ```json { "data": { "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" } }, "meta": { "api_request_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "api_request_timestamp": "2019-12-27T18:11:19.117Z" }, "response_type": "object" } ``` ## Domain Types ### Customer Review V1 - `CustomerReviewV1 = object { data, meta, response_type }` - `data: object { customer_details, identity_details }` - `customer_details: object { id, created_at, email, 11 more }` - `id: string` Unique identifier for the customer. - `created_at: string` 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" or "review" or "verified" or 2 more` - `"pending"` - `"review"` - `"verified"` - `"inactive"` - `"rejected"` - `type: "individual" or "business"` - `"individual"` - `"business"` - `updated_at: string` Timestamp of the most recent update to the customer record. - `address: optional 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: optional string` Secondary address line (e.g., apartment, suite, unit, or building). - `compliance_profile: optional object { dob, ssn } or object { ein, legal_business_name, representatives, website }` PII required to trigger Patriot Act compliant KYC verification. - `IndividualComplianceProfile = object { dob, ssn }` PII required to trigger Patriot Act compliant KYC verification. - `dob: string` Masked date of birth in ****-**-** format. - `ssn: string` Masked Social Security Number in the format ***-**-*\***. - `BusinessComplianceProfile = object { ein, legal_business_name, representatives, website }` 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: optional array of object { name, email, phone }` A list of people related to the company. Only valid where customer type is 'business'. - `name: string` - `email: optional string` - `phone: optional string` - `website: optional string` Official business website URL. Optional but recommended for enhanced KYB. - `config: optional object { processing_method, sandbox_outcome }` - `processing_method: optional "inline" or "background" or "skip"` - `"inline"` - `"background"` - `"skip"` - `sandbox_outcome: optional "standard" or "verified" or "rejected" or "review"` - `"standard"` - `"verified"` - `"rejected"` - `"review"` - `device: optional object { 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: optional string` Unique identifier for the customer in your database, used for cross-referencing between Straddle and your systems. - `metadata: optional map[string]` Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the customer in a structured format. - `identity_details: optional object { breakdown, created_at, decision, 7 more }` - `breakdown: object { address, business_evaluation, business_identification, 5 more }` Detailed breakdown of the customer verification results, including decisions, risk scores, correlation score, and more. - `address: optional IdentityVerificationBreakdownV1` - `codes: optional array of string` List of specific result codes from the fraud and risk screening. - `correlation: optional "low_confidence" or "potential_match" or "likely_match" or "high_confidence"` - `"low_confidence"` - `"potential_match"` - `"likely_match"` - `"high_confidence"` - `correlation_score: optional number` Represents the strength of the correlation between provided and known information. A higher score indicates a stronger correlation. - `decision: optional "accept" or "reject" or "review"` - `"accept"` - `"reject"` - `"review"` - `risk_score: optional number` Predicts the inherent risk associated with the customer for a given module. A higher score indicates a greater likelihood of fraud. - `business_evaluation: optional IdentityVerificationBreakdownV1` - `business_identification: optional IdentityVerificationBreakdownV1` - `business_validation: optional IdentityVerificationBreakdownV1` - `email: optional IdentityVerificationBreakdownV1` - `fraud: optional IdentityVerificationBreakdownV1` - `phone: optional IdentityVerificationBreakdownV1` - `synthetic: optional IdentityVerificationBreakdownV1` - `created_at: string` Timestamp of when the review was initiated. - `decision: "accept" or "reject" or "review"` - `"accept"` - `"reject"` - `"review"` - `review_id: string` Unique identifier for the review. - `updated_at: string` Timestamp of the most recent update to the review. - `kyc: optional object { validations, codes, decision }` - `validations: object { address, city, dob, 7 more }` Boolean values indicating the result of each validation in the KYC process. - `address: optional boolean` - `city: optional boolean` - `dob: optional boolean` - `email: optional boolean` - `first_name: optional boolean` - `last_name: optional boolean` - `phone: optional boolean` - `ssn: optional boolean` - `state: optional boolean` - `zip: optional boolean` - `codes: optional array of string` List of specific result codes from the KYC screening process. - `decision: optional "accept" or "reject" or "review"` - `"accept"` - `"reject"` - `"review"` - `messages: optional map[string]` Dictionary of all messages from the customer verification process. - `network_alerts: optional object { alerts, codes, decision }` - `alerts: optional array of string` Any alerts or flags raised during the consortium alert screening. - `codes: optional array of string` List of specific result codes from the consortium alert screening. - `decision: optional "accept" or "reject" or "review"` - `"accept"` - `"reject"` - `"review"` - `reputation: optional object { codes, decision, insights, risk_score }` - `codes: optional array of string` Specific codes related to the Straddle reputation screening results. - `decision: optional "accept" or "reject" or "review"` - `"accept"` - `"reject"` - `"review"` - `insights: optional object { accounts_active_count, accounts_closed_count, accounts_closed_dates, 30 more }` - `accounts_active_count: optional number` - `accounts_closed_count: optional number` - `accounts_closed_dates: optional array of string` - `accounts_count: optional number` - `accounts_fraud_count: optional number` - `accounts_fraud_labeled_dates: optional array of string` - `accounts_fraud_loss_total_amount: optional number` - `ach_fraud_transactions_count: optional number` - `ach_fraud_transactions_dates: optional array of string` - `ach_fraud_transactions_total_amount: optional number` - `ach_returned_transactions_count: optional number` - `ach_returned_transactions_dates: optional array of string` - `ach_returned_transactions_total_amount: optional number` - `applications_approved_count: optional number` - `applications_count: optional number` - `applications_dates: optional array of string` - `applications_declined_count: optional number` - `applications_fraud_count: optional number` - `card_disputed_transactions_count: optional number` - `card_disputed_transactions_dates: optional array of string` - `card_disputed_transactions_total_amount: optional number` - `card_fraud_transactions_count: optional number` - `card_fraud_transactions_dates: optional array of string` - `card_fraud_transactions_total_amount: optional number` - `card_stopped_transactions_count: optional number` - `card_stopped_transactions_dates: optional array of string` - `user_active_profile_count: optional number` - `user_address_count: optional number` - `user_closed_profile_count: optional number` - `user_dob_count: optional number` - `user_email_count: optional number` - `user_institution_count: optional number` - `user_mobile_count: optional number` - `risk_score: optional number` - `watch_list: optional object { codes, decision, matched, matches }` - `codes: optional array of string` Specific codes related to the Straddle watchlist screening results. - `decision: optional "accept" or "reject" or "review"` - `"accept"` - `"reject"` - `"review"` - `matched: optional array of string` Information about any matches found during screening. - `matches: optional array of object { correlation, list_name, match_fields, urls }` Information about any matches found during screening. - `correlation: "low_confidence" or "potential_match" or "likely_match" or "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 of string` Data fields that matched. - `urls: array of 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: string` Timestamp for this API request, useful for troubleshooting. - `response_type: "object" or "array" or "error" or "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"` ### Identity Verification Breakdown V1 - `IdentityVerificationBreakdownV1 = object { codes, correlation, correlation_score, 2 more }` - `codes: optional array of string` List of specific result codes from the fraud and risk screening. - `correlation: optional "low_confidence" or "potential_match" or "likely_match" or "high_confidence"` - `"low_confidence"` - `"potential_match"` - `"likely_match"` - `"high_confidence"` - `correlation_score: optional number` Represents the strength of the correlation between provided and known information. A higher score indicates a stronger correlation. - `decision: optional "accept" or "reject" or "review"` - `"accept"` - `"reject"` - `"review"` - `risk_score: optional number` Predicts the inherent risk associated with the customer for a given module. A higher score indicates a greater likelihood of fraud.