API

Ubo

A business profile's ultimate beneficial owners.

Operations

Every route this entity exposes. Each route links to its own reference on this page.

Method Route SDK operation Returns
POST /profiles/{profileId}/ubos create List of all ultimate beneficial owners associated with the business profile
GET /profiles/{profileId}/ubos list List of ultimate beneficial owner objects
PUT /profiles/{profileId}/ubos update List of all ultimate beneficial owners associated with the business profile

Examples

One example per SDK, generated from the API model. The argument names are the parameters and fields of this entity, and the values are placeholders. The examples are not compiled or executed.

Golang

Construct client as shown in the Golang setup, then call the operations:

ubos, err := client.Ubo(nil).List(map[string]any{"profile_id": 1}, nil)
if err != nil {
    panic(err)
}
fmt.Println(ubos)
created, err := client.Ubo(nil).Create(map[string]any{"profile_id": 1}, nil)
if err != nil {
    panic(err)
}
fmt.Println(created)
updated, err := client.Ubo(nil).Update(map[string]any{"profile_id": 1, "ubos": []any{}}, nil)
if err != nil {
    panic(err)
}
fmt.Println(updated)

Lua

Construct client as shown in the Lua setup, then call the operations:

local ubos, err = client:Ubo():list({ profile_id = 1 })
local created, err = client:Ubo():create({ profile_id = 1 })
local updated, err = client:Ubo():update({ profile_id = 1, ubos = {} })

PHP

Construct client as shown in the PHP setup, then call the operations:

$ubos = $client->Ubo()->list(["profile_id" => 1]);
$created = $client->Ubo()->create(["profile_id" => 1]);
$updated = $client->Ubo()->update(["profile_id" => 1, "ubos" => []]);

Python

Construct client as shown in the Python setup, then call the operations:

ubos = client.Ubo().list({"profile_id": 1})
created = client.Ubo().create({ "profile_id": 1 })
updated = client.Ubo().update({"profile_id": 1, "ubos": []})

Ruby

Construct client as shown in the Ruby setup, then call the operations:

ubos = client.Ubo.list({ "profile_id" => 1 })
created = client.Ubo.create({ "profile_id" => 1 })
updated = client.Ubo.update({ "profile_id" => 1, "ubos" => [] })

TypeScript

Construct client as shown in the TypeScript setup, then call the operations:

const ubos = await client.Ubo().list({ profile_id: 1 })
const created = await client.Ubo().create({ profile_id: 1 })
const updated = await client.Ubo().update({ profile_id: 1, ubos: [] })

Fields

Field Type Required Description
addressFirstLine string No First line of address.
city string No City of residential address.
countryOfResidenceIso3Code string No 3 character country code.
dateOfBirth string No Date of birth.
id string No ID of the ultimate beneficial owner.
name string No Owner full name.
ownershipPercentage integer No Percentage of ownership.
postCode string No Address post code.
state string No State or region of residential address.
ubos array No Ubos

create

POST /profiles/{profileId}/ubos

Operation ID: profileUboCreate.

Authentication: bearer token (UserToken).

Parameters

Parameter In Type Required Description
profileId path integer (int64) Yes Business profile ID.
X-External-Correlation-Id header string (uuid) No Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. Learn more.

Request body

application/json

Property Type Required Description
[].addressFirstLine string No First line of residential address. Required if the business profile's registered address is in the EU, EEA or US.
[].city string No City of residential address. Required if countryOfResidenceIso3Code is usa, or if the business profile's registered address is in the EU, EEA or US. Maximum 255 characters.
[].countryOfResidenceIso3Code string Yes 3 character country code.
[].dateOfBirth string Yes Date of birth.
[].documentCountryIso3Code string No Document issuing country as an ISO 3166-1 alpha-3 code.
[].documentId string No Document number or identifier.
[].documentType enum: PASSPORT, NATIONAL_ID, RESIDENCE_PERMIT, DRIVING_LICENSE, CPF No Identification document type.
[].email string No Owner email address.
[].name string Yes Owner full name.
[].nationality string No Nationality as an ISO 3166-1 alpha-2 or alpha-3 country code. Required if the business profile's registered address is in Singapore.
[].ownershipPercentage integer,null (int32) No Percentage of ownership.
[].placeOfBirthCity string No City of birth. Required if the business profile's registered address is in the EU or EEA. Maximum 255 characters.
[].placeOfBirthCountryIso3Code string No Country of birth as an ISO 3166-1 alpha-3 code. Required if the business profile's registered address is in the EU or EEA.
[].postCode string No Residential address post code. Required if the business profile's registered address is in the EU, EEA or US and the country in countryOfResidenceIso3Code uses post codes.
[].state string No State or region of residential address. Required if countryOfResidenceIso3Code is usa, or if the business profile's registered address is in the EU, EEA or US and the country in countryOfResidenceIso3Code has states. Maximum 32 characters.

Responses

201: List of all ultimate beneficial owners associated with the business profile

application/json

Property Type Required Description
[].addressFirstLine string No First line of address.
[].city string No City of residential address.
[].countryOfResidenceIso3Code string No 3 character country code.
[].dateOfBirth string No Date of birth.
[].id string No ID of the ultimate beneficial owner.
[].name string No Owner full name.
[].ownershipPercentage integer,null (int32) No Percentage of ownership.
[].postCode string No Address post code.
[].state string No State or region of residential address.

Example response:

[
  {
    "addressFirstLine": "123 Fake St",
    "city": "Phoenix",
    "countryOfResidenceIso3Code": "usa",
    "dateOfBirth": "1982-05-20",
    "id": "013ab1c2688d0185b582ee7e0bcb28b2",
    "name": "John Doe",
    "ownershipPercentage": 30,
    "postCode": "FK 12345",
    "state": "AZ"
  },
  {
    "addressFirstLine": "125 Fake St",
    "city": "Phoenix",
    "countryOfResidenceIso3Code": "usa",
    "dateOfBirth": "1981-12-07",
    "id": "912ce3f31c8b3a10572137e78417caa3",
    "name": "Jane Doe",
    "ownershipPercentage": 70,
    "postCode": "FK 12545",
    "state": "AZ"
  }
]
400: Validation failed and no owners were saved. Errors are grouped per owner: parameter is the submitted owner, and each entry in its errors list carries one error code in message. Rules are checked one at a time, so a response carries the errors of one rule only. Fix them and resubmit to see any errors from the next rule. Residential address error codes: - AddressLineRequired , addressFirstLine is missing and the business profile's registered address is in the EU, EEA or US - CityRequired , city is missing for an owner whose countryOfResidenceIso3Code is usa, or the business profile's registered address is in the EU, EEA or US - PostCodeRequired , postCode is missing, the business profile's registered address is in the EU, EEA or US, and the owner's country of residence uses post codes - StateRequired , state is missing for an owner whose countryOfResidenceIso3Code is usa, or the business profile's registered address is in the EU, EEA or US and the owner's country of residence has states - CityTooLong , city is longer than 255 characters - StateInvalid , state is longer than 32 characters

application/json

Example response:

{
  "code": "not.valid",
  "errors": [
    {
      "errors": [
        {
          "message": "CityRequired"
        },
        {
          "message": "StateRequired"
        }
      ],
      "parameter": "{\"addressFirstLine\":\"123 Fake St\",\"city\":null,\"countryOfResidenceIso3Code\":\"usa\",\"dateOfBirth\":\"1982-05-20\",\"documentCountryIso3Code\":null,\"documentId\":null,\"documentType\":null,\"email\":null,\"name\":\"John Doe\",\"nationality\":null,\"ownershipPercentage\":30,\"placeOfBirthCity\":null,\"placeOfBirthCountryIso3Code\":null,\"postCode\":\"FK 12345\",\"state\":null}"
    }
  ],
  "message": "Cannot update shareholders for profile 12345 due to validation errors"
}
429: Rate limit exceeded. Retry after the number of seconds specified in the Retry-After header

application/json

The response is object.

list

GET /profiles/{profileId}/ubos

Operation ID: profileUboList.

Authentication: bearer token (UserToken).

Parameters

Parameter In Type Required Description
profileId path integer (int64) Yes Business profile ID.
X-External-Correlation-Id header string (uuid) No Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. Learn more.

Responses

200: List of ultimate beneficial owner objects

application/json

Property Type Required Description
[].addressFirstLine string No First line of address.
[].city string No City of residential address.
[].countryOfResidenceIso3Code string No 3 character country code.
[].dateOfBirth string No Date of birth.
[].id string No ID of the ultimate beneficial owner.
[].name string No Owner full name.
[].ownershipPercentage integer,null (int32) No Percentage of ownership.
[].postCode string No Address post code.
[].state string No State or region of residential address.

Example response:

[
  {
    "addressFirstLine": "123 Fake St",
    "city": "Phoenix",
    "countryOfResidenceIso3Code": "usa",
    "dateOfBirth": "1982-05-20",
    "id": "013ab1c2688d0185b582ee7e0bcb28b2",
    "name": "John Doe",
    "ownershipPercentage": 30,
    "postCode": "FK 12345",
    "state": "AZ"
  },
  {
    "addressFirstLine": "125 Fake St",
    "city": "Phoenix",
    "countryOfResidenceIso3Code": "usa",
    "dateOfBirth": "1981-12-07",
    "id": "912ce3f31c8b3a10572137e78417caa3",
    "name": "Jane Doe",
    "ownershipPercentage": 70,
    "postCode": "FK 12545",
    "state": "AZ"
  }
]
429: Rate limit exceeded. Retry after the number of seconds specified in the Retry-After header

application/json

The response is object.

update

PUT /profiles/{profileId}/ubos

Operation ID: profileUboUpdate.

Authentication: bearer token (UserToken).

Parameters

Parameter In Type Required Description
profileId path integer (int64) Yes Business profile ID.
X-External-Correlation-Id header string (uuid) No Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. Learn more.

Request body

application/json

Property Type Required Description
[].addressFirstLine string No First line of residential address. Required if the business profile's registered address is in the EU, EEA or US.
[].city string No City of residential address. Required if countryOfResidenceIso3Code is usa, or if the business profile's registered address is in the EU, EEA or US. Maximum 255 characters.
[].countryOfResidenceIso3Code string Yes 3 character country code.
[].dateOfBirth string Yes Date of birth.
[].documentCountryIso3Code string No Document issuing country as an ISO 3166-1 alpha-3 code.
[].documentId string No Document number or identifier.
[].documentType enum: PASSPORT, NATIONAL_ID, RESIDENCE_PERMIT, DRIVING_LICENSE, CPF No Identification document type.
[].email string No Owner email address.
[].name string Yes Owner full name.
[].nationality string No Nationality as an ISO 3166-1 alpha-2 or alpha-3 country code. Required if the business profile's registered address is in Singapore.
[].ownershipPercentage integer,null (int32) No Percentage of ownership.
[].placeOfBirthCity string No City of birth. Required if the business profile's registered address is in the EU or EEA. Maximum 255 characters.
[].placeOfBirthCountryIso3Code string No Country of birth as an ISO 3166-1 alpha-3 code. Required if the business profile's registered address is in the EU or EEA.
[].postCode string No Residential address post code. Required if the business profile's registered address is in the EU, EEA or US and the country in countryOfResidenceIso3Code uses post codes.
[].state string No State or region of residential address. Required if countryOfResidenceIso3Code is usa, or if the business profile's registered address is in the EU, EEA or US and the country in countryOfResidenceIso3Code has states. Maximum 32 characters.

Responses

200: List of all ultimate beneficial owners associated with the business profile

application/json

Property Type Required Description
[].addressFirstLine string No First line of address.
[].city string No City of residential address.
[].countryOfResidenceIso3Code string No 3 character country code.
[].dateOfBirth string No Date of birth.
[].id string No ID of the ultimate beneficial owner.
[].name string No Owner full name.
[].ownershipPercentage integer,null (int32) No Percentage of ownership.
[].postCode string No Address post code.
[].state string No State or region of residential address.

Example response:

[
  {
    "addressFirstLine": "123 Fake St",
    "city": "Phoenix",
    "countryOfResidenceIso3Code": "usa",
    "dateOfBirth": "1982-05-20",
    "id": "ff01cf3f206b40c090a14a1e51163e9e",
    "name": "John Doe",
    "ownershipPercentage": 30,
    "postCode": "FK 12345",
    "state": "AZ"
  },
  {
    "addressFirstLine": "125 Fake St",
    "city": "Phoenix",
    "countryOfResidenceIso3Code": "usa",
    "dateOfBirth": "1981-12-07",
    "id": "c36b687d28ad44ad8c3864411f5f2612",
    "name": "Jane Doe",
    "ownershipPercentage": 70,
    "postCode": "FK 12545",
    "state": "AZ"
  }
]
400: Validation failed and no owners were saved. Errors are grouped per owner: parameter is the submitted owner, and each entry in its errors list carries one error code in message. Rules are checked one at a time, so a response carries the errors of one rule only. Fix them and resubmit to see any errors from the next rule. Residential address error codes: - AddressLineRequired , addressFirstLine is missing and the business profile's registered address is in the EU, EEA or US - CityRequired , city is missing for an owner whose countryOfResidenceIso3Code is usa, or the business profile's registered address is in the EU, EEA or US - PostCodeRequired , postCode is missing, the business profile's registered address is in the EU, EEA or US, and the owner's country of residence uses post codes - StateRequired , state is missing for an owner whose countryOfResidenceIso3Code is usa, or the business profile's registered address is in the EU, EEA or US and the owner's country of residence has states - CityTooLong , city is longer than 255 characters - StateInvalid , state is longer than 32 characters

application/json

Example response:

{
  "code": "not.valid",
  "errors": [
    {
      "errors": [
        {
          "message": "CityRequired"
        },
        {
          "message": "StateRequired"
        }
      ],
      "parameter": "{\"addressFirstLine\":\"123 Fake St\",\"city\":null,\"countryOfResidenceIso3Code\":\"usa\",\"dateOfBirth\":\"1982-05-20\",\"documentCountryIso3Code\":null,\"documentId\":null,\"documentType\":null,\"email\":null,\"name\":\"John Doe\",\"nationality\":null,\"ownershipPercentage\":30,\"placeOfBirthCity\":null,\"placeOfBirthCountryIso3Code\":null,\"postCode\":\"FK 12345\",\"state\":null}"
    }
  ],
  "message": "Cannot update shareholders for profile 12345 due to validation errors"
}
429: Rate limit exceeded. Retry after the number of seconds specified in the Retry-After header

application/json

The response is object.