Skip to content
Get started

Customers

Customers represent the end users who send or receive payments through your integration. Each customer undergoes automatic identity verification and fraud screening upon creation. Use customers to track payment history, manage bank account connections, and maintain a secure record of all transactions associated with a user. Customers can be either individuals or businesses with appropriate compliance checks for each type.

Lookup a customer
customers.get(strid, CustomerGetParams**kwargs) -> CustomerV1
GET/v1/customers/{id}
Update a customer
customers.update(strid, CustomerUpdateParams**kwargs) -> CustomerV1
PUT/v1/customers/{id}
Delete a customer
customers.delete(strid, CustomerDeleteParams**kwargs) -> CustomerV1
DELETE/v1/customers/{id}
List customers
customers.list(CustomerListParams**kwargs) -> SyncPageNumberSchema[Data]
GET/v1/customers
Create a customer
customers.create(CustomerCreateParams**kwargs) -> CustomerV1
POST/v1/customers
Unmask customer data
customers.unmasked(strid, CustomerUnmaskedParams**kwargs) -> CustomerUnmaskedV1
GET/v1/customers/{id}/unmasked
ModelsExpand Collapse
class CustomerAddressV1:

An object containing the customer's address. This is optional, but if provided, all required fields must be present.

address1: str

Primary address line (e.g., street, PO Box).

maxLength100
city: str

City, district, suburb, town, or village.

maxLength100
state: str

Two-letter state code.

zip: str

Zip or postal code.

address2: Optional[str]

Secondary address line (e.g., apartment, suite, unit, or building).

maxLength100
class CustomerSummaryPagedV1:
data: List[Data]
id: str

Unique identifier for the customer.

formatuuid
created_at: datetime

Timestamp of when the customer record was created.

formatdate-time
email: str

The customer's email address.

formatemail
name: str

Full name of the individual or business name.

phone: str

The customer's phone number in E.164 format.

status: Literal["pending", "review", "verified", 2 more]
One of the following:
"pending"
"review"
"verified"
"inactive"
"rejected"
type: Literal["individual", "business"]
One of the following:
"individual"
"business"
updated_at: datetime

Timestamp of the most recent update to the customer record.

formatdate-time
external_id: Optional[str]

Unique identifier for the customer in your database, used for cross-referencing between Straddle and your systems.

meta: Meta
api_request_id: str

Unique identifier for this API request, useful for troubleshooting.

formatuuid
api_request_timestamp: datetime

Timestamp for this API request, useful for troubleshooting.

formatdate-time
max_page_size: int

Maximum allowed page size for this endpoint.

formatint32
page_number: int

Page number for paginated results.

formatint32
page_size: int

Number of items per page in this response.

formatint32
sort_by: str

The field that the results were sorted by.

sort_order: Literal["asc", "desc"]
One of the following:
"asc"
"desc"
total_items: int
total_pages: int

The number of pages available.

formatint32
response_type: Literal["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.
One of the following:
"object"
"array"
"error"
"none"
class CustomerUnmaskedV1:
data: Data
id: str

Unique identifier for the customer.

formatuuid
created_at: datetime

Timestamp of when the customer record was created.

formatdate-time
email: str

The customer's email address.

formatemail
name: str

Full name of the individual or business name.

phone: str

The customer's phone number in E.164 format.

status: Literal["pending", "review", "verified", 2 more]
One of the following:
"pending"
"review"
"verified"
"inactive"
"rejected"
type: Literal["individual", "business"]
One of the following:
"individual"
"business"
updated_at: datetime

Timestamp of the most recent update to the customer record.

formatdate-time
address: Optional[CustomerAddressV1]

An object containing the customer's address. This is optional, but if provided, all required fields must be present.

address1: str

Primary address line (e.g., street, PO Box).

maxLength100
city: str

City, district, suburb, town, or village.

maxLength100
state: str

Two-letter state code.

zip: str

Zip or postal code.

address2: Optional[str]

Secondary address line (e.g., apartment, suite, unit, or building).

maxLength100
compliance_profile: Optional[DataComplianceProfile]

Individual PII data required to trigger Patriot Act compliant KYC verification.

One of the following:
class DataComplianceProfileIndividualComplianceProfile:

Individual PII data required to trigger Patriot Act compliant KYC verification.

dob: Optional[date]

Date of birth (YYYY-MM-DD). Required for Patriot Act-compliant KYC verification.

formatdate
ssn: Optional[str]

Social Security Number (format XXX-XX-XXXX). Required for Patriot Act-compliant KYC verification.

class DataComplianceProfileBusinessComplianceProfile:

Business registration data required to trigger Patriot Act compliant KYB verification.

ein: Optional[str]

Employer Identification Number (format XX-XXXXXXX). Required for Patriot Act-compliant KYB verification.

Official registered business name as listed with the IRS. This value will be matched against the 'legal_business name'.

representatives: Optional[List[DataComplianceProfileBusinessComplianceProfileRepresentative]]

A list of people related to the company. Only valid where customer type is 'business'.

name: str
email: Optional[str]
phone: Optional[str]
website: Optional[str]

Official business website URL. Optional but recommended for enhanced KYB.

formaturi
config: Optional[DataConfig]
processing_method: Optional[Literal["inline", "background", "skip"]]
One of the following:
"inline"
"background"
"skip"
sandbox_outcome: Optional[Literal["standard", "verified", "rejected", "review"]]
One of the following:
"standard"
"verified"
"rejected"
"review"
device: Optional[DeviceUnmaskedV1]
ip_address: str

The customer's IP address at the time of profile creation. Use 0.0.0.0 to represent an offline customer registration.

minLength1
formatipv4
external_id: Optional[str]

Unique identifier for the customer in your database, used for cross-referencing between Straddle and your systems.

metadata: Optional[Dict[str, str]]

Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the customer in a structured format.

Metadata about the API request, including an identifier and timestamp.

api_request_id: str

Unique identifier for this API request, useful for troubleshooting.

formatuuid
api_request_timestamp: datetime

Timestamp for this API request, useful for troubleshooting.

formatdate-time
response_type: Literal["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.
One of the following:
"object"
"array"
"error"
"none"
class CustomerV1:
data: Data
id: str

Unique identifier for the customer.

formatuuid
created_at: datetime

Timestamp of when the customer record was created.

formatdate-time
email: str

The customer's email address.

formatemail
name: str

Full name of the individual or business name.

phone: str

The customer's phone number in E.164 format.

status: Literal["pending", "review", "verified", 2 more]
One of the following:
"pending"
"review"
"verified"
"inactive"
"rejected"
type: Literal["individual", "business"]
One of the following:
"individual"
"business"
updated_at: datetime

Timestamp of the most recent update to the customer record.

formatdate-time
address: Optional[CustomerAddressV1]

An object containing the customer's address. This is optional, but if provided, all required fields must be present.

address1: str

Primary address line (e.g., street, PO Box).

maxLength100
city: str

City, district, suburb, town, or village.

maxLength100
state: str

Two-letter state code.

zip: str

Zip or postal code.

address2: Optional[str]

Secondary address line (e.g., apartment, suite, unit, or building).

maxLength100
compliance_profile: Optional[DataComplianceProfile]

PII required to trigger Patriot Act compliant KYC verification.

One of the following:
class DataComplianceProfileIndividualComplianceProfile:

PII required to trigger Patriot Act compliant KYC verification.

dob: Optional[date]

Masked date of birth in ****-- format.

formatdate
ssn: Optional[str]

Masked Social Security Number in the format --***.

class DataComplianceProfileBusinessComplianceProfile:

Business registration data required to trigger Patriot Act compliant KYB verification.

ein: Optional[str]

Masked Employer Identification Number in the format -*****

The official registered name of the business. This name should be correlated with the ein value.

representatives: Optional[List[DataComplianceProfileBusinessComplianceProfileRepresentative]]

A list of people related to the company. Only valid where customer type is 'business'.

name: str
email: Optional[str]
phone: Optional[str]
website: Optional[str]

Official business website URL. Optional but recommended for enhanced KYB.

formaturi
config: Optional[DataConfig]
processing_method: Optional[Literal["inline", "background", "skip"]]
One of the following:
"inline"
"background"
"skip"
sandbox_outcome: Optional[Literal["standard", "verified", "rejected", "review"]]
One of the following:
"standard"
"verified"
"rejected"
"review"
device: Optional[DataDevice]
ip_address: str

The customer's IP address at the time of profile creation. Use 0.0.0.0 to represent an offline customer registration.

minLength1
formatipv4
external_id: Optional[str]

Unique identifier for the customer in your database, used for cross-referencing between Straddle and your systems.

metadata: Optional[Dict[str, str]]

Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the customer in a structured format.

Metadata about the API request, including an identifier and timestamp.

api_request_id: str

Unique identifier for this API request, useful for troubleshooting.

formatuuid
api_request_timestamp: datetime

Timestamp for this API request, useful for troubleshooting.

formatdate-time
response_type: Literal["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.
One of the following:
"object"
"array"
"error"
"none"
class DeviceUnmaskedV1:
ip_address: str

The customer's IP address at the time of profile creation. Use 0.0.0.0 to represent an offline customer registration.

minLength1
formatipv4

CustomersReview

Customers represent the end users who send or receive payments through your integration. Each customer undergoes automatic identity verification and fraud screening upon creation. Use customers to track payment history, manage bank account connections, and maintain a secure record of all transactions associated with a user. Customers can be either individuals or businesses with appropriate compliance checks for each type.

Review a customer's identity results
customers.review.get(strid, ReviewGetParams**kwargs) -> CustomerReviewV1
GET/v1/customers/{id}/review
Update a customer's verification status
customers.review.decision(strid, ReviewDecisionParams**kwargs) -> CustomerV1
PATCH/v1/customers/{id}/review
Update a customer's identity decision
customers.review.refresh_review(strid, ReviewRefreshReviewParams**kwargs) -> CustomerV1
PUT/v1/customers/{id}/refresh_review
ModelsExpand Collapse
class CustomerReviewV1:
data: Data
customer_details: DataCustomerDetails
id: str

Unique identifier for the customer.

formatuuid
created_at: datetime

Timestamp of when the customer record was created.

formatdate-time
email: str

The customer's email address.

formatemail
name: str

Full name of the individual or business name.

phone: str

The customer's phone number in E.164 format.

status: Literal["pending", "review", "verified", 2 more]
One of the following:
"pending"
"review"
"verified"
"inactive"
"rejected"
type: Literal["individual", "business"]
One of the following:
"individual"
"business"
updated_at: datetime

Timestamp of the most recent update to the customer record.

formatdate-time
address: Optional[CustomerAddressV1]

An object containing the customer's address. This is optional, but if provided, all required fields must be present.

address1: str

Primary address line (e.g., street, PO Box).

maxLength100
city: str

City, district, suburb, town, or village.

maxLength100
state: str

Two-letter state code.

zip: str

Zip or postal code.

address2: Optional[str]

Secondary address line (e.g., apartment, suite, unit, or building).

maxLength100
compliance_profile: Optional[DataCustomerDetailsComplianceProfile]

PII required to trigger Patriot Act compliant KYC verification.

One of the following:
class DataCustomerDetailsComplianceProfileIndividualComplianceProfile:

PII required to trigger Patriot Act compliant KYC verification.

dob: Optional[date]

Masked date of birth in ****-- format.

formatdate
ssn: Optional[str]

Masked Social Security Number in the format --***.

class DataCustomerDetailsComplianceProfileBusinessComplianceProfile:

Business registration data required to trigger Patriot Act compliant KYB verification.

ein: Optional[str]

Masked Employer Identification Number in the format -*****

The official registered name of the business. This name should be correlated with the ein value.

representatives: Optional[List[DataCustomerDetailsComplianceProfileBusinessComplianceProfileRepresentative]]

A list of people related to the company. Only valid where customer type is 'business'.

name: str
email: Optional[str]
phone: Optional[str]
website: Optional[str]

Official business website URL. Optional but recommended for enhanced KYB.

formaturi
config: Optional[DataCustomerDetailsConfig]
processing_method: Optional[Literal["inline", "background", "skip"]]
One of the following:
"inline"
"background"
"skip"
sandbox_outcome: Optional[Literal["standard", "verified", "rejected", "review"]]
One of the following:
"standard"
"verified"
"rejected"
"review"
device: Optional[DataCustomerDetailsDevice]
ip_address: str

The customer's IP address at the time of profile creation. Use 0.0.0.0 to represent an offline customer registration.

minLength1
formatipv4
external_id: Optional[str]

Unique identifier for the customer in your database, used for cross-referencing between Straddle and your systems.

metadata: Optional[Dict[str, str]]

Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the customer in a structured format.

identity_details: Optional[DataIdentityDetails]
breakdown: DataIdentityDetailsBreakdown

Detailed breakdown of the customer verification results, including decisions, risk scores, correlation score, and more.

address: Optional[IdentityVerificationBreakdownV1]
codes: Optional[List[str]]

List of specific result codes from the fraud and risk screening.

correlation: Optional[Literal["low_confidence", "potential_match", "likely_match", "high_confidence"]]
One of the following:
"low_confidence"
"potential_match"
"likely_match"
"high_confidence"
correlation_score: Optional[float]

Represents the strength of the correlation between provided and known information. A higher score indicates a stronger correlation.

formatdouble
decision: Optional[Literal["accept", "reject", "review"]]
One of the following:
"accept"
"reject"
"review"
risk_score: Optional[float]

Predicts the inherent risk associated with the customer for a given module. A higher score indicates a greater likelihood of fraud.

formatdouble
business_evaluation: Optional[IdentityVerificationBreakdownV1]
codes: Optional[List[str]]

List of specific result codes from the fraud and risk screening.

correlation: Optional[Literal["low_confidence", "potential_match", "likely_match", "high_confidence"]]
One of the following:
"low_confidence"
"potential_match"
"likely_match"
"high_confidence"
correlation_score: Optional[float]

Represents the strength of the correlation between provided and known information. A higher score indicates a stronger correlation.

formatdouble
decision: Optional[Literal["accept", "reject", "review"]]
One of the following:
"accept"
"reject"
"review"
risk_score: Optional[float]

Predicts the inherent risk associated with the customer for a given module. A higher score indicates a greater likelihood of fraud.

formatdouble
business_identification: Optional[IdentityVerificationBreakdownV1]
codes: Optional[List[str]]

List of specific result codes from the fraud and risk screening.

correlation: Optional[Literal["low_confidence", "potential_match", "likely_match", "high_confidence"]]
One of the following:
"low_confidence"
"potential_match"
"likely_match"
"high_confidence"
correlation_score: Optional[float]

Represents the strength of the correlation between provided and known information. A higher score indicates a stronger correlation.

formatdouble
decision: Optional[Literal["accept", "reject", "review"]]
One of the following:
"accept"
"reject"
"review"
risk_score: Optional[float]

Predicts the inherent risk associated with the customer for a given module. A higher score indicates a greater likelihood of fraud.

formatdouble
business_validation: Optional[IdentityVerificationBreakdownV1]
codes: Optional[List[str]]

List of specific result codes from the fraud and risk screening.

correlation: Optional[Literal["low_confidence", "potential_match", "likely_match", "high_confidence"]]
One of the following:
"low_confidence"
"potential_match"
"likely_match"
"high_confidence"
correlation_score: Optional[float]

Represents the strength of the correlation between provided and known information. A higher score indicates a stronger correlation.

formatdouble
decision: Optional[Literal["accept", "reject", "review"]]
One of the following:
"accept"
"reject"
"review"
risk_score: Optional[float]

Predicts the inherent risk associated with the customer for a given module. A higher score indicates a greater likelihood of fraud.

formatdouble
email: Optional[IdentityVerificationBreakdownV1]
codes: Optional[List[str]]

List of specific result codes from the fraud and risk screening.

correlation: Optional[Literal["low_confidence", "potential_match", "likely_match", "high_confidence"]]
One of the following:
"low_confidence"
"potential_match"
"likely_match"
"high_confidence"
correlation_score: Optional[float]

Represents the strength of the correlation between provided and known information. A higher score indicates a stronger correlation.

formatdouble
decision: Optional[Literal["accept", "reject", "review"]]
One of the following:
"accept"
"reject"
"review"
risk_score: Optional[float]

Predicts the inherent risk associated with the customer for a given module. A higher score indicates a greater likelihood of fraud.

formatdouble
fraud: Optional[IdentityVerificationBreakdownV1]
codes: Optional[List[str]]

List of specific result codes from the fraud and risk screening.

correlation: Optional[Literal["low_confidence", "potential_match", "likely_match", "high_confidence"]]
One of the following:
"low_confidence"
"potential_match"
"likely_match"
"high_confidence"
correlation_score: Optional[float]

Represents the strength of the correlation between provided and known information. A higher score indicates a stronger correlation.

formatdouble
decision: Optional[Literal["accept", "reject", "review"]]
One of the following:
"accept"
"reject"
"review"
risk_score: Optional[float]

Predicts the inherent risk associated with the customer for a given module. A higher score indicates a greater likelihood of fraud.

formatdouble
phone: Optional[IdentityVerificationBreakdownV1]
codes: Optional[List[str]]

List of specific result codes from the fraud and risk screening.

correlation: Optional[Literal["low_confidence", "potential_match", "likely_match", "high_confidence"]]
One of the following:
"low_confidence"
"potential_match"
"likely_match"
"high_confidence"
correlation_score: Optional[float]

Represents the strength of the correlation between provided and known information. A higher score indicates a stronger correlation.

formatdouble
decision: Optional[Literal["accept", "reject", "review"]]
One of the following:
"accept"
"reject"
"review"
risk_score: Optional[float]

Predicts the inherent risk associated with the customer for a given module. A higher score indicates a greater likelihood of fraud.

formatdouble
synthetic: Optional[IdentityVerificationBreakdownV1]
codes: Optional[List[str]]

List of specific result codes from the fraud and risk screening.

correlation: Optional[Literal["low_confidence", "potential_match", "likely_match", "high_confidence"]]
One of the following:
"low_confidence"
"potential_match"
"likely_match"
"high_confidence"
correlation_score: Optional[float]

Represents the strength of the correlation between provided and known information. A higher score indicates a stronger correlation.

formatdouble
decision: Optional[Literal["accept", "reject", "review"]]
One of the following:
"accept"
"reject"
"review"
risk_score: Optional[float]

Predicts the inherent risk associated with the customer for a given module. A higher score indicates a greater likelihood of fraud.

formatdouble
created_at: datetime

Timestamp of when the review was initiated.

formatdate-time
decision: Literal["accept", "reject", "review"]
One of the following:
"accept"
"reject"
"review"
review_id: str

Unique identifier for the review.

formatuuid
updated_at: datetime

Timestamp of the most recent update to the review.

formatdate-time
kyc: Optional[DataIdentityDetailsKYC]
validations: DataIdentityDetailsKYCValidations

Boolean values indicating the result of each validation in the KYC process.

address: Optional[bool]
city: Optional[bool]
dob: Optional[bool]
email: Optional[bool]
first_name: Optional[bool]
last_name: Optional[bool]
phone: Optional[bool]
ssn: Optional[bool]
state: Optional[bool]
zip: Optional[bool]
codes: Optional[List[str]]

List of specific result codes from the KYC screening process.

decision: Optional[Literal["accept", "reject", "review"]]
One of the following:
"accept"
"reject"
"review"
messages: Optional[Dict[str, str]]

Dictionary of all messages from the customer verification process.

network_alerts: Optional[DataIdentityDetailsNetworkAlerts]
alerts: Optional[List[str]]

Any alerts or flags raised during the consortium alert screening.

codes: Optional[List[str]]

List of specific result codes from the consortium alert screening.

decision: Optional[Literal["accept", "reject", "review"]]
One of the following:
"accept"
"reject"
"review"
reputation: Optional[DataIdentityDetailsReputation]
codes: Optional[List[str]]

Specific codes related to the Straddle reputation screening results.

decision: Optional[Literal["accept", "reject", "review"]]
One of the following:
"accept"
"reject"
"review"
insights: Optional[DataIdentityDetailsReputationInsights]
accounts_active_count: Optional[int]
accounts_closed_count: Optional[int]
accounts_closed_dates: Optional[List[date]]
accounts_count: Optional[int]
accounts_fraud_count: Optional[int]
accounts_fraud_labeled_dates: Optional[List[date]]
accounts_fraud_loss_total_amount: Optional[float]
ach_fraud_transactions_count: Optional[int]
ach_fraud_transactions_dates: Optional[List[date]]
ach_fraud_transactions_total_amount: Optional[float]
ach_returned_transactions_count: Optional[int]
ach_returned_transactions_dates: Optional[List[date]]
ach_returned_transactions_total_amount: Optional[float]
applications_approved_count: Optional[int]
applications_count: Optional[int]
applications_dates: Optional[List[date]]
applications_declined_count: Optional[int]
applications_fraud_count: Optional[int]
card_disputed_transactions_count: Optional[int]
card_disputed_transactions_dates: Optional[List[date]]
card_disputed_transactions_total_amount: Optional[float]
card_fraud_transactions_count: Optional[int]
card_fraud_transactions_dates: Optional[List[date]]
card_fraud_transactions_total_amount: Optional[float]
card_stopped_transactions_count: Optional[int]
card_stopped_transactions_dates: Optional[List[date]]
user_active_profile_count: Optional[int]
user_address_count: Optional[int]
user_closed_profile_count: Optional[int]
user_dob_count: Optional[int]
user_email_count: Optional[int]
user_institution_count: Optional[int]
user_mobile_count: Optional[int]
risk_score: Optional[float]
watch_list: Optional[DataIdentityDetailsWatchList]
codes: Optional[List[str]]

Specific codes related to the Straddle watchlist screening results.

decision: Optional[Literal["accept", "reject", "review"]]
One of the following:
"accept"
"reject"
"review"
matched: Optional[List[str]]

Information about any matches found during screening.

matches: Optional[List[DataIdentityDetailsWatchListMatch]]

Information about any matches found during screening.

correlation: Literal["low_confidence", "potential_match", "likely_match", "high_confidence"]
One of the following:
"low_confidence"
"potential_match"
"likely_match"
"high_confidence"
list_name: str

The name of the list the match was found.

match_fields: List[str]

Data fields that matched.

urls: List[str]

Relevent Urls to review.

Metadata about the API request, including an identifier and timestamp.

api_request_id: str

Unique identifier for this API request, useful for troubleshooting.

formatuuid
api_request_timestamp: datetime

Timestamp for this API request, useful for troubleshooting.

formatdate-time
response_type: Literal["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.
One of the following:
"object"
"array"
"error"
"none"
class IdentityVerificationBreakdownV1:
codes: Optional[List[str]]

List of specific result codes from the fraud and risk screening.

correlation: Optional[Literal["low_confidence", "potential_match", "likely_match", "high_confidence"]]
One of the following:
"low_confidence"
"potential_match"
"likely_match"
"high_confidence"
correlation_score: Optional[float]

Represents the strength of the correlation between provided and known information. A higher score indicates a stronger correlation.

formatdouble
decision: Optional[Literal["accept", "reject", "review"]]
One of the following:
"accept"
"reject"
"review"
risk_score: Optional[float]

Predicts the inherent risk associated with the customer for a given module. A higher score indicates a greater likelihood of fraud.

formatdouble