Skip to content
Get started

Embed

EmbedAccounts

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
$ straddle embed:accounts get
GET/v1/accounts/{account_id}
Update an account
$ straddle embed:accounts update
PUT/v1/accounts/{account_id}
Create an account
$ straddle embed:accounts create
POST/v1/accounts
List accounts
$ straddle embed:accounts list
GET/v1/accounts
Onboard an account
$ straddle embed:accounts onboard
POST/v1/accounts/{account_id}/onboard
Simulate status transitions for a sandbox account
$ straddle embed:accounts simulate
POST/v1/accounts/{account_id}/simulate
ModelsExpand Collapse
accountPagedV1: object { data, meta, response_type }
data: array of object { id, access_level, organization_id, 11 more }
id: string

Unique identifier for the account.

access_level: "standard" or "managed"

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

"standard"
"managed"
organization_id: string

The unique identifier of the organization this account belongs to.

status: "created" or "onboarding" or "active" or 2 more

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

"created"
"onboarding"
"active"
"rejected"
"inactive"
status_detail: object { 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" or "in_review" or "pending" or 6 more

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

"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.

"watchtower"
type: "business"

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

"business"
business_profile: optional object { 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.

address: optional object { address1, city, line1, 6 more }

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

address1: string

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

city: string

City, district, suburb, town, or village.

line1: string

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

postal_code: string

Postal or ZIP code.

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).

country: optional string

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

line2: optional string

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

description: optional string

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

industry: optional object { category, mcc, sector }
category: optional string

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

mcc: optional string

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

sector: optional string

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

The official registered name of the business.

phone: optional string

The primary contact phone number for the business.

support_channels: optional object { email, phone, url }
email: optional string

The email address for customer support inquiries.

phone: optional string

The phone number for customer support.

url: optional string

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

tax_id: optional string

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

use_case: optional string

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

capabilities: optional object { consent_types, customer_types, payment_types }

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

capability_status: "active" or "inactive"
"active"
"inactive"

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

capability_status: "active" or "inactive"
"active"
"inactive"
customer_types: object { businesses, individuals }
businesses: object { capability_status }
capability_status: "active" or "inactive"
"active"
"inactive"
individuals: object { capability_status }
capability_status: "active" or "inactive"
"active"
"inactive"
payment_types: object { charges, payouts }
charges: object { capability_status }
capability_status: "active" or "inactive"
"active"
"inactive"
payouts: object { capability_status }
capability_status: "active" or "inactive"
"active"
"inactive"
created_at: optional string

Timestamp of when the account was created.

external_id: optional string

Unique identifier for the account 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 account in a structured format.

settings: optional object { charges, payouts }
charges: object { daily_amount, funding_time, linked_bank_account_id, 3 more }
daily_amount: number

The maximum dollar amount of charges in a calendar day.

funding_time: "immediate" or "next_day" or "one_day" or 4 more

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

"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.

max_amount: number

The maximum amount of a single charge.

monthly_amount: number

The maximum dollar amount of charges in a calendar month.

monthly_count: number

The maximum number of charges in a calendar month.

payouts: object { daily_amount, funding_time, linked_bank_account_id, 3 more }
daily_amount: number

The maximum dollar amount of payouts in a day.

funding_time: "immediate" or "next_day" or "one_day" or 4 more

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

"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.

max_amount: number

The maximum amount of a single payout.

monthly_amount: number

The maximum dollar amount of payouts in a month.

monthly_count: number

The maximum number of payouts in a month.

terms_of_service: optional object { 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.

agreement_type: "embedded" or "direct"

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

"embedded"
"direct"
agreement_url: string

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

accepted_ip: optional string

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

accepted_user_agent: optional string

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

updated_at: optional string

Timestamp of the most recent update to the account.

meta: object { 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.

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 number of items returned in this response.

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"
accountV1: object { data, meta, response_type }
data: object { id, access_level, organization_id, 11 more }
id: string

Unique identifier for the account.

access_level: "standard" or "managed"

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

"standard"
"managed"
organization_id: string

The unique identifier of the organization this account belongs to.

status: "created" or "onboarding" or "active" or 2 more

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

"created"
"onboarding"
"active"
"rejected"
"inactive"
status_detail: object { 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" or "in_review" or "pending" or 6 more

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

"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.

"watchtower"
type: "business"

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

"business"
business_profile: optional object { 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.

address: optional object { address1, city, line1, 6 more }

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

address1: string

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

city: string

City, district, suburb, town, or village.

line1: string

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

postal_code: string

Postal or ZIP code.

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).

country: optional string

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

line2: optional string

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

description: optional string

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

industry: optional object { category, mcc, sector }
category: optional string

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

mcc: optional string

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

sector: optional string

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

The official registered name of the business.

phone: optional string

The primary contact phone number for the business.

support_channels: optional object { email, phone, url }
email: optional string

The email address for customer support inquiries.

phone: optional string

The phone number for customer support.

url: optional string

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

tax_id: optional string

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

use_case: optional string

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

capabilities: optional object { consent_types, customer_types, payment_types }

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

capability_status: "active" or "inactive"
"active"
"inactive"

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

capability_status: "active" or "inactive"
"active"
"inactive"
customer_types: object { businesses, individuals }
businesses: object { capability_status }
capability_status: "active" or "inactive"
"active"
"inactive"
individuals: object { capability_status }
capability_status: "active" or "inactive"
"active"
"inactive"
payment_types: object { charges, payouts }
charges: object { capability_status }
capability_status: "active" or "inactive"
"active"
"inactive"
payouts: object { capability_status }
capability_status: "active" or "inactive"
"active"
"inactive"
created_at: optional string

Timestamp of when the account was created.

external_id: optional string

Unique identifier for the account 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 account in a structured format.

settings: optional object { charges, payouts }
charges: object { daily_amount, funding_time, linked_bank_account_id, 3 more }
daily_amount: number

The maximum dollar amount of charges in a calendar day.

funding_time: "immediate" or "next_day" or "one_day" or 4 more

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

"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.

max_amount: number

The maximum amount of a single charge.

monthly_amount: number

The maximum dollar amount of charges in a calendar month.

monthly_count: number

The maximum number of charges in a calendar month.

payouts: object { daily_amount, funding_time, linked_bank_account_id, 3 more }
daily_amount: number

The maximum dollar amount of payouts in a day.

funding_time: "immediate" or "next_day" or "one_day" or 4 more

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

"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.

max_amount: number

The maximum amount of a single payout.

monthly_amount: number

The maximum dollar amount of payouts in a month.

monthly_count: number

The maximum number of payouts in a month.

terms_of_service: optional object { 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.

agreement_type: "embedded" or "direct"

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

"embedded"
"direct"
agreement_url: string

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

accepted_ip: optional string

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

accepted_user_agent: optional string

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

updated_at: optional string

Timestamp of the most recent update to the account.

meta: object { 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.

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"
addressV1: object { address1, city, line1, 6 more }

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

address1: string

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

city: string

City, district, suburb, town, or village.

line1: string

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

postal_code: string

Postal or ZIP code.

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).

country: optional string

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

line2: optional string

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

businessProfileV1: object { 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.

address: optional object { address1, city, line1, 6 more }

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

address1: string

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

city: string

City, district, suburb, town, or village.

line1: string

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

postal_code: string

Postal or ZIP code.

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).

country: optional string

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

line2: optional string

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

description: optional string

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

industry: optional object { category, mcc, sector }
category: optional string

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

mcc: optional string

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

sector: optional string

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

The official registered name of the business.

phone: optional string

The primary contact phone number for the business.

support_channels: optional object { email, phone, url }
email: optional string

The email address for customer support inquiries.

phone: optional string

The phone number for customer support.

url: optional string

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

tax_id: optional string

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

use_case: optional string

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

capabilityV1: object { capability_status }
capability_status: "active" or "inactive"
"active"
"inactive"
industryV1: object { category, mcc, sector }
category: optional string

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

mcc: optional string

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

sector: optional string

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

supportChannelsV1: object { email, phone, url }
email: optional string

The email address for customer support inquiries.

phone: optional string

The phone number for customer support.

url: optional string

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

termsOfServiceV1: object { 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.

agreement_type: "embedded" or "direct"

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

"embedded"
"direct"
agreement_url: string

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

accepted_ip: optional string

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

accepted_user_agent: optional string

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

EmbedAccountsCapability 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
$ straddle embed:accounts:capability-requests create
POST/v1/accounts/{account_id}/capability_requests
List capability requests
$ straddle embed:accounts:capability-requests list
GET/v1/accounts/{account_id}/capability_requests
ModelsExpand Collapse
capabilityRequestPagedV1: object { data, meta, response_type }
data: array of object { id, account_id, category, 6 more }
id: string

Unique identifier for the capability request.

account_id: string

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

category: "payment_type" or "customer_type" or "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.

"payment_type"
"customer_type"
"consent_type"
created_at: string

Timestamp of when the capability request was created.

enable: boolean

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

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

The current status of the capability request.

"active"
"inactive"
"in_review"
"rejected"
"approved"
"reviewing"
type: "charges" or "payouts" or "individuals" or 3 more

The specific type of capability being requested within the category.

"charges"
"payouts"
"individuals"
"businesses"
"signed_agreement"
"internet"
updated_at: string

Timestamp of the most recent update to the capability request.

settings: optional map[unknown]

Any specific settings or configurations related to the requested capability.

meta: object { 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.

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 number of items returned in this response.

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"

EmbedLinked Bank Accounts

Linked bank accounts connect your platform users' external bank accounts to Straddle for settlements and payment funding. Each linked account undergoes automated verification and continuous monitoring. Use linked accounts to manage where clients receive deposits, fund payouts, and track settlement preferences.

Create a linked bank account
$ straddle embed:linked-bank-accounts create
POST/v1/linked_bank_accounts
List linked bank accounts
$ straddle embed:linked-bank-accounts list
GET/v1/linked_bank_accounts
Update a linked bank account
$ straddle embed:linked-bank-accounts update
PUT/v1/linked_bank_accounts/{linked_bank_account_id}
Lookup a linked bank account
$ straddle embed:linked-bank-accounts get
GET/v1/linked_bank_accounts/{linked_bank_account_id}
Unmask a linked bank account
$ straddle embed:linked-bank-accounts unmask
GET/v1/linked_bank_accounts/{linked_bank_account_id}/unmask
Cancel a linked bank account
$ straddle embed:linked-bank-accounts cancel
PATCH/v1/linked_bank_accounts/{linked_bank_account_id}/cancel
ModelsExpand Collapse
linkedBankAccountPagedV1: object { data, meta, response_type }
data: array of object { id, account_id, bank_account, 8 more }
id: string

Unique identifier for the linked bank account.

account_id: string

The unique identifier of the Straddle account related to this bank account.

bank_account: object { account_holder, account_mask, institution_name, routing_number }
account_holder: string
account_mask: string
institution_name: string
routing_number: string
created_at: string

Timestamp of when the bank account object was created.

purposes: array of "charges" or "payouts" or "billing"

The purposes for the linked bank account.

"charges"
"payouts"
"billing"
status: "created" or "onboarding" or "active" or 3 more

The current status of the linked bank account.

"created"
"onboarding"
"active"
"rejected"
"inactive"
"canceled"
status_detail: object { 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" or "in_review" or "pending" or 5 more

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

"unverified"
"in_review"
"pending"
"stuck"
"verified"
"failed_verification"
"disabled"
"new"
source: "watchtower"

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

"watchtower"
updated_at: string

Timestamp of the most recent update to the linked bank account.

description: optional string

Optional description for the bank account.

metadata: optional map[string]

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

platform_id: optional string

The unique identifier of the Straddle Platform relatd to this bank account.

meta: object { 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.

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 number of items returned in this response.

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"
linkedBankAccountUnmaskV1: object { data, meta, response_type }
data: object { id, account_id, bank_account, 5 more }
id: string

Unique identifier for the linked bank account.

account_id: string

Unique identifier for the Straddle account related to this bank account.

bank_account: object { account_holder, account_number, institution_name, routing_number }

The bank account details associated with the linked bank account.

account_holder: string
account_number: string
institution_name: string
routing_number: string
created_at: string

Timestamp of when the linked bank account was created.

status: "created" or "onboarding" or "active" or 3 more

The current status of the linked bank account.

"created"
"onboarding"
"active"
"rejected"
"inactive"
"canceled"
status_detail: object { code, message, reason, source }

Additional details about the current status of the linked bank account.

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" or "in_review" or "pending" or 5 more

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

"unverified"
"in_review"
"pending"
"stuck"
"verified"
"failed_verification"
"disabled"
"new"
source: "watchtower"

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

"watchtower"
updated_at: string

Timestamp of when the linked bank account was last updated.

metadata: optional map[string]
meta: object { 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.

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"
linkedBankAccountV1: object { data, meta, response_type }
data: object { id, account_id, bank_account, 8 more }
id: string

Unique identifier for the linked bank account.

account_id: string

The unique identifier of the Straddle account related to this bank account.

bank_account: object { account_holder, account_mask, institution_name, routing_number }
account_holder: string
account_mask: string
institution_name: string
routing_number: string
created_at: string

Timestamp of when the bank account object was created.

purposes: array of "charges" or "payouts" or "billing"

The purposes for the linked bank account.

"charges"
"payouts"
"billing"
status: "created" or "onboarding" or "active" or 3 more

The current status of the linked bank account.

"created"
"onboarding"
"active"
"rejected"
"inactive"
"canceled"
status_detail: object { 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" or "in_review" or "pending" or 5 more

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

"unverified"
"in_review"
"pending"
"stuck"
"verified"
"failed_verification"
"disabled"
"new"
source: "watchtower"

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

"watchtower"
updated_at: string

Timestamp of the most recent update to the linked bank account.

description: optional string

Optional description for the bank account.

metadata: optional map[string]

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

platform_id: optional string

The unique identifier of the Straddle Platform relatd to this bank account.

meta: object { 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.

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"

EmbedOrganizations

Organizations are a powerful feature in Straddle that allow you to manage multiple accounts under a single umbrella. This hierarchical structure is particularly useful for businesses with complex operations, multiple departments, or legally related entities.

Create an organization
$ straddle embed:organizations create
POST/v1/organizations
List organizations
$ straddle embed:organizations list
GET/v1/organizations
Retrieve organization details
$ straddle embed:organizations get
GET/v1/organizations/{organization_id}
ModelsExpand Collapse
organizationPagedV1: object { data, meta, response_type }
data: array of object { id, created_at, name, 3 more }
id: string

Straddle's unique identifier for the organization.

created_at: string

Timestamp of when the organization was created.

name: string

The name of the organization.

updated_at: string

Timestamp of the most recent update to the organization.

external_id: optional string

Unique identifier for the organization 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 organization in a structured format.

meta: object { 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.

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 number of items returned in this response.

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"
organizationV1: object { data, meta, response_type }
data: object { id, created_at, name, 3 more }
id: string

Straddle's unique identifier for the organization.

created_at: string

Timestamp of when the organization was created.

name: string

The name of the organization.

updated_at: string

Timestamp of the most recent update to the organization.

external_id: optional string

Unique identifier for the organization 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 organization in a structured format.

meta: object { 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.

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"

EmbedRepresentatives

Representatives are individuals who have legal authority or significant responsibility within a business entity associated with a Straddle account. Each representative undergoes automated verification as part of KYC/KYB compliance. Use representatives to collect and verify beneficial owners, control persons, and authorized signers required for account onboarding. Representatives also determine who can legally operate the account and make important changes.

Create a representative
$ straddle embed:representatives create
POST/v1/representatives
List representatives
$ straddle embed:representatives list
GET/v1/representatives
Update a representative
$ straddle embed:representatives update
PUT/v1/representatives/{representative_id}
Lookup a representative
$ straddle embed:representatives get
GET/v1/representatives/{representative_id}
Retrieve unmasked representative details
$ straddle embed:representatives unmask
GET/v1/representatives/{representative_id}/unmask
ModelsExpand Collapse
representative: object { data, meta, response_type }
data: object { id, account_id, created_at, 15 more }
id: string

Unique identifier for the representative.

account_id: string

The unique identifier of the account this representative is associated with.

created_at: string

Timestamp of when the representative was created.

dob: string

The date of birth of the representative, in ISO 8601 format (YYYY-MM-DD).

email: string

The email address of the representative.

first_name: string

The first name of the representative.

last_name: string

The last name of the representative.

mobile_number: string

The mobile phone number of the representative.

name: string
relationship: object { control, owner, primary, 2 more }
control: boolean

Whether the representative has significant responsibility to control, manage, or direct the organization. One representative must be identified under the control prong for each legal entity.

owner: boolean

Whether the representative owns any percentage of of the equity interests of the legal entity.

primary: boolean

Whether the person is authorized as the primary representative of the account. This is the person chosen by the business to provide information about themselves, general information about the account, and who consented to the services agreement.

There can be only one primary representative for an account at a time.

percent_ownership: optional number

The percentage of ownership the representative has. Required if 'Owner' is true.

title: optional string

The job title of the representative.

ssn_last4: string

The last 4 digits of the representative's Social Security Number.

status: "created" or "onboarding" or "active" or 2 more

The current status of the representative.

"created"
"onboarding"
"active"
"rejected"
"inactive"
status_detail: object { 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" or "in_review" or "pending" or 5 more

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

"unverified"
"in_review"
"pending"
"stuck"
"verified"
"failed_verification"
"disabled"
"new"
source: "watchtower"

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

"watchtower"
updated_at: string

Timestamp of the most recent update to the representative.

external_id: optional string

Unique identifier for the representative 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 represetative in a structured format.

phone: optional string
user_id: optional string

The unique identifier of the user account associated with this representative, if applicable.

meta: object { 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.

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"
representativePaged: object { data, meta, response_type }
data: array of object { id, account_id, created_at, 15 more }
id: string

Unique identifier for the representative.

account_id: string

The unique identifier of the account this representative is associated with.

created_at: string

Timestamp of when the representative was created.

dob: string

The date of birth of the representative, in ISO 8601 format (YYYY-MM-DD).

email: string

The email address of the representative.

first_name: string

The first name of the representative.

last_name: string

The last name of the representative.

mobile_number: string

The mobile phone number of the representative.

name: string
relationship: object { control, owner, primary, 2 more }
control: boolean

Whether the representative has significant responsibility to control, manage, or direct the organization. One representative must be identified under the control prong for each legal entity.

owner: boolean

Whether the representative owns any percentage of of the equity interests of the legal entity.

primary: boolean

Whether the person is authorized as the primary representative of the account. This is the person chosen by the business to provide information about themselves, general information about the account, and who consented to the services agreement.

There can be only one primary representative for an account at a time.

percent_ownership: optional number

The percentage of ownership the representative has. Required if 'Owner' is true.

title: optional string

The job title of the representative.

ssn_last4: string

The last 4 digits of the representative's Social Security Number.

status: "created" or "onboarding" or "active" or 2 more

The current status of the representative.

"created"
"onboarding"
"active"
"rejected"
"inactive"
status_detail: object { 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" or "in_review" or "pending" or 5 more

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

"unverified"
"in_review"
"pending"
"stuck"
"verified"
"failed_verification"
"disabled"
"new"
source: "watchtower"

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

"watchtower"
updated_at: string

Timestamp of the most recent update to the representative.

external_id: optional string

Unique identifier for the representative 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 represetative in a structured format.

phone: optional string
user_id: optional string

The unique identifier of the user account associated with this representative, if applicable.

meta: object { 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.

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 number of items returned in this response.

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"