Skip to content
Get started

Onboard an account

client.Embed.Accounts.Onboard(ctx, accountID, params) (*AccountV1, error)
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
accountID string
params EmbedAccountOnboardParams
TermsOfService param.Field[TermsOfServiceV1]

Body param

CorrelationID param.Field[string]optional

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

IdempotencyKey param.Field[string]optional

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

maxLength40
minLength10
RequestID param.Field[string]optional

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

ReturnsExpand Collapse
type AccountV1 struct{…}
Data AccountV1Data
ID string

Unique identifier for the account.

formatuuid
AccessLevel string

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:
const AccountV1DataAccessLevelStandard AccountV1DataAccessLevel = "standard"
const AccountV1DataAccessLevelManaged AccountV1DataAccessLevel = "managed"
OrganizationID string

The unique identifier of the organization this account belongs to.

formatuuid
Status string

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

One of the following:
const AccountV1DataStatusCreated AccountV1DataStatus = "created"
const AccountV1DataStatusOnboarding AccountV1DataStatus = "onboarding"
const AccountV1DataStatusActive AccountV1DataStatus = "active"
const AccountV1DataStatusRejected AccountV1DataStatus = "rejected"
const AccountV1DataStatusInactive AccountV1DataStatus = "inactive"
StatusDetail AccountV1DataStatusDetail
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 string

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

One of the following:
const AccountV1DataStatusDetailReasonUnverified AccountV1DataStatusDetailReason = "unverified"
const AccountV1DataStatusDetailReasonInReview AccountV1DataStatusDetailReason = "in_review"
const AccountV1DataStatusDetailReasonPending AccountV1DataStatusDetailReason = "pending"
const AccountV1DataStatusDetailReasonStuck AccountV1DataStatusDetailReason = "stuck"
const AccountV1DataStatusDetailReasonVerified AccountV1DataStatusDetailReason = "verified"
const AccountV1DataStatusDetailReasonFailedVerification AccountV1DataStatusDetailReason = "failed_verification"
const AccountV1DataStatusDetailReasonDisabled AccountV1DataStatusDetailReason = "disabled"
const AccountV1DataStatusDetailReasonTerminated AccountV1DataStatusDetailReason = "terminated"
const AccountV1DataStatusDetailReasonNew AccountV1DataStatusDetailReason = "new"
Source string

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

Type string

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

BusinessProfile BusinessProfileV1optional
Name string

The operating or trade name of the business.

Website string

URL of the business's primary marketing website.

formaturi
Address AddressV1optional

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

City string

City, district, suburb, town, or village.

Line1 string

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

PostalCode string

Postal or ZIP code.

State string

Two-letter state code.

Country stringoptional

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

Line2 stringoptional

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

Description stringoptional

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

Industry IndustryV1optional
Category stringoptional

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

Mcc stringoptional

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

Sector stringoptional

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

The official registered name of the business.

Phone stringoptional

The primary contact phone number for the business.

SupportChannels SupportChannelsV1optional
Email stringoptional

The email address for customer support inquiries.

formatemail
Phone stringoptional

The phone number for customer support.

URL stringoptional

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

formaturi
TaxID stringoptional

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

UseCase stringoptional

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

Capabilities AccountV1DataCapabilitiesoptional

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:
CustomerTypes AccountV1DataCapabilitiesCustomerTypes
Businesses CapabilityV1
CapabilityStatus CapabilityV1CapabilityStatus
One of the following:
const CapabilityV1CapabilityStatusActive CapabilityV1CapabilityStatus = "active"
const CapabilityV1CapabilityStatusInactive CapabilityV1CapabilityStatus = "inactive"
Individuals CapabilityV1
CapabilityStatus CapabilityV1CapabilityStatus
One of the following:
const CapabilityV1CapabilityStatusActive CapabilityV1CapabilityStatus = "active"
const CapabilityV1CapabilityStatusInactive CapabilityV1CapabilityStatus = "inactive"
PaymentTypes AccountV1DataCapabilitiesPaymentTypes
Charges CapabilityV1
CapabilityStatus CapabilityV1CapabilityStatus
One of the following:
const CapabilityV1CapabilityStatusActive CapabilityV1CapabilityStatus = "active"
const CapabilityV1CapabilityStatusInactive CapabilityV1CapabilityStatus = "inactive"
Payouts CapabilityV1
CapabilityStatus CapabilityV1CapabilityStatus
One of the following:
const CapabilityV1CapabilityStatusActive CapabilityV1CapabilityStatus = "active"
const CapabilityV1CapabilityStatusInactive CapabilityV1CapabilityStatus = "inactive"
CreatedAt Timeoptional

Timestamp of when the account was created.

formatdate-time
ExternalID stringoptional

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

Metadata map[string, string]optional

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

Settings AccountV1DataSettingsoptional
Charges AccountV1DataSettingsCharges
DailyAmount int64

The maximum dollar amount of charges in a calendar day.

formatint32
FundingTime string

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

One of the following:
const AccountV1DataSettingsChargesFundingTimeImmediate AccountV1DataSettingsChargesFundingTime = "immediate"
const AccountV1DataSettingsChargesFundingTimeNextDay AccountV1DataSettingsChargesFundingTime = "next_day"
const AccountV1DataSettingsChargesFundingTimeOneDay AccountV1DataSettingsChargesFundingTime = "one_day"
const AccountV1DataSettingsChargesFundingTimeTwoDay AccountV1DataSettingsChargesFundingTime = "two_day"
const AccountV1DataSettingsChargesFundingTimeThreeDay AccountV1DataSettingsChargesFundingTime = "three_day"
const AccountV1DataSettingsChargesFundingTimeFourDay AccountV1DataSettingsChargesFundingTime = "four_day"
const AccountV1DataSettingsChargesFundingTimeFiveDay AccountV1DataSettingsChargesFundingTime = "five_day"
LinkedBankAccountID string

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

formatuuid
MaxAmount int64

The maximum amount of a single charge.

formatint32
MonthlyAmount int64

The maximum dollar amount of charges in a calendar month.

formatint32
MonthlyCount int64

The maximum number of charges in a calendar month.

formatint32
Payouts AccountV1DataSettingsPayouts
DailyAmount int64

The maximum dollar amount of payouts in a day.

formatint32
FundingTime string

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

One of the following:
const AccountV1DataSettingsPayoutsFundingTimeImmediate AccountV1DataSettingsPayoutsFundingTime = "immediate"
const AccountV1DataSettingsPayoutsFundingTimeNextDay AccountV1DataSettingsPayoutsFundingTime = "next_day"
const AccountV1DataSettingsPayoutsFundingTimeOneDay AccountV1DataSettingsPayoutsFundingTime = "one_day"
const AccountV1DataSettingsPayoutsFundingTimeTwoDay AccountV1DataSettingsPayoutsFundingTime = "two_day"
const AccountV1DataSettingsPayoutsFundingTimeThreeDay AccountV1DataSettingsPayoutsFundingTime = "three_day"
const AccountV1DataSettingsPayoutsFundingTimeFourDay AccountV1DataSettingsPayoutsFundingTime = "four_day"
const AccountV1DataSettingsPayoutsFundingTimeFiveDay AccountV1DataSettingsPayoutsFundingTime = "five_day"
LinkedBankAccountID string

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

formatuuid
MaxAmount int64

The maximum amount of a single payout.

formatint32
MonthlyAmount int64

The maximum dollar amount of payouts in a month.

formatint32
MonthlyCount int64

The maximum number of payouts in a month.

formatint32
TermsOfService TermsOfServiceV1optional
AcceptedDate Time

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

formatdate-time
AgreementType TermsOfServiceV1AgreementType

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

One of the following:
const TermsOfServiceV1AgreementTypeEmbedded TermsOfServiceV1AgreementType = "embedded"
const TermsOfServiceV1AgreementTypeDirect TermsOfServiceV1AgreementType = "direct"
AgreementURL string

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

AcceptedIP stringoptional

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

AcceptedUserAgent stringoptional

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

UpdatedAt Timeoptional

Timestamp of the most recent update to the account.

formatdate-time

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

APIRequestID string

Unique identifier for this API request, useful for troubleshooting.

formatuuid
APIRequestTimestamp Time

Timestamp for this API request, useful for troubleshooting.

formatdate-time
ResponseType AccountV1ResponseType

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:
const AccountV1ResponseTypeObject AccountV1ResponseType = "object"
const AccountV1ResponseTypeArray AccountV1ResponseType = "array"
const AccountV1ResponseTypeError AccountV1ResponseType = "error"
const AccountV1ResponseTypeNone AccountV1ResponseType = "none"

Onboard an account

package main

import (
  "context"
  "fmt"
  "time"

  "github.com/straddleio/straddle-go"
  "github.com/straddleio/straddle-go/option"
)

func main() {
  client := straddle.NewClient(
    option.WithAPIKey("My API Key"),
  )
  accountV1, err := client.Embed.Accounts.Onboard(
    context.TODO(),
    "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
    straddle.EmbedAccountOnboardParams{
      TermsOfService: straddle.TermsOfServiceV1Param{
        AcceptedDate: time.Now(),
        AgreementType: straddle.TermsOfServiceV1AgreementTypeEmbedded,
        AgreementURL: straddle.String("agreement_url"),
      },
    },
  )
  if err != nil {
    panic(err.Error())
  }
  fmt.Printf("%+v\n", accountV1.Data)
}
{
  "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"
}