v2

GET /investors?page=&per=
List of investors

Params

Param name Description
page
optional

Page index

Validations:

  • Must be a Integer

per
optional

Items per page

Validations:

  • Must be a Integer

Examples

{
  'data': [
    {
        'id': 'investor-uuid',
        'sequential_id': 1,
        'full_name': 'Name Example',
        'balance': {
            'mxn': '1000000.00',
            'usd': '0.00'
        },
        'promoter_id': 'promoter-uuid',
        'promoter': {
            'id': 'promoter-uuid',
        'full_name': 'Name Example ',
        },
        'deletable': false
    }
  ],
  'meta': {
    'count': 1
  }
}

Errors

Code Description
400 Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
500 Internal Server Error

GET /investors/widgets
Widgets information for investors

Params

Param name Description
widgets
optional

Widgets information

Validations:

  • Must be a Hash

widgets[count]
optional

Total number of investors

Validations:

  • Must be a Integer

widgets[average_investment_ticket]
optional

Average investment ticket per investor

Validations:

  • Must be a Integer

widgets[count_last_7_days]
optional

Number of new investors in the last 7 days

Validations:

  • Must be a Integer

widgets[count_last_30_days]
optional

Number of new investors in the last 30 days

Validations:

  • Must be a Integer

Examples

{
  'data': {
    'count': 1,
    'average_investment_ticket': {
        'mxn': '$1000000.00',
        'usd': '$0.00'
    },
    'count_last_7_days': 0,
    'count_last_30_days': 1
  }
}

Errors

Code Description
400 Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
500 Internal Server Error

GET /investors/:id
Specific investor

Params

Param name Description
id
required

Requested investor ID

Validations:

  • Must be a String

Examples

{
  'data': {
    'id': 'investor-uuid',
    'sequential_id': 41,
    'code': null,
    'comment': null,
    'name': 'Name',
    'lastname': 'Example',
    'matriname': null,
    'full_name': 'Name Example ',
    'company': false,
    'company_name': null,
    'person_type': 'Persona física',
    'nationality': null,
    'translated_nationality': null,
    'national_id_number': null,
    'phone_number': null,
    'phone_number_extension': null,
    'mobile_number': '5200000000000',
    'gender': null,
    'dob': null,
    'human_readable_dob': null,
    'email': 'example@email.com',
    'admission_date': null,
    'balance': {
        'mxn': '2200000.00',
        'usd': '0.00'
    },
    'active_investment_amount': 1,
    'promoter_id': 'promoter-uuid',
    'created_at': '2026-04-15 - 16:19',
    'updated_at': '2026-04-16 - 17:53',
    'created_by_full_name': 'Name Example ',
    'country': null,
    'country_translated': null,
    'is_financial_entity': false,
    'prospect_id': null,
    'user_created': false,
    'document_type': null,
    'document_number': null,
    'marital_status': null,
    'account_statement_password': null,
    'access_keys_sent': false,
    'extra_fields_attributes': [
        {
            'id': 'extra-field-uuid',
            'value': null,
            'label': 'Categoría',
            'input_type': 'select',
            'options': [
                'Tipo A',
                'Tipo B',
                'Tipo C'
            ],
            'key': 'key_58MN'
        }
    ],
    'subsidiary_id': null,
    'subsidiary_name': null,
    'deletable': false,
    'promoter': {
        'id': 'promoter-uuid',
        'sequential_id': 1,
        'name': 'Name',
        'lastname': 'Example',
        'matriname': null,
        'full_name': 'Name Example',
        'company': true,
        'company_name': 'Name Example',
        'person_type': 'Persona moral',
        'email': 'example@email.com',
        'phone_number': null,
        'phone_number_extension': null,
        'mobile_number': null,
        'gender': null,
        'dob': null,
        'tax_number': null,
        'base_commission': '0.00',
        'organization_id': 'organization-uuid',
        'investors_attracted': 29,
        'nationality': null,
        'translated_nationality': null,
        'active_investors_amount': {
            'mxn': '44551476.81',
            'usd': '0.00'
        },
        'created_at': '2022-09-26 - 18:03',
        'updated_at': '2025-10-13 - 21:46',
        'created_by_full_name': 'Name Example ',
        'country': null,
        'country_translated': null,
        'is_financial_entity': false,
        'subsidiary_id': null,
        'extra_fields_attributes': [
            {
                'id': 'extra-field-uuid',
                'value': null,
                'label': 'Sucursal',
                'input_type': 'select',
                'options': [
                    'Polanco',
                    'Puerta de hierro',
                    'Garza Sada'
                ],
                'key': 'key_30VZ'
            }
        ],
        'subsidiary_name': null
    },
    'contacts': []
  }
}

Errors

Code Description
400 Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
500 Internal Server Error

GET /investors/:id/promissory_notes?page=&per=
Promissory notes from specific investor

Also see promissory_notes#index.

Params

Param name Description
page
optional

Page index

Validations:

  • Must be a Integer

per
optional

Items per page

Validations:

  • Must be a Integer

id
required

Requested investor ID

Validations:

  • Must be a String

Examples

{
  'data': [
    {
      'id': 'promissory-note-uuid',
      'initial_amount': '500000.00',
      'balance': '500000.00',
      'current_balance': '500000.00',
      'parent_id': null,
      'folio': 'INV001-1-mxn',
      'currency': { 'name': 'MXN', 'value': 'mxn' },
      'interest_rate': '12.00',
      'start_date': '2024-01-01',
      'end_date': '2025-01-01',
      'interest_rate_unformatted': '12.00',
      'monthly_periodicity': 12,
      'tax_percentage': '16.00',
      'canceled_date': null,
      'current_tax_percentage': '16.00',
      'cut_day': 1,
      'status': 'Activo',
      'society': {
        'id': 'society-uuid',
        'name': 'Sociedad Ejemplo',
        'business_name': 'Sociedad de Ejemplo S.A. de C.V.',
        'default': true,
        'is_financial_entity': false
      },
      'society_id': 'society-uuid',
      'organization_id': 'org-uuid',
      'investor': {
        'id': 'inv-uuid',
        'name': 'Name',
        'full_name': 'Name Example',
        'company': false,
        'company_name': null
      },
      'investor_id': 'inv-uuid',
      'promoter_id': 'prom-uuid',
      'promoter_commission': '0.00',
      'promoter_payment_method': 'transfer',
      'interest_rate_ceiling': '15.00',
      'interest_rate_floor': '10.00',
      'includes_external_rate': false,
      'variable_rate_days': null,
      'variable_rate_date': null,
      'external_rate_label': null,
      'external_rate_label_translated': null,
      'additional_interest_rate': '0.00',
      'variable_rate_days_translated': '',
      'rate_type': 'Tasa fija',
      'type_of': { 'name': 'Normal', 'value': 'normal' },
      'created_at': '2024-01-01T12:00:00Z',
      'payment_on_expiration?': false,
      'pending_movements': false,
      'updated_at': '2024-01-02T12:00:00Z'
    }
  ],
  'meta': { 'count': 1 }
}

Errors

Code Description
400 Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
500 Internal Server Error

GET /investors/:id/statements?page=&per=
Statements from specific investor

Also see monthly_cuts_statements#index.

Params

Param name Description
page
optional

Page index

Validations:

  • Must be a Integer

per
optional

Items per page

Validations:

  • Must be a Integer

id
required

Requested investor ID

Validations:

  • Must be a String

Examples

{
  'data': [
    {
      'id': 'statement-uuid',
      'initial_amount': '2000000.00',
      'balance': '2200000.00',
      'current_balance': '2200000.00',
      'parent_id': null,
      'folio': 'MXN41-159',
      'currency': { 'name': 'MXN', 'value': 'mxn' },
      'interest_rate': '12.00',
      'start_date': '2026-03-01',
      'end_date': '2026-08-31',
      'interest_rate_unformatted': '12.0',
      'monthly_periodicity': 1,
      'tax_percentage': '0.90',
      'canceled_date': null,
      'current_tax_percentage': '0.90',
      'cut_day': 31,
      'status': 'Activo',
      'status_key': 'active',
      'society': {
        'id': 'society-uuid',
        'name': 'Pruebas',
        'business_name': 'Texto de Prueba',
        'default': true,
        'is_financial_entity': true
      },
      'society_id': 'society-uuid',
      'organization_id': 'org-uuid',
      'investor': {
        'id': 'inv-uuid',
        'name': 'NombrePrueba',
        'full_name': 'Nombre Prueba',
        'company': false,
        'company_name': null
      },
      'investor_id': 'inv-uuid',
      'promoter_id': 'prom-uuid',
      'promoter_commission': '0.00',
      'promoter_payment_method': null,
      'interest_rate_ceiling': '100.00',
      'interest_rate_floor': '0.00',
      'includes_external_rate': false,
      'variable_rate_days': null,
      'variable_rate_date': null,
      'external_rate_label': null,
      'external_rate_label_translated': null,
      'additional_interest_rate': '0.0',
      'variable_rate_days_translated': '',
      'rate_type': 'Fija',
      'type_of': { 'name': 'Simple', 'value': 'simple' },
      'created_at': '2026-04-15 - 16:21',
      'payment_on_expiration?': false,
      'pending_movements': false,
      'updated_at': '2026-04-15 - 16:42'
    }
  ],
  'meta': { 'count': 1 }
}

Errors

Code Description
400 Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
500 Internal Server Error

POST /investors
Create a new investor

Params

Param name Description
investor
required

Investor attributes

Validations:

  • Must be a Hash

investor[name]
required

First name

Validations:

  • Must be a String

investor[lastname]
required

Last name

Validations:

  • Must be a String

investor[matriname]
optional

Second last name

Validations:

  • Must be a String

investor[company]
optional

Whether the investor is a company

Validations:

  • Must be one of: true, false, 1, 0.

investor[company_name]
optional

Company name (required when company is true)

Validations:

  • Must be a String

investor[nationality]
optional

Nationality key (e.g. mexican)

Validations:

  • Must be a String

investor[national_id_number]
optional

CURP or national ID number

Validations:

  • Must be a String

investor[gender]
optional

Gender

Validations:

  • Must be one of: male, female, other.

investor[dob]
optional

Date of birth (YYYY-MM-DD)

Validations:

  • Must be a String

investor[email]
optional

Email address

Validations:

  • Must be a String

investor[phone_number]
optional

Phone number

Validations:

  • Must be a String

investor[phone_number_extension]
optional

Phone extension

Validations:

  • Must be a String

investor[mobile_number]
optional

Mobile number

Validations:

  • Must be a String

investor[country]
optional

Country code

Validations:

  • Must be a String

investor[marital_status]
optional

Marital status

Validations:

  • Must be a String

investor[promoter_id]
optional

Associated promoter UUID

Validations:

  • Must be a String

investor[admission_date]
optional

Admission date (YYYY-MM-DD)

Validations:

  • Must be a String

investor[document_type]
optional

ID document type (e.g. ine)

Validations:

  • Must be a String

investor[document_number]
optional

ID document number

Validations:

  • Must be a String

investor[is_financial_entity]
optional

Whether the investor is a financial entity

Validations:

  • Must be one of: true, false, 1, 0.

investor[prospect_id]
optional

Associated prospect UUID

Validations:

  • Must be a String

investor[code]
optional

Internal code

Validations:

  • Must be a String

investor[account_statement_password]
optional

Password for account statements

Validations:

  • Must be a String

Examples

# Request body:
{
  'investor': {
    'name': 'Test',
    'lastname': 'Martinez',
    'matriname': 'Lopez',
    'company': false,
    'nationality': 'mexican',
    'gender': 'female',
    'dob': '1985-01-01',
    'email': 'test.martinez@example.com',
    'phone_number': '5512345678',
    'mobile_number': '5598765432',
    'country': 'MEX',
    'marital_status': 'single',
    'promoter_id': 'promoter-uuid',
    'admission_date': '2026-05-07',
    'document_type': 'ine',
    'document_number': '123456789',
    'is_financial_entity': false
  }
}

# Response (201 Created):
{
  'data': {
    'id': 'investor-uuid',
    'sequential_id': 187,
    'name': 'Test',
    'lastname': 'Martinez',
    'matriname': 'Lopez',
    'full_name': 'Test Martinez Lopez',
    'company': false,
    'company_name': null,
    'person_type': 'Persona fisica',
    'nationality': 'mexican',
    'translated_nationality': 'mexicano',
    'national_id_number': null,
    'phone_number': '5512345678',
    'mobile_number': '5598765432',
    'gender': 'female',
    'dob': '1985-01-01',
    'email': 'test.martinez@example.com',
    'admission_date': '2026-05-07',
    'balance': { 'mxn': '0.00', 'usd': '0.00' },
    'active_investment_amount': 0,
    'promoter_id': 'promoter-uuid',
    'country': 'mexico',
    'is_financial_entity': false,
    'prospect_id': null,
    'user_created': false,
    'document_type': 'ine',
    'document_number': '123456789',
    'marital_status': 'single',
    'promoter': { ... },
    'contacts': []
  }
}

Errors

Code Description
400 Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
500 Internal Server Error

PUT /investors/:id
Update an existing investor

Params

Param name Description
id
required

Investor ID to update

Validations:

  • Must be a String

investor
required

Investor attributes to update

Validations:

  • Must be a Hash

investor[name]
optional

First name

Validations:

  • Must be a String

investor[lastname]
optional

Last name

Validations:

  • Must be a String

investor[matriname]
optional

Second last name

Validations:

  • Must be a String

investor[company]
optional

Whether the investor is a company

Validations:

  • Must be one of: true, false, 1, 0.

investor[company_name]
optional

Company name

Validations:

  • Must be a String

investor[nationality]
optional

Nationality key (e.g. mexican)

Validations:

  • Must be a String

investor[national_id_number]
optional

CURP or national ID number

Validations:

  • Must be a String

investor[gender]
optional

Gender

Validations:

  • Must be one of: male, female, other.

investor[dob]
optional

Date of birth (YYYY-MM-DD)

Validations:

  • Must be a String

investor[email]
optional

Email address

Validations:

  • Must be a String

investor[phone_number]
optional

Phone number

Validations:

  • Must be a String

investor[phone_number_extension]
optional

Phone extension

Validations:

  • Must be a String

investor[mobile_number]
optional

Mobile number

Validations:

  • Must be a String

investor[country]
optional

Country code

Validations:

  • Must be a String

investor[marital_status]
optional

Marital status

Validations:

  • Must be a String

investor[promoter_id]
optional

Associated promoter UUID

Validations:

  • Must be a String

investor[admission_date]
optional

Admission date (YYYY-MM-DD)

Validations:

  • Must be a String

investor[document_type]
optional

ID document type (e.g. ine)

Validations:

  • Must be a String

investor[document_number]
optional

ID document number

Validations:

  • Must be a String

investor[is_financial_entity]
optional

Whether the investor is a financial entity

Validations:

  • Must be one of: true, false, 1, 0.

investor[code]
optional

Internal code

Validations:

  • Must be a String

investor[account_statement_password]
optional

Password for account statements

Validations:

  • Must be a String

Examples

# Request body:
{
  'investor': {
    'name': 'Test',
    'lastname': 'Investor',
    'email': 'test.investor@example.com',
    'mobile_number': '5512345678'
  }
}

# Response (200 OK): same structure as GET /investors/:id

Errors

Code Description
400 Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
500 Internal Server Error

DELETE /investors/:id
Delete an investor

Params

Param name Description
id
required

Investor ID to delete

Validations:

  • Must be a String

Examples

# Response (204 No Content) on success.
# Response (422 Unprocessable Entity) if the investor cannot be deleted
# (e.g. has active promissory notes).

Errors

Code Description
400 Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
500 Internal Server Error

GET /investors/:id/beneficiaries?page=&per=
Beneficiaries of a specific investor

Also see beneficiaries#index.

Params

Param name Description
id
required

Investor UUID

Validations:

  • Must be a String

page
optional

Page index

Validations:

  • Must be a Integer

per
optional

Items per page

Validations:

  • Must be a Integer

Examples

{
  'data': [
    {
      'id': 'beneficiary-uuid',
      'name': 'Nombre',
      'lastname': 'Apellido Paterno',
      'matriname': 'Apellido Materno',
      'nationality': null,
      'translated_nationality': null,
      'national_id_number': null,
      'phone_number': null,
      'phone_number_extension': null,
      'mobile_number': '5512345678',
      'dob': null,
      'email': 'ejemplo@correo.com',
      'kinship': 'spouse',
      'street': null,
      'street_number': null,
      'street_number_internal': null,
      'zip_code': null,
      'suburb': null,
      'city': null,
      'state': null,
      'country': null,
      'investor': { '...': 'see investors#show' }
    }
  ],
  'meta': { 'count': 1 }
}

Errors

Code Description
400 Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
500 Internal Server Error