Skip to content
Get started

Onboard an account

AccountV1 Embed.Accounts.Onboard(AccountOnboardParamsparameters, CancellationTokencancellationToken = default)
POST/v1/accounts/{account_id}/onboard

Initiates the onboarding process for a new account. This endpoint can only be used for accounts where at least one representative and one bank account have already been created.

ParametersExpand Collapse
AccountOnboardParams parameters
required string accountID

Path param

formatuuid
required TermsOfServiceV1 termsOfService

Body param

string correlationID

Header param: Optional client generated identifier to trace and debug a series of requests.

string idempotencyKey

Header param: Optional client generated value to use for idempotent requests.

maxLength40
minLength10
string requestID

Header param: Optional client generated identifier to trace and debug a request.

ReturnsExpand Collapse
class AccountV1:
required Data Data
required string ID

Unique identifier for the account.

formatuuid
required AccessLevel AccessLevel

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"Standard
"managed"Managed
required string OrganizationID

The unique identifier of the organization this account belongs to.

formatuuid
required Status Status

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

One of the following:
"created"Created
"onboarding"Onboarding
"active"Active
"rejected"Rejected
"inactive"Inactive
required StatusDetail StatusDetail
required string Code

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

required string Message

A human-readable message describing the current status.

required Reason Reason

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

One of the following:
"unverified"Unverified
"in_review"InReview
"pending"Pending
"stuck"Stuck
"verified"Verified
"failed_verification"FailedVerification
"disabled"Disabled
"terminated"Terminated
"new"New
required Source Source

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

required Type Type

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

BusinessProfileV1 BusinessProfile
required string Name

The operating or trade name of the business.

required string Website

URL of the business's primary marketing website.

formaturi
AddressV1? Address

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

required string? City

City, district, suburb, town, or village.

required string? Line1

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

required string? PostalCode

Postal or ZIP code.

required string? State

Two-letter state code.

string? Country

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

string? Line2

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

string? Description

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

IndustryV1 Industry
string? Category

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

string? Mcc

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

string? Sector

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

The official registered name of the business.

string? Phone

The primary contact phone number for the business.

SupportChannelsV1 SupportChannels
string? Email

The email address for customer support inquiries.

formatemail
string? Phone

The phone number for customer support.

string? Url

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

formaturi
string? TaxID

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

string? UseCase

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

Capabilities Capabilities

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:
required CustomerTypes CustomerTypes
required CapabilityV1 Businesses
required CapabilityStatus CapabilityStatus
One of the following:
"active"Active
"inactive"Inactive
required CapabilityV1 Individuals
required CapabilityStatus CapabilityStatus
One of the following:
"active"Active
"inactive"Inactive
required PaymentTypes PaymentTypes
required CapabilityV1 Charges
required CapabilityStatus CapabilityStatus
One of the following:
"active"Active
"inactive"Inactive
required CapabilityV1 Payouts
required CapabilityStatus CapabilityStatus
One of the following:
"active"Active
"inactive"Inactive
DateTimeOffset? CreatedAt

Timestamp of when the account was created.

formatdate-time
string? ExternalID

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

IReadOnlyDictionary<string, string>? Metadata

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

Settings Settings
required Charges Charges
required Int DailyAmount

The maximum dollar amount of charges in a calendar day.

formatint32
required FundingTime FundingTime

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

One of the following:
"immediate"Immediate
"next_day"NextDay
"one_day"OneDay
"two_day"TwoDay
"three_day"ThreeDay
"four_day"FourDay
"five_day"FiveDay
required string LinkedBankAccountID

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

formatuuid
required Int MaxAmount

The maximum amount of a single charge.

formatint32
required Int MonthlyAmount

The maximum dollar amount of charges in a calendar month.

formatint32
required Int MonthlyCount

The maximum number of charges in a calendar month.

formatint32
required Payouts Payouts
required Int DailyAmount

The maximum dollar amount of payouts in a day.

formatint32
required FundingTime FundingTime

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

One of the following:
"immediate"Immediate
"next_day"NextDay
"one_day"OneDay
"two_day"TwoDay
"three_day"ThreeDay
"four_day"FourDay
"five_day"FiveDay
required string LinkedBankAccountID

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

formatuuid
required Int MaxAmount

The maximum amount of a single payout.

formatint32
required Int MonthlyAmount

The maximum dollar amount of payouts in a month.

formatint32
required Int MonthlyCount

The maximum number of payouts in a month.

formatint32
TermsOfServiceV1 TermsOfService
required DateTimeOffset AcceptedDate

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

formatdate-time
required AgreementType AgreementType

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

One of the following:
"embedded"Embedded
"direct"Direct
required string? AgreementUrl

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

string? AcceptedIP

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

string? AcceptedUserAgent

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

DateTimeOffset? UpdatedAt

Timestamp of the most recent update to the account.

formatdate-time
required ResponseMetadata Meta

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

required string ApiRequestID

Unique identifier for this API request, useful for troubleshooting.

formatuuid
required DateTimeOffset ApiRequestTimestamp

Timestamp for this API request, useful for troubleshooting.

formatdate-time
required ResponseType ResponseType

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"Object
"array"Array
"error"Error
"none"None

Onboard an account

AccountOnboardParams parameters = new()
{
    AccountID = "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
    TermsOfService = new()
    {
        AcceptedDate = DateTimeOffset.Parse("2019-12-27T18:11:19.117Z"),
        AgreementType = AgreementType.Embedded,
        AgreementUrl = "agreement_url",
        AcceptedIP = "accepted_ip",
        AcceptedUserAgent = "accepted_user_agent",
    },
};

var accountV1 = await client.Embed.Accounts.Onboard(parameters);

Console.WriteLine(accountV1);
{
  "data": {
    "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
    "access_level": "standard",
    "organization_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
    "status": "created",
    "status_detail": {
      "code": "code",
      "message": "message",
      "reason": "unverified",
      "source": "watchtower"
    },
    "type": "business",
    "business_profile": {
      "name": "name",
      "website": "https://example.com",
      "address": {
        "city": "city",
        "line1": "line1",
        "postal_code": "21029-1360",
        "state": "SE",
        "country": "country",
        "line2": "line2"
      },
      "description": "description",
      "industry": {
        "category": "category",
        "mcc": "mcc",
        "sector": "sector"
      },
      "legal_name": "legal_name",
      "phone": "+46991022",
      "support_channels": {
        "email": "dev@stainless.com",
        "phone": "+46991022",
        "url": "https://example.com"
      },
      "tax_id": "210297980",
      "use_case": "use_case"
    },
    "capabilities": {
      "consent_types": {
        "internet": {
          "capability_status": "active"
        },
        "signed_agreement": {
          "capability_status": "active"
        }
      },
      "customer_types": {
        "businesses": {
          "capability_status": "active"
        },
        "individuals": {
          "capability_status": "active"
        }
      },
      "payment_types": {
        "charges": {
          "capability_status": "active"
        },
        "payouts": {
          "capability_status": "active"
        }
      }
    },
    "created_at": "2019-12-27T18:11:19.117Z",
    "external_id": "external_id",
    "metadata": {
      "foo": "string"
    },
    "settings": {
      "charges": {
        "daily_amount": 0,
        "funding_time": "immediate",
        "linked_bank_account_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
        "max_amount": 0,
        "monthly_amount": 0,
        "monthly_count": 0
      },
      "payouts": {
        "daily_amount": 0,
        "funding_time": "immediate",
        "linked_bank_account_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
        "max_amount": 0,
        "monthly_amount": 0,
        "monthly_count": 0
      }
    },
    "terms_of_service": {
      "accepted_date": "2019-12-27T18:11:19.117Z",
      "agreement_type": "embedded",
      "agreement_url": "agreement_url",
      "accepted_ip": "accepted_ip",
      "accepted_user_agent": "accepted_user_agent"
    },
    "updated_at": "2019-12-27T18:11:19.117Z"
  },
  "meta": {
    "api_request_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
    "api_request_timestamp": "2019-12-27T18:11:19.117Z"
  },
  "response_type": "object"
}
Returns Examples
{
  "data": {
    "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
    "access_level": "standard",
    "organization_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
    "status": "created",
    "status_detail": {
      "code": "code",
      "message": "message",
      "reason": "unverified",
      "source": "watchtower"
    },
    "type": "business",
    "business_profile": {
      "name": "name",
      "website": "https://example.com",
      "address": {
        "city": "city",
        "line1": "line1",
        "postal_code": "21029-1360",
        "state": "SE",
        "country": "country",
        "line2": "line2"
      },
      "description": "description",
      "industry": {
        "category": "category",
        "mcc": "mcc",
        "sector": "sector"
      },
      "legal_name": "legal_name",
      "phone": "+46991022",
      "support_channels": {
        "email": "dev@stainless.com",
        "phone": "+46991022",
        "url": "https://example.com"
      },
      "tax_id": "210297980",
      "use_case": "use_case"
    },
    "capabilities": {
      "consent_types": {
        "internet": {
          "capability_status": "active"
        },
        "signed_agreement": {
          "capability_status": "active"
        }
      },
      "customer_types": {
        "businesses": {
          "capability_status": "active"
        },
        "individuals": {
          "capability_status": "active"
        }
      },
      "payment_types": {
        "charges": {
          "capability_status": "active"
        },
        "payouts": {
          "capability_status": "active"
        }
      }
    },
    "created_at": "2019-12-27T18:11:19.117Z",
    "external_id": "external_id",
    "metadata": {
      "foo": "string"
    },
    "settings": {
      "charges": {
        "daily_amount": 0,
        "funding_time": "immediate",
        "linked_bank_account_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
        "max_amount": 0,
        "monthly_amount": 0,
        "monthly_count": 0
      },
      "payouts": {
        "daily_amount": 0,
        "funding_time": "immediate",
        "linked_bank_account_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
        "max_amount": 0,
        "monthly_amount": 0,
        "monthly_count": 0
      }
    },
    "terms_of_service": {
      "accepted_date": "2019-12-27T18:11:19.117Z",
      "agreement_type": "embedded",
      "agreement_url": "agreement_url",
      "accepted_ip": "accepted_ip",
      "accepted_user_agent": "accepted_user_agent"
    },
    "updated_at": "2019-12-27T18:11:19.117Z"
  },
  "meta": {
    "api_request_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
    "api_request_timestamp": "2019-12-27T18:11:19.117Z"
  },
  "response_type": "object"
}