Skip to content
Get started

Accounts

Accounts represent businesses using Straddle through your platform. Each account must complete automated verification before processing payments. Use accounts to manage your users' payment capabilities, track verification status, and control access to features. Accounts can be instantly created in sandbox and require additional verification for production access.

Lookup an account
client.embed.accounts.get(stringaccountID, AccountGetParams { correlationID, requestID } params?, RequestOptionsoptions?): AccountV1 { data, meta, response_type }
GET/v1/accounts/{account_id}
Update an account
client.embed.accounts.update(stringaccountID, AccountUpdateParams { business_profile, external_id, metadata, 3 more } params, RequestOptionsoptions?): AccountV1 { data, meta, response_type }
PUT/v1/accounts/{account_id}
Create an account
client.embed.accounts.create(AccountCreateParams { access_level, account_type, business_profile, 6 more } params, RequestOptionsoptions?): AccountV1 { data, meta, response_type }
POST/v1/accounts
List accounts
client.embed.accounts.list(AccountListParams { page_number, page_size, search_text, 6 more } params?, RequestOptionsoptions?): PageNumberSchema<Data { id, access_level, organization_id, 11 more } >
GET/v1/accounts
Onboard an account
client.embed.accounts.onboard(stringaccountID, AccountOnboardParams { terms_of_service, correlationID, idempotencyKey, requestID } params, RequestOptionsoptions?): AccountV1 { data, meta, response_type }
POST/v1/accounts/{account_id}/onboard
Simulate status transitions for a sandbox account
client.embed.accounts.simulate(stringaccountID, AccountSimulateParams { final_status, correlationID, idempotencyKey, requestID } params?, RequestOptionsoptions?): AccountV1 { data, meta, response_type }
POST/v1/accounts/{account_id}/simulate
ModelsExpand Collapse
AccountPagedV1 { data, meta, response_type }
data: Array<Data { id, access_level, organization_id, 11 more } >
id: string

Unique identifier for the account.

formatuuid
access_level: "standard" | "managed"

The access level granted to the account. This is determined by your platform configuration. Use standard unless instructed otherwise by Straddle.

One of the following:
"standard"
"managed"
organization_id: string

The unique identifier of the organization this account belongs to.

formatuuid
status: "created" | "onboarding" | "active" | 2 more

The current status of the account (e.g., 'active', 'inactive', 'pending').

One of the following:
"created"
"onboarding"
"active"
"rejected"
"inactive"
status_detail: StatusDetail { code, message, reason, source }
code: string

A machine-readable code for the specific status, useful for programmatic handling.

message: string

A human-readable message describing the current status.

reason: "unverified" | "in_review" | "pending" | 6 more

A machine-readable identifier for the specific status, useful for programmatic handling.

One of the following:
"unverified"
"in_review"
"pending"
"stuck"
"verified"
"failed_verification"
"disabled"
"terminated"
"new"
source: "watchtower"

Identifies the origin of the status change (e.g., bank_decline, watchtower). This helps in tracking the cause of status updates.

type: "business"

The type of account (e.g., 'individual', 'business').

business_profile?: BusinessProfileV1 { name, website, address, 7 more }
name: string

The operating or trade name of the business.

website: string

URL of the business's primary marketing website.

formaturi
address?: AddressV1 { city, line1, postal_code, 3 more } | null

The address object is optional. If provided, it must be a valid address.

city: string | null

City, district, suburb, town, or village.

line1: string | null

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

postal_code: string | null

Postal or ZIP code.

state: string | null

Two-letter state code.

country?: string | null

The country of the address, in ISO 3166-1 alpha-2 format.

line2?: string | null

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

description?: string | null

A brief description of the business and its products or services.

industry?: IndustryV1 { category, mcc, sector }
category?: string | null

The general category of the industry. Required if not providing MCC.

mcc?: string | null

The Merchant Category Code (MCC) that best describes the business. Optional.

sector?: string | null

The specific sector within the industry category. Required if not providing MCC.

The official registered name of the business.

phone?: string | null

The primary contact phone number for the business.

support_channels?: SupportChannelsV1 { email, phone, url }
email?: string | null

The email address for customer support inquiries.

formatemail
phone?: string | null

The phone number for customer support.

url?: string | null

The URL of the business's customer support page or contact form.

formaturi
tax_id?: string | null

The business's tax identification number (e.g., EIN in the US).

use_case?: string | null

A description of how the business intends to use Straddle's services.

capabilities?: Capabilities { consent_types, customer_types, payment_types }

Whether the internet payment authorization capability is enabled for the account.

One of the following:

Whether the signed agreement payment authorization capability is enabled for the account.

One of the following:
customer_types: CustomerTypes { businesses, individuals }
businesses: CapabilityV1 { capability_status }
capability_status: "active" | "inactive"
One of the following:
"active"
"inactive"
individuals: CapabilityV1 { capability_status }
capability_status: "active" | "inactive"
One of the following:
"active"
"inactive"
payment_types: PaymentTypes { charges, payouts }
charges: CapabilityV1 { capability_status }
capability_status: "active" | "inactive"
One of the following:
"active"
"inactive"
payouts: CapabilityV1 { capability_status }
capability_status: "active" | "inactive"
One of the following:
"active"
"inactive"
created_at?: string | null

Timestamp of when the account was created.

formatdate-time
external_id?: string | null

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

metadata?: Record<string, string | null> | null

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

settings?: Settings { charges, payouts }
charges: Charges { daily_amount, funding_time, linked_bank_account_id, 3 more }
daily_amount: number

The maximum dollar amount of charges in a calendar day.

formatint32
funding_time: "immediate" | "next_day" | "one_day" | 4 more

The amount of time it takes for a charge to be funded. This value is defined by Straddle.

One of the following:
"immediate"
"next_day"
"one_day"
"two_day"
"three_day"
"four_day"
"five_day"
linked_bank_account_id: string

The unique identifier of the linked bank account associated with charges. This value is defined by Straddle.

formatuuid
max_amount: number

The maximum amount of a single charge.

formatint32
monthly_amount: number

The maximum dollar amount of charges in a calendar month.

formatint32
monthly_count: number

The maximum number of charges in a calendar month.

formatint32
payouts: Payouts { daily_amount, funding_time, linked_bank_account_id, 3 more }
daily_amount: number

The maximum dollar amount of payouts in a day.

formatint32
funding_time: "immediate" | "next_day" | "one_day" | 4 more

The amount of time it takes for a payout to be funded. This value is defined by Straddle.

One of the following:
"immediate"
"next_day"
"one_day"
"two_day"
"three_day"
"four_day"
"five_day"
linked_bank_account_id: string

The unique identifier of the linked bank account to use for payouts.

formatuuid
max_amount: number

The maximum amount of a single payout.

formatint32
monthly_amount: number

The maximum dollar amount of payouts in a month.

formatint32
monthly_count: number

The maximum number of payouts in a month.

formatint32
terms_of_service?: TermsOfServiceV1 { accepted_date, agreement_type, agreement_url, 2 more }
accepted_date: string

The datetime of when the terms of service were accepted, in ISO 8601 format.

formatdate-time
agreement_type: "embedded" | "direct"

The type or version of the agreement accepted. Use embedded unless your platform was specifically enabled for direct agreements.

One of the following:
"embedded"
"direct"
agreement_url: string | null

The URL where the full text of the accepted agreement can be found.

accepted_ip?: string | null

The IP address from which the terms of service were accepted.

accepted_user_agent?: string | null

The user agent string of the browser or application used to accept the terms.

updated_at?: string | null

Timestamp of the most recent update to the account.

formatdate-time
meta: PagedResponseMetadata { api_request_id, api_request_timestamp, max_page_size, 6 more }

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

api_request_id: string

Unique identifier for this API request, useful for troubleshooting.

formatuuid
api_request_timestamp: string

Timestamp for this API request, useful for troubleshooting.

formatdate-time
max_page_size: number

Maximum allowed page size for this endpoint.

formatint32
page_number: number

Page number for paginated results.

formatint32
page_size: number

Number of items per page in this response.

formatint32
sort_by: string

The field that the results were sorted by.

sort_order: "asc" | "desc"
One of the following:
"asc"
"desc"
total_items: number

Total number of items returned in this response.

formatint32
total_pages: number

The number of pages available.

formatint32
response_type: "object" | "array" | "error" | "none"

Indicates the structure of the returned content.

  • "object" means the data field contains a single JSON object.
  • "array" means the data field contains an array of objects.
  • "error" means the data field contains an error object with details of the issue.
  • "none" means no data is returned.
One of the following:
"object"
"array"
"error"
"none"
AccountV1 { data, meta, response_type }
data: Data { id, access_level, organization_id, 11 more }
id: string

Unique identifier for the account.

formatuuid
access_level: "standard" | "managed"

The access level granted to the account. This is determined by your platform configuration. Use standard unless instructed otherwise by Straddle.

One of the following:
"standard"
"managed"
organization_id: string

The unique identifier of the organization this account belongs to.

formatuuid
status: "created" | "onboarding" | "active" | 2 more

The current status of the account (e.g., 'active', 'inactive', 'pending').

One of the following:
"created"
"onboarding"
"active"
"rejected"
"inactive"
status_detail: StatusDetail { code, message, reason, source }
code: string

A machine-readable code for the specific status, useful for programmatic handling.

message: string

A human-readable message describing the current status.

reason: "unverified" | "in_review" | "pending" | 6 more

A machine-readable identifier for the specific status, useful for programmatic handling.

One of the following:
"unverified"
"in_review"
"pending"
"stuck"
"verified"
"failed_verification"
"disabled"
"terminated"
"new"
source: "watchtower"

Identifies the origin of the status change (e.g., bank_decline, watchtower). This helps in tracking the cause of status updates.

type: "business"

The type of account (e.g., 'individual', 'business').

business_profile?: BusinessProfileV1 { name, website, address, 7 more }
name: string

The operating or trade name of the business.

website: string

URL of the business's primary marketing website.

formaturi
address?: AddressV1 { city, line1, postal_code, 3 more } | null

The address object is optional. If provided, it must be a valid address.

city: string | null

City, district, suburb, town, or village.

line1: string | null

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

postal_code: string | null

Postal or ZIP code.

state: string | null

Two-letter state code.

country?: string | null

The country of the address, in ISO 3166-1 alpha-2 format.

line2?: string | null

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

description?: string | null

A brief description of the business and its products or services.

industry?: IndustryV1 { category, mcc, sector }
category?: string | null

The general category of the industry. Required if not providing MCC.

mcc?: string | null

The Merchant Category Code (MCC) that best describes the business. Optional.

sector?: string | null

The specific sector within the industry category. Required if not providing MCC.

The official registered name of the business.

phone?: string | null

The primary contact phone number for the business.

support_channels?: SupportChannelsV1 { email, phone, url }
email?: string | null

The email address for customer support inquiries.

formatemail
phone?: string | null

The phone number for customer support.

url?: string | null

The URL of the business's customer support page or contact form.

formaturi
tax_id?: string | null

The business's tax identification number (e.g., EIN in the US).

use_case?: string | null

A description of how the business intends to use Straddle's services.

capabilities?: Capabilities { consent_types, customer_types, payment_types }

Whether the internet payment authorization capability is enabled for the account.

One of the following:

Whether the signed agreement payment authorization capability is enabled for the account.

One of the following:
customer_types: CustomerTypes { businesses, individuals }
businesses: CapabilityV1 { capability_status }
capability_status: "active" | "inactive"
One of the following:
"active"
"inactive"
individuals: CapabilityV1 { capability_status }
capability_status: "active" | "inactive"
One of the following:
"active"
"inactive"
payment_types: PaymentTypes { charges, payouts }
charges: CapabilityV1 { capability_status }
capability_status: "active" | "inactive"
One of the following:
"active"
"inactive"
payouts: CapabilityV1 { capability_status }
capability_status: "active" | "inactive"
One of the following:
"active"
"inactive"
created_at?: string | null

Timestamp of when the account was created.

formatdate-time
external_id?: string | null

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

metadata?: Record<string, string | null> | null

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

settings?: Settings { charges, payouts }
charges: Charges { daily_amount, funding_time, linked_bank_account_id, 3 more }
daily_amount: number

The maximum dollar amount of charges in a calendar day.

formatint32
funding_time: "immediate" | "next_day" | "one_day" | 4 more

The amount of time it takes for a charge to be funded. This value is defined by Straddle.

One of the following:
"immediate"
"next_day"
"one_day"
"two_day"
"three_day"
"four_day"
"five_day"
linked_bank_account_id: string

The unique identifier of the linked bank account associated with charges. This value is defined by Straddle.

formatuuid
max_amount: number

The maximum amount of a single charge.

formatint32
monthly_amount: number

The maximum dollar amount of charges in a calendar month.

formatint32
monthly_count: number

The maximum number of charges in a calendar month.

formatint32
payouts: Payouts { daily_amount, funding_time, linked_bank_account_id, 3 more }
daily_amount: number

The maximum dollar amount of payouts in a day.

formatint32
funding_time: "immediate" | "next_day" | "one_day" | 4 more

The amount of time it takes for a payout to be funded. This value is defined by Straddle.

One of the following:
"immediate"
"next_day"
"one_day"
"two_day"
"three_day"
"four_day"
"five_day"
linked_bank_account_id: string

The unique identifier of the linked bank account to use for payouts.

formatuuid
max_amount: number

The maximum amount of a single payout.

formatint32
monthly_amount: number

The maximum dollar amount of payouts in a month.

formatint32
monthly_count: number

The maximum number of payouts in a month.

formatint32
terms_of_service?: TermsOfServiceV1 { accepted_date, agreement_type, agreement_url, 2 more }
accepted_date: string

The datetime of when the terms of service were accepted, in ISO 8601 format.

formatdate-time
agreement_type: "embedded" | "direct"

The type or version of the agreement accepted. Use embedded unless your platform was specifically enabled for direct agreements.

One of the following:
"embedded"
"direct"
agreement_url: string | null

The URL where the full text of the accepted agreement can be found.

accepted_ip?: string | null

The IP address from which the terms of service were accepted.

accepted_user_agent?: string | null

The user agent string of the browser or application used to accept the terms.

updated_at?: string | null

Timestamp of the most recent update to the account.

formatdate-time
meta: ResponseMetadata { api_request_id, api_request_timestamp }

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

api_request_id: string

Unique identifier for this API request, useful for troubleshooting.

formatuuid
api_request_timestamp: string

Timestamp for this API request, useful for troubleshooting.

formatdate-time
response_type: "object" | "array" | "error" | "none"

Indicates the structure of the returned content.

  • "object" means the data field contains a single JSON object.
  • "array" means the data field contains an array of objects.
  • "error" means the data field contains an error object with details of the issue.
  • "none" means no data is returned.
One of the following:
"object"
"array"
"error"
"none"
AddressV1 { city, line1, postal_code, 3 more }

The address object is optional. If provided, it must be a valid address.

city: string | null

City, district, suburb, town, or village.

line1: string | null

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

postal_code: string | null

Postal or ZIP code.

state: string | null

Two-letter state code.

country?: string | null

The country of the address, in ISO 3166-1 alpha-2 format.

line2?: string | null

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

BusinessProfileV1 { name, website, address, 7 more }
name: string

The operating or trade name of the business.

website: string

URL of the business's primary marketing website.

formaturi
address?: AddressV1 { city, line1, postal_code, 3 more } | null

The address object is optional. If provided, it must be a valid address.

city: string | null

City, district, suburb, town, or village.

line1: string | null

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

postal_code: string | null

Postal or ZIP code.

state: string | null

Two-letter state code.

country?: string | null

The country of the address, in ISO 3166-1 alpha-2 format.

line2?: string | null

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

description?: string | null

A brief description of the business and its products or services.

industry?: IndustryV1 { category, mcc, sector }
category?: string | null

The general category of the industry. Required if not providing MCC.

mcc?: string | null

The Merchant Category Code (MCC) that best describes the business. Optional.

sector?: string | null

The specific sector within the industry category. Required if not providing MCC.

The official registered name of the business.

phone?: string | null

The primary contact phone number for the business.

support_channels?: SupportChannelsV1 { email, phone, url }
email?: string | null

The email address for customer support inquiries.

formatemail
phone?: string | null

The phone number for customer support.

url?: string | null

The URL of the business's customer support page or contact form.

formaturi
tax_id?: string | null

The business's tax identification number (e.g., EIN in the US).

use_case?: string | null

A description of how the business intends to use Straddle's services.

CapabilityV1 { capability_status }
capability_status: "active" | "inactive"
One of the following:
"active"
"inactive"
IndustryV1 { category, mcc, sector }
category?: string | null

The general category of the industry. Required if not providing MCC.

mcc?: string | null

The Merchant Category Code (MCC) that best describes the business. Optional.

sector?: string | null

The specific sector within the industry category. Required if not providing MCC.

SupportChannelsV1 { email, phone, url }
email?: string | null

The email address for customer support inquiries.

formatemail
phone?: string | null

The phone number for customer support.

url?: string | null

The URL of the business's customer support page or contact form.

formaturi
TermsOfServiceV1 { accepted_date, agreement_type, agreement_url, 2 more }
accepted_date: string

The datetime of when the terms of service were accepted, in ISO 8601 format.

formatdate-time
agreement_type: "embedded" | "direct"

The type or version of the agreement accepted. Use embedded unless your platform was specifically enabled for direct agreements.

One of the following:
"embedded"
"direct"
agreement_url: string | null

The URL where the full text of the accepted agreement can be found.

accepted_ip?: string | null

The IP address from which the terms of service were accepted.

accepted_user_agent?: string | null

The user agent string of the browser or application used to accept the terms.

AccountsCapability Requests

Capabilities enable specific features and services for an Account. Use capability requests to unlock higher processing limits, new payment types, or additional platform features as your users' businesses grow. Track approval status and manage documentation requirements through a single interface.

Request a capability
client.embed.accounts.capabilityRequests.create(stringaccountID, CapabilityRequestCreateParams { businesses, charges, individuals, 6 more } params?, RequestOptionsoptions?): CapabilityRequestPagedV1 { data, meta, response_type }
POST/v1/accounts/{account_id}/capability_requests
List capability requests
client.embed.accounts.capabilityRequests.list(stringaccountID, CapabilityRequestListParams { category, page_number, page_size, 6 more } params?, RequestOptionsoptions?): PageNumberSchema<Data { id, account_id, category, 6 more } >
GET/v1/accounts/{account_id}/capability_requests
ModelsExpand Collapse
CapabilityRequestPagedV1 { data, meta, response_type }
data: Array<Data { id, account_id, category, 6 more } >
id: string

Unique identifier for the capability request.

formatuuid
account_id: string

The unique identifier of the account associated with this capability request.

formatuuid
category: "payment_type" | "customer_type" | "consent_type"

The category of the requested capability. Use payment_type for charges and payouts, customer_type to define individuals or businesses, and consent_type for signed_agreement or internet payment authorization.

One of the following:
"payment_type"
"customer_type"
"consent_type"
created_at: string

Timestamp of when the capability request was created.

formatdate-time
enable: boolean

Whether this capability request is to enable or disable the capability.

status: "active" | "inactive" | "in_review" | 3 more

The current status of the capability request.

One of the following:
"active"
"inactive"
"in_review"
"rejected"
"approved"
"reviewing"
type: "charges" | "payouts" | "individuals" | 3 more

The specific type of capability being requested within the category.

One of the following:
"charges"
"payouts"
"individuals"
"businesses"
"signed_agreement"
"internet"
updated_at: string

Timestamp of the most recent update to the capability request.

formatdate-time
settings?: Record<string, unknown> | null

Any specific settings or configurations related to the requested capability.

meta: PagedResponseMetadata { api_request_id, api_request_timestamp, max_page_size, 6 more }

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

api_request_id: string

Unique identifier for this API request, useful for troubleshooting.

formatuuid
api_request_timestamp: string

Timestamp for this API request, useful for troubleshooting.

formatdate-time
max_page_size: number

Maximum allowed page size for this endpoint.

formatint32
page_number: number

Page number for paginated results.

formatint32
page_size: number

Number of items per page in this response.

formatint32
sort_by: string

The field that the results were sorted by.

sort_order: "asc" | "desc"
One of the following:
"asc"
"desc"
total_items: number

Total number of items returned in this response.

formatint32
total_pages: number

The number of pages available.

formatint32
response_type: "object" | "array" | "error" | "none"

Indicates the structure of the returned content.

  • "object" means the data field contains a single JSON object.
  • "array" means the data field contains an array of objects.
  • "error" means the data field contains an error object with details of the issue.
  • "none" means no data is returned.
One of the following:
"object"
"array"
"error"
"none"