Bamboo Invest One Step Registration API

The One Step Registration API from Bamboo Invest — 1 operation(s) for one step registration.

OpenAPI Specification

bamboo-one-step-registration-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Bamboo Account Management One Step Registration API
  version: ''
  description: "Account creation enables users to invest on Bamboo. Ensure KYC has been completed and each user’s identity verified before creating a brokerage account.\n\n**Best Practice:** To avoid maintenance fees on inactive accounts, create and fund brokerage accounts **only when users initiate their first trade**. You may collect account details in advance but delay sending the request until they’re ready to buy.\n\n##### Prerequisites\n- **Minimum Age:** 18 years (verified via government-issued ID)\n- **Compliance:** Must meet local investment regulations\n\n##### Document Requirements\n<table>\n  <thead>\n    <tr>\n      <th>Country</th>\n      <th>Primary ID</th>\n      <th>Image Requirements</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>Nigeria</th>\n      <td>BVN</td>\n      <td>Passport photo</td>\n    </tr>\n    <tr>\n      <th>Ghana</th>\n      <td>National ID</td>\n      <td>Front & back ID images</td>\n    </tr>\n    <tr>\n      <th>South Africa</th>\n      <td>National ID</td>\n      <td>Front & back ID images</td>\n    </tr>\n  </tbody>\n</table>\n\n**Note:** Images must be in Base64 format. The `front_id_image` and `back_id_image` fields apply only to Ghana and South Africa.\n\n##### Phone Number Format\n- Must be in international format (e.g., +2347083864023)\n- Country code must match user’s residence\n- Used for notifications and account security\n"
servers:
- url: https://powered-by-bamboo-sandbox.investbamboo.com
tags:
- name: One Step Registration
paths:
  /api/v2/one_step_registration:
    post:
      tags:
      - One Step Registration
      summary: Create New User
      operationId: Web.Api.RegisterController.registration_step
      description: "This endpoint combines all the registration steps into a single API endpoint. To use this endpoint, you have to provide all \nfields in the defined payload, and also ensure that the user’s ID has been verified. Please note that you are required to \nsubscribe to at least one market on user's first account activation. \n\nA <a href=\"#tag/Dictionaries\"> dictionary endpoint </a> is provided below to give insight into all the questions and acceptable \nvalues for the fields within the payload.\n"
      parameters:
      - name: content-type
        in: header
        description: Acceptable content type
        example: application/json
        required: true
        schema:
          type: string
      - name: accept-language
        in: header
        description: Acceptable language; 'en' for English
        example: en
        required: true
        schema:
          type: string
      - name: x-request-source
        in: header
        description: The tenant's username
        required: true
        schema:
          type: string
      - name: x-client-token
        in: header
        description: API Consumer Authorisation Token
        required: true
        schema:
          type: string
      requestBody:
        description: Register credentials. (Provide details to subscribe to at least one market)
        content:
          application/json:
            schema:
              title: Register request body
              required:
              - basic_info
              - verified_identity_info
              type: object
              properties:
                basic_info:
                  type: object
                  title: User basic info
                  required:
                  - citizenship
                  - city
                  - country_code
                  - date_of_birth
                  - email
                  - first_name
                  - gender
                  - last_name
                  - phone_number
                  - province
                  - postal_code
                  - residence_country_code
                  - surname
                  properties:
                    residence_country_code:
                      type: string
                      description: '''GHA'' for Ghana, ''NGA'' for Nigeria and ''KEN'' for Kenya'
                      example: NGA
                    province:
                      type: string
                      description: Province
                      example: Lagos State
                    postal_code:
                      type: string
                      description: Postal code
                      example: '100001'
                    referral_code:
                      type: string
                      description: Referral code
                      example: '113792'
                    phone_number:
                      type: string
                      description: Phone number
                      example: '+2347083864023'
                    last_name:
                      type: string
                      description: Last Name
                      example: Doe
                    gender:
                      type: string
                      description: 'Gender options: Man/Woman'
                      example: Man
                    first_name:
                      type: string
                      description: First Name
                      example: John
                    email:
                      type: string
                      description: Email
                      example: johndoe@gmail.com
                    date_of_birth:
                      type: string
                      description: Date in format YYYY-MM-DD
                      example: '1927-02-19'
                    country_code:
                      type: string
                      description: 'Country Code: `NGA`, `USA`'
                      example: NGA
                    city:
                      type: string
                      description: Residence City
                      example: Lagos
                    citizenship:
                      type: string
                      description: Citizenship
                      example: Nigerian
                verified_identity_info:
                  type: object
                  title: User verified identity info
                  required:
                  - address
                  - city
                  - date_of_birth
                  - document_type
                  - email
                  - expiration_date
                  - full_name
                  - gender
                  - identifier
                  - image
                  - front_id_image
                  - back_id_image
                  - phone_number
                  - residence_country
                  - state
                  properties:
                    address:
                      type: string
                      description: address
                      example: 22 Babatunde Anjous Lekki
                    city:
                      type: string
                      description: City
                      example: Lekki
                    date_of_birth:
                      type: string
                      description: User date of birth
                      example: 1927/02/19
                    document_type:
                      type: string
                      description: Identification document type
                      example: BVN
                    email:
                      type: string
                      description: User email
                    expiration_date:
                      type: string
                      description: ID expiration date
                      example: 2026/10/10
                    full_name:
                      type: string
                      description: User full name
                      example: John Doe
                    gender:
                      type: string
                      description: 'Gender options: Man/Woman'
                      example: Man
                    identifier:
                      type: string
                      description: Identifier
                      example: '22488743663'
                    image:
                      type: string
                      description: A passport photograph of the user. (Format required is Base64)
                      example: data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAB9gA...
                    front_id_image:
                      type: string
                      description: Front page of a user's Identity document. (Apllicable to Ghana and SA accounts only. Format required is Base64)
                      example: data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAB9gA...
                    back_id_image:
                      type: string
                      description: Back page of a user's Identity document. (Apllicable to Ghana and SA accounts only. Format required is Base64)
                      example: data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAB9gA...
                    phone_number:
                      type: string
                      description: User phone number
                      example: '+2347083864023'
                    residence_country:
                      type: string
                      description: User residence country
                      example: NGA
                    state:
                      type: string
                      description: State
                      example: Lagos
                usx_market_info:
                  type: object
                  title: US Market Info
                  properties:
                    affiliation_info:
                      type: object
                      title: Affiliation info
                      properties:
                        director_of:
                          type: string
                          required: false
                          description: If no, send null. If yes, please list the company name and its ticker symbol.
                          example: ''
                        broker:
                          type: boolean
                          description: If no, send false. If yes, send true
                          example: false
                    brokerage_account_info:
                      type: object
                      title: Brokerage account info
                      required:
                      - company
                      - employment_type
                      - experience
                      - goal
                      - liquid
                      - marital_status
                      - net_worth
                      - position
                      - risk_tolerance
                      - yearly_income
                      - employment_status
                      - source_of_wealth
                      properties:
                        employment_status:
                          type: string
                          description: Employment Status
                          example: SELF_EMPLOYED
                        yearly_income:
                          type: integer
                          description: Yearly Income
                          example: 12500
                        source_of_wealth:
                          type: string
                          description: Source of wealth
                          example: COMPANY
                        risk_tolerance:
                          type: string
                          description: Risk Tolerance
                          example: LOW
                        position:
                          type: string
                          description: Position
                          example: AUDITOR
                        net_worth:
                          type: integer
                          description: Net Worth
                          example: 62500
                        marital_status:
                          type: string
                          description: Martial Status
                          example: MARRIED
                        liquid:
                          type: integer
                          description: User's Liquidity Amount
                          example: 12500
                        goal:
                          type: string
                          description: Goal
                          example: FREQUENT
                        experience:
                          type: string
                          description: Experience
                          example: NONE
                        employment_type:
                          type: string
                          description: Employment Type
                          example: AGRICULTURE
                        company:
                          type: string
                          description: Company
                          example: Phil Technologies LTD.
                ngx_market_info:
                  type: object
                  title: NGX Market Info
                  properties:
                    local_govt:
                      type: string
                      required: false
                      description: Input user state of origin
                      example: Delta
                    city:
                      type: string
                      required: false
                      description: Input user LGA
                      example: Warri North
                    address1:
                      type: string
                      required: false
                      description: Input user resident address
                      example: 520 Ettie Courts
                    mother_maiden_name:
                      type: string
                      required: false
                      description: Mother's maiden name
                      example: Christy
                    next_of_kin_phone_number:
                      type: string
                      required: false
                      description: Next of kin phone number
                      example: Delta
                    next_of_kin_first_name:
                      type: string
                      required: false
                      description: Next of kin first name
                      example: John
                    next_of_kin_last_name:
                      type: string
                      required: false
                      description: Next of kin last name
                      example: Doe
                    account_number:
                      type: string
                      required: true
                      description: Account number for processing Dividends
                      example: 0735904459
                    account_name:
                      type: string
                      description: Account Name
                      example: John Doe
                    destination_branch_code:
                      type: string
                      description: Branch Sort Code for the account details provided
                      example: '044'
                    success:
                      type: boolean
                      description: Success status
                      example: true
        required: true
      responses:
        '200':
          description: Account created
          content:
            application/json:
              schema:
                title: Account info
                required:
                - expiration_time
                - jwt
                - refresh_token
                - user
                type: object
                properties:
                  expiration_time:
                    type: integer
                    description: expiration time
                    example: 1697532406
                  jwt:
                    type: string
                    description: Bearer `jwt`
                    example: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJ3ZWIiLCJleHAiOjE2OTc1MzI0MDYsImlhdCI6MTY5NDk0MDQwNiwiaXNzIjoid2ViIiwianRpIjoiMTE5MGRjMDEtZjQxNS00NmQ3LWFjOTctYzM5M2Y2MWEzYWJjIiwibmJmIjoxNjk0OTQwNDA1LCJyZXNpZGVuY2VfY291bnRyeSI6Ik5HQSIsInN1YiI6NTc3MSwidHlwIjoiYWNjZXNzIn0.GN3THXBJPynv0BcKuWKc84UHexAD22iGtO8A7kSjR92VKxLaiXxz0bDC-CEa8pVKum3oVwjjdRdAXeJL6c4Tsw
                  refresh_token:
                    type: string
                    description: Bearer refresh token
                    example: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJ3ZWIiLCJleHAiOjE2OTczNTk2MDYsImlhdCI6MTY5NDk0MDQwNiwiaXNzIjoid2ViIiwianRpIjoiYWQ4MDA2MzMtMWU4Ny00MGQ0LWFkMTMtNzc4YjY0M2JlNWQwIiwibmJmIjoxNjk0OTQwNDA1LCJyZXNpZGVuY2VfY291bnRyeSI6Ik5HQSIsInN1YiI6NTc3MSwidHlwIjoicmVmcmVzaCJ9.a5Vn2ApDrDBnroDk-7n3neJOuZPDOJxSP29V85rej_eKx4w0JiJ112-tghkSi3xijf0RSkw_AeVq-9sS7bjr0w
                  user:
                    title: Response
                    required:
                    - application_id
                    - bvn_api_fail
                    - date_of_birth
                    - email
                    - first_name
                    - full_name
                    - id
                    - last_name
                    - name
                    - phone_number
                    - registration_step
                    - surname
                    type: object
                    properties:
                      application_id:
                        type: integer
                        description: User's application ID
                        example: 50083181
                      bvn_api_fail:
                        type: boolean
                        description: Field only if BVN api fails
                        example: false
                      date_of_birth:
                        type: string
                        description: User date of birth
                        example: '1927-02-19'
                      email:
                        type: string
                        description: User email
                        example: johndoe@gmail.com
                      first_name:
                        type: string
                        description: User first name
                        example: John
                      full_name:
                        type: string
                        description: User full name
                        example: John Doe
                      id:
                        type: integer
                        description: User's id
                        example: 4101
                      last_name:
                        type: string
                        description: User last name
                        example: Doe
                      name:
                        type: string
                        description: User first name
                        example: John
                      phone_number:
                        type: string
                        description: User phone number
                        example: '+2347083864023'
                      registration_step:
                        type: string
                        description: User's next registration step
                        example: Pending review
                      surname:
                        type: string
                        description: User surname
                        example: Doe
        '401':
          description: Token has expired or invalid token
          content:
            application/json:
              schema:
                title: Unauthorized response
                required:
                - message
                type: object
                properties:
                  message:
                    type: string
                    description: Unauthorized/Invalid Token
                description: Token is invalid or have expired
        '404':
          description: Resource not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceNotFound'
components:
  schemas:
    ResourceNotFound:
      title: Resource not found
      required:
      - message
      type: object
      properties:
        message:
          type: string
          description: Resource not found (an incorrect url may have been used)
          example: Resource Not Found
      description: Error response for when the resource is not found within our data.
x-logo:
  url: bamboo-logo.png
  altText: bamboo logo
x-tagGroups:
- name: Authentication
  tags:
  - Authentication
  - Account Management
- name: Money Movement
  tags:
  - Overview
  - Deposits
  - Withdrawals
- name: US Brokerage Services
  tags:
  - Portfolio Reporting
  - US Securities
  - US Stock Trading
  - US Stock Events
- name: Utilities
  tags:
  - Dictionaries
  - Market Activity
  - Exchange Rate
  - Featured Themes
  - Financial Documents