Replaces the business’s entire set of beneficial owners. Entries carrying an id are updated, entries without one are created, and any person the payload omits is deleted.
Replace rather than patch because ownership percentages are only meaningful as a set: their total is validated across all entries, so a partial update has no coherent meaning. Read the current set first, modify it, and send it back whole.
Recording an fx-account-holder is what unblocks international-fx accounts. Check GET /limitations afterwards to confirm nothing else is outstanding.
The person's home address. Unlike a counterparty address this may be in the US — send countryCode: US for a US resident.
Hide child attributes
data.address.line1
string
required
Street address. Must be a real street address, not a PO box.
data.address.city
string
required
data.address.postalCode
string
required
data.address.countryCode
string
required
Two-letter ISO 3166-1 alpha-2 country code.
Pattern: ^[A-Za-z]{2}$
data.address.line2
string
data.address.state
string
State, province or region. Optional — send an empty string where the country has none.
data.usResident
boolean
required
data.types
enum<string>[]
required
Minimum array length: 1
The role a person holds in the business. ubo is an ultimate beneficial owner (someone with a material ownership stake), director is a control person, and fx-account-holder is the individual who acts for the business on its international (FX) payments. One person may hold several roles; exactly one person must be the fx-account-holder.
Available options:
ubo,
director,
fx-account-holder
data.id
integer
The id of an existing person to update. Omit to create.
data.ownershipPercentage
number
Share of the business held, as a decimal (0.25 = 25%). Required for anyone whose types include ubo. The total across all ubo entries is validated as a set, so send the complete set in one request.
Required range: 0 <= x <= 1
data.jobTitle
enum<string>
Available options:
chief-executive-officer,
chief-financial-officer,
managing-member,
general-partner,
president,
vice-president,
treasurer
data.taxInfo
object
Required when usResident is true.
Hide child attributes
data.taxInfo.type
enum<string>
required
Available options:
ssn,
itin
data.taxInfo.identifier
string
required
9-digit identifier, optionally dash-separated.
Pattern: ^[0-9]{3}-?[0-9]{2}-?[0-9]{4}$
data.internationalIdType
enum<string>
Required when usResident is false.
Available options:
passport,
driver-license,
national-id
data.internationalId
string
Required when usResident is false.
data.email
string<email>
data.phoneNumber
string
data.identityDocument
object
A scan or photo of this person's government-issued ID, uploaded with POST /attachments.
Optional in general. It is required in exactly two cases, and the request is rejected with 400 VALIDATION_ERROR naming the person if it is absent: when usResident is false, or for every beneficial owner when the entity's businessType is sole-proprietorship — including US residents.
Only the front is required. Send backAttachmentId as well when the ID has a back (a driver's licence or national ID) and you have it.
Write-only: BeneficialOwner reports hasIdentityDocument and never a reference to the file.
Hide child attributes
data.identityDocument.frontAttachmentId
string
required
Attachment id (att_) of the front of the ID.
Example:
"att_9f8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d"
data.identityDocument.backAttachmentId
string
Attachment id of the back, where the ID has one. Must differ from the front.
Response
The business's beneficial owners after the replacement.
data
object[]
required
Hide child attributes
data.id
integer
required
data.firstName
string
required
data.lastName
string
required
data.dateOfBirth
string<date>
required
data.address
object
required
A counterparty address outside the US. Unlike Address, state is free-form (most countries have no state; send an empty string or omit it) and postalCode is not a US ZIP. countryCode is required and must not be US — a US-domiciled counterparty belongs on a domestic account type.
Hide child attributes
data.address.line1
string
required
Street address. Must be a real street address, not a PO box.
data.address.city
string
required
data.address.postalCode
string
required
data.address.countryCode
string
required
Two-letter ISO 3166-1 alpha-2 country code.
Pattern: ^[A-Za-z]{2}$
data.address.line2
string
data.address.state
string
State, province or region. Optional — send an empty string where the country has none.
data.usResident
boolean
required
data.hasIdentityDocument
boolean
required
Whether a government ID is on file for this person. The document itself cannot be read back through this API.
data.types
enum<string>[]
required
The role a person holds in the business. ubo is an ultimate beneficial owner (someone with a material ownership stake), director is a control person, and fx-account-holder is the individual who acts for the business on its international (FX) payments. One person may hold several roles; exactly one person must be the fx-account-holder.
{"docsConfig":{"theme":"sequoia","$schema":"https://mintlify.com/docs.json","name":"Melio Payouts API","colors":{"primary":"#7849ff","light":"#b79eff","dark":"#5f33e6"},"logo":{"light":"https://mintcdn.com/melio/xvWXKzlr8EBNoRDW/images/melio-wordmark.svg?fit=max\u0026auto=format\u0026n=xvWXKzlr8EBNoRDW\u0026q=85\u0026s=64c5b00a44de83a5745e570ecf3d0fc2","dark":"https://mintcdn.com/melio/-5UmKJJuHDVMiDrl/images/melio-wordmark-invert.svg?fit=max\u0026auto=format\u0026n=-5UmKJJuHDVMiDrl\u0026q=85\u0026s=d39c348234f65d6b306ccd6084ebbc01","href":"https://melio.com/"},"favicon":{"light":"https://mintcdn.com/melio/J5BJFv_c5fQarBeJ/images/cropped-Melio_favicon_01-64x64.webp?fit=max\u0026auto=format\u0026n=J5BJFv_c5fQarBeJ\u0026q=85\u0026s=9f502b845554081800303c51cbf82a7c","dark":"https://mintcdn.com/melio/J5BJFv_c5fQarBeJ/images/cropped-Melio_favicon_01-64x64.webp?fit=max\u0026auto=format\u0026n=J5BJFv_c5fQarBeJ\u0026q=85\u0026s=9f502b845554081800303c51cbf82a7c"},"api":{"openapi":"openapi.json","params":{"expanded":"all"},"playground":{"display":"interactive"},"examples":{"defaults":"all","languages":["typescript","python","curl","java","ruby","go"],"prefill":true,"autogenerate":true},"url":"full","mdx":{"auth":{"method":"basic","name":"api-key"},"server":["https://api.staging01.melio.com","https://api.melio.com"]}},"background":{"color":{"dark":"#262D38"}},"navbar":{"links":[{"href":"https://developers.melio.com/contact","label":"Contact us"},{"href":"https://developers.melio.com/sign-in","label":"Log in"}],"primary":{"type":"button","label":"Sign up for beta","href":"https://developers.melio.com/sign-up"}},"seo":{"indexing":"navigable"},"fonts":{"family":"Inter"},"icons":{"library":"lucide"},"integrations":{"segment":{"key":"EJ3N2VRhwnd0eFx5CFt1BobojP0OF4GS"}},"markdown":{"schema":true},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"melio","hasAudioNarration":false,"actualSubdomain":"melio","customDomains":["developers.melio.com"],"gitSource":{"type":"github","owner":"melio","repo":"payouts-api-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":"","_id":"6ae0ec738cfebfdf07ee030c"},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af47aa92d65da0928c63ec7","clientVersion":"0.0.4143","searchFilterCounts":[{"language":"default","tag":"Documentation","count":32},{"language":"default","tag":"API Reference","count":24},{"language":"default","tag":"Tools","count":10},{"language":"default","tag":"Building with the API","count":8},{"language":"default","tag":"Entities","count":7},{"language":"default","tag":"Core resources","count":6},{"language":"default","tag":"Risk, compliance \u0026 going live","count":6},{"language":"default","tag":"Accounts","count":6},{"language":"default","tag":"Payments","count":6},{"language":"default","tag":"Get started","count":3}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"/docs","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":".sidebar-group-header{font-size:0.9rem!important;font-weight:500!important;letter-spacing:0.01em}#page-title{font-size:2rem;line-height:1.25}#header .eyebrow{font-size:0.7rem!important}#header .prose{font-size:1rem!important}"}],"page":{"pagePath":"api-reference/entities/replace-beneficial-owners","slug":"/api-reference/entities/replace-beneficial-owners","pageMetadata":{"title":"Replace beneficial owners","description":"Replaces the business's entire set of beneficial owners. Entries carrying an `id` are updated, entries without one are created, and **any person the payload omits is deleted**.\n\nReplace rather than patch because ownership percentages are only meaningful as a set: their total is validated across all entries, so a partial update has no coherent meaning. Read the current set first, modify it, and send it back whole.\n\nRecording an `fx-account-holder` is what unblocks `international-fx` accounts. Check `GET /limitations` afterwards to confirm nothing else is outstanding.\n","deprecated":null,"version":null,"openapi":"/openapi.json put /entities/{entityId}/beneficial-owners","href":"/api-reference/entities/replace-beneficial-owners","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n strong: \"strong\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Replaces the business’s entire set of beneficial owners. Entries carrying an \", _jsx(_components.code, {\n children: \"id\"\n }), \" are updated, entries without one are created, and \", _jsx(_components.strong, {\n children: \"any person the payload omits is deleted\"\n }), \".\"]\n }), \"\\n\", _jsx(_components.p, {\n children: \"Replace rather than patch because ownership percentages are only meaningful as a set: their total is validated across all entries, so a partial update has no coherent meaning. Read the current set first, modify it, and send it back whole.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Recording an \", _jsx(_components.code, {\n children: \"fx-account-holder\"\n }), \" is what unblocks \", _jsx(_components.code, {\n children: \"international-fx\"\n }), \" accounts. Check \", _jsx(_components.code, {\n children: \"GET /limitations\"\n }), \" afterwards to confirm nothing else is outstanding.\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Replace beneficial owners","description":"Replaces the business's entire set of beneficial owners. Entries carrying an `id` are updated, entries without one are created, and **any person the payload omits is deleted**.\n\nReplace rather than patch because ownership percentages are only meaningful as a set: their total is validated across all entries, so a partial update has no coherent meaning. Read the current set first, modify it, and send it back whole.\n\nRecording an `fx-account-holder` is what unblocks `international-fx` accounts. Check `GET /limitations` afterwards to confirm nothing else is outstanding.\n","deprecated":null,"version":null,"openapi":"/openapi.json put /entities/{entityId}/beneficial-owners","href":"/api-reference/entities/replace-beneficial-owners","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Entities"],"summary":"Replace beneficial owners","description":"Replaces the business's entire set of beneficial owners. Entries carrying an `id` are updated, entries without one are created, and **any person the payload omits is deleted**.\n\nReplace rather than patch because ownership percentages are only meaningful as a set: their total is validated across all entries, so a partial update has no coherent meaning. Read the current set first, modify it, and send it back whole.\n\nRecording an `fx-account-holder` is what unblocks `international-fx` accounts. Check `GET /limitations` afterwards to confirm nothing else is outstanding.\n","security":["64a84fc3-3976-4ee2-a7a0-6d6cdd6626de"],"requestBody":"d45255e6-179c-470e-a0d8-9362bab47b41","responses":{"200":"a61aeffd-eee9-475d-aed2-dd70b9bc4d8b","400":"ac5ca5f6-bb7f-43a5-87b1-e010fd71efe8","404":"54ed99d1-eb9c-4935-b8f4-3a97fd9061c7"},"method":"put","type":"path","servers":["11023ec5-d3f9-4571-b97f-e305433ac479","a9b4dcdc-ad19-4ca1-80f3-760819968e97"],"path":"/entities/{entityId}/beneficial-owners","baseUrlOptions":["https://api.melio.com/v2","https://api.staging01.melio.com/v2"],"title":"Replace beneficial owners","codeSamples":[],"requestExampleLanguages":["typescript","python","bash","java","ruby","go"],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated","prefillPlaygroundWithExample":true,"prefillPlaygroundExamples":[{"body.data.items.0.firstName":"Dana","body.data.items.0.lastName":"Okonjo","body.data.items.0.dateOfBirth":"1984-03-11","body.data.items.0.address.line1":"500 Congress Ave","body.data.items.0.address.city":"Austin","body.data.items.0.address.postalCode":"78701","body.data.items.0.address.countryCode":"US","body.data.items.0.address.state":"TX","body.data.items.0.usResident":true,"body.data.items.0.types.items.0":"ubo","body.data.items.0.types.items.1":"director","body.data.items.0.types.items.2":"fx-account-holder","body.data.items.0.ownershipPercentage":0.6,"body.data.items.0.jobTitle":"chief-executive-officer","body.data.items.0.taxInfo.type":"ssn","body.data.items.0.taxInfo.identifier":"123-45-6789","body.data.items.0.email":"[email protected]"}],"urlDisplay":"full"},"dependencies":{"parameters":{"0ccce7f8-3d7a-4c7d-838f-5330608e153c":{"name":"entityId","in":"path","required":true,"schema":{"type":"string","isRequired":true,"uniqueKey":"","typeLabel":"string"}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"type":"object","description":"A person to record against the business. Supply `id` to update the person with that id; omit it to create a new one.\n\nIdentification depends on residency: a US resident must have `taxInfo` (an SSN or ITIN), and a non-US resident must have `internationalIdType` and `internationalId`.\n","required":["firstName","lastName","dateOfBirth","address","usResident","types"],"properties":{"firstName":{"type":"string","minLength":2,"isRequired":true,"uniqueKey":"data.items.[INDEX].firstName","typeLabel":"string"},"lastName":{"type":"string","minLength":2,"isRequired":true,"uniqueKey":"data.items.[INDEX].lastName","typeLabel":"string"},"dateOfBirth":{"type":"string","format":"date","isRequired":true,"uniqueKey":"data.items.[INDEX].dateOfBirth","typeLabel":"string\u003cdate>"},"address":{"type":"object","description":"The person's home address. Unlike a counterparty address this may be in the US — send `countryCode: US` for a US resident.\n","required":["line1","city","postalCode","countryCode"],"properties":{"line1":{"type":"string","description":"Street address. Must be a real street address, not a PO box.","isRequired":true,"uniqueKey":"data.items.[INDEX].address.line1","typeLabel":"string"},"city":{"type":"string","isRequired":true,"uniqueKey":"data.items.[INDEX].address.city","typeLabel":"string"},"postalCode":{"type":"string","isRequired":true,"uniqueKey":"data.items.[INDEX].address.postalCode","typeLabel":"string"},"countryCode":{"type":"string","description":"Two-letter ISO 3166-1 alpha-2 country code.","pattern":"^[A-Za-z]{2}$","isRequired":true,"uniqueKey":"data.items.[INDEX].address.countryCode","typeLabel":"string"},"line2":{"type":"string","uniqueKey":"data.items.[INDEX].address.line2","typeLabel":"string"},"state":{"type":"string","description":"State, province or region. Optional — send an empty string where the country has none.","uniqueKey":"data.items.[INDEX].address.state","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.items.[INDEX].address","typeLabel":"object"},"usResident":{"type":"boolean","isRequired":true,"uniqueKey":"data.items.[INDEX].usResident","typeLabel":"boolean"},"types":{"type":"array","minItems":1,"items":{"type":"string","description":"The role a person holds in the business. `ubo` is an ultimate beneficial owner (someone with a material ownership stake), `director` is a control person, and `fx-account-holder` is the individual who acts for the business on its international (FX) payments. One person may hold several roles; exactly one person must be the `fx-account-holder`.\n","enum":["ubo","director","fx-account-holder"],"uniqueKey":"data.items.[INDEX].types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"isRequired":true,"uniqueKey":"data.items.[INDEX].types","typeLabel":"enum\u003cstring>[]"},"id":{"type":"integer","description":"The id of an existing person to update. Omit to create.","uniqueKey":"data.items.[INDEX].id","typeLabel":"integer"},"ownershipPercentage":{"type":"number","minimum":0,"maximum":1,"description":"Share of the business held, as a decimal (0.25 = 25%). Required for anyone whose `types` include `ubo`. The total across all `ubo` entries is validated as a set, so send the complete set in one request.\n","uniqueKey":"data.items.[INDEX].ownershipPercentage","typeLabel":"number"},"jobTitle":{"type":"string","enum":["chief-executive-officer","chief-financial-officer","managing-member","general-partner","president","vice-president","treasurer"],"uniqueKey":"data.items.[INDEX].jobTitle","typeLabel":"enum\u003cstring>"},"taxInfo":{"type":"object","description":"Required when `usResident` is true.","required":["type","identifier"],"properties":{"type":{"type":"string","enum":["ssn","itin"],"isRequired":true,"uniqueKey":"data.items.[INDEX].taxInfo.type","typeLabel":"enum\u003cstring>"},"identifier":{"type":"string","description":"9-digit identifier, optionally dash-separated.","pattern":"^[0-9]{3}-?[0-9]{2}-?[0-9]{4}$","isRequired":true,"uniqueKey":"data.items.[INDEX].taxInfo.identifier","typeLabel":"string"}},"uniqueKey":"data.items.[INDEX].taxInfo","typeLabel":"object"},"internationalIdType":{"type":"string","enum":["passport","driver-license","national-id"],"description":"Required when `usResident` is false.","uniqueKey":"data.items.[INDEX].internationalIdType","typeLabel":"enum\u003cstring>"},"internationalId":{"type":"string","description":"Required when `usResident` is false.","uniqueKey":"data.items.[INDEX].internationalId","typeLabel":"string"},"email":{"type":"string","format":"email","uniqueKey":"data.items.[INDEX].email","typeLabel":"string\u003cemail>"},"phoneNumber":{"type":"string","uniqueKey":"data.items.[INDEX].phoneNumber","typeLabel":"string"},"identityDocument":{"type":"object","description":"A scan or photo of this person's government-issued ID, uploaded with `POST /attachments`.\n\nOptional in general. It is required in exactly two cases, and the request is rejected with `400 VALIDATION_ERROR` naming the person if it is absent: when `usResident` is `false`, or for **every** beneficial owner when the entity's `businessType` is `sole-proprietorship` — including US residents.\n\nOnly the front is required. Send `backAttachmentId` as well when the ID has a back (a driver's licence or national ID) and you have it.\n\nWrite-only: `BeneficialOwner` reports `hasIdentityDocument` and never a reference to the file.\n","required":["frontAttachmentId"],"properties":{"frontAttachmentId":{"type":"string","description":"Attachment id (att_\u003cid>) of the front of the ID.","example":"att_9f8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d","isRequired":true,"uniqueKey":"data.items.[INDEX].identityDocument.frontAttachmentId","typeLabel":"string"},"backAttachmentId":{"type":"string","description":"Attachment id of the back, where the ID has one. Must differ from the front.","uniqueKey":"data.items.[INDEX].identityDocument.backAttachmentId","typeLabel":"string"}},"uniqueKey":"data.items.[INDEX].identityDocument","typeLabel":"object"}},"uniqueKey":"data.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"example":{"data":[{"firstName":"Dana","lastName":"Okonjo","dateOfBirth":"1984-03-11","address":{"line1":"500 Congress Ave","city":"Austin","state":"TX","postalCode":"78701","countryCode":"US"},"usResident":true,"ownershipPercentage":0.6,"jobTitle":"chief-executive-officer","taxInfo":{"type":"ssn","identifier":"123-45-6789"},"types":["ubo","director","fx-account-holder"],"email":"[email protected]"}]},"examples":{"Example":{"title":"Example","value":{"data":[{"firstName":"Dana","lastName":"Okonjo","dateOfBirth":"1984-03-11","address":{"line1":"500 Congress Ave","city":"Austin","state":"TX","postalCode":"78701","countryCode":"US"},"usResident":true,"ownershipPercentage":0.6,"jobTitle":"chief-executive-officer","taxInfo":{"type":"ssn","identifier":"123-45-6789"},"types":["ubo","director","fx-account-holder"],"email":"[email protected]"}]}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"a61aeffd-eee9-475d-aed2-dd70b9bc4d8b":{"description":"The business's beneficial owners after the replacement.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"type":"object","description":"A person recorded against the business. Identifiers are never echoed in full — `taxInfo` reports only the last four digits, and `internationalId` only its last four characters.\n","required":["id","firstName","lastName","dateOfBirth","address","usResident","types","hasIdentityDocument"],"properties":{"id":{"type":"integer","isRequired":true,"uniqueKey":"data.items.[INDEX].id","typeLabel":"integer"},"firstName":{"type":"string","isRequired":true,"uniqueKey":"data.items.[INDEX].firstName","typeLabel":"string"},"lastName":{"type":"string","isRequired":true,"uniqueKey":"data.items.[INDEX].lastName","typeLabel":"string"},"dateOfBirth":{"type":"string","format":"date","isRequired":true,"uniqueKey":"data.items.[INDEX].dateOfBirth","typeLabel":"string\u003cdate>"},"address":{"type":"object","description":"A counterparty address outside the US. Unlike `Address`, `state` is free-form (most countries have no state; send an empty string or omit it) and `postalCode` is not a US ZIP. `countryCode` is required and must not be `US` — a US-domiciled counterparty belongs on a domestic account type.\n","required":["line1","city","postalCode","countryCode"],"properties":{"line1":{"type":"string","description":"Street address. Must be a real street address, not a PO box.","isRequired":true,"uniqueKey":"data.items.[INDEX].address.line1","typeLabel":"string"},"city":{"type":"string","isRequired":true,"uniqueKey":"data.items.[INDEX].address.city","typeLabel":"string"},"postalCode":{"type":"string","isRequired":true,"uniqueKey":"data.items.[INDEX].address.postalCode","typeLabel":"string"},"countryCode":{"type":"string","description":"Two-letter ISO 3166-1 alpha-2 country code.","pattern":"^[A-Za-z]{2}$","isRequired":true,"uniqueKey":"data.items.[INDEX].address.countryCode","typeLabel":"string"},"line2":{"type":"string","uniqueKey":"data.items.[INDEX].address.line2","typeLabel":"string"},"state":{"type":"string","description":"State, province or region. Optional — send an empty string where the country has none.","uniqueKey":"data.items.[INDEX].address.state","typeLabel":"string"}},"isRequired":true,"uniqueKey":"data.items.[INDEX].address","typeLabel":"object"},"usResident":{"type":"boolean","isRequired":true,"uniqueKey":"data.items.[INDEX].usResident","typeLabel":"boolean"},"hasIdentityDocument":{"type":"boolean","description":"Whether a government ID is on file for this person. The document itself cannot be read back through this API.\n","isRequired":true,"uniqueKey":"data.items.[INDEX].hasIdentityDocument","typeLabel":"boolean"},"types":{"type":"array","items":{"type":"string","description":"The role a person holds in the business. `ubo` is an ultimate beneficial owner (someone with a material ownership stake), `director` is a control person, and `fx-account-holder` is the individual who acts for the business on its international (FX) payments. One person may hold several roles; exactly one person must be the `fx-account-holder`.\n","enum":["ubo","director","fx-account-holder"],"uniqueKey":"data.items.[INDEX].types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"isRequired":true,"uniqueKey":"data.items.[INDEX].types","typeLabel":"enum\u003cstring>[]"},"ownershipPercentage":{"type":"number","description":"Decimal share (0.25 = 25%)","uniqueKey":"data.items.[INDEX].ownershipPercentage","typeLabel":"number"},"jobTitle":{"type":"string","enum":["chief-executive-officer","chief-financial-officer","managing-member","general-partner","president","vice-president","treasurer"],"uniqueKey":"data.items.[INDEX].jobTitle","typeLabel":"enum\u003cstring>"},"taxInfo":{"type":"object","properties":{"type":{"type":"string","enum":["ssn","itin"],"uniqueKey":"data.items.[INDEX].taxInfo.type","typeLabel":"enum\u003cstring>"},"identifierLast4":{"type":"string","uniqueKey":"data.items.[INDEX].taxInfo.identifierLast4","typeLabel":"string"}},"uniqueKey":"data.items.[INDEX].taxInfo","typeLabel":"object"},"internationalIdType":{"type":"string","enum":["passport","driver-license","national-id"],"uniqueKey":"data.items.[INDEX].internationalIdType","typeLabel":"enum\u003cstring>"},"internationalId":{"type":"string","description":"Last four characters of the identifier on file","uniqueKey":"data.items.[INDEX].internationalId","typeLabel":"string"},"email":{"type":"string","uniqueKey":"data.items.[INDEX].email","typeLabel":"string"},"phoneNumber":{"type":"string","uniqueKey":"data.items.[INDEX].phoneNumber","typeLabel":"string"},"createdAt":{"type":"string","format":"date-time","uniqueKey":"data.items.[INDEX].createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","uniqueKey":"data.items.[INDEX].updatedAt","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"data.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"data":[{"id":123,"firstName":"\u003cstring>","lastName":"\u003cstring>","dateOfBirth":"2023-12-25","address":{"line1":"\u003cstring>","city":"\u003cstring>","postalCode":"\u003cstring>","countryCode":"\u003cstring>","line2":"\u003cstring>","state":"\u003cstring>"},"usResident":true,"hasIdentityDocument":true,"types":["ubo"],"ownershipPercentage":123,"jobTitle":"chief-executive-officer","taxInfo":{"type":"ssn","identifierLast4":"\u003cstring>"},"internationalIdType":"passport","internationalId":"\u003cstring>","email":"\u003cstring>","phoneNumber":"\u003cstring>","createdAt":"2023-11-07T05:31:56Z","updatedAt":"2023-11-07T05:31:56Z"}]}}},"exampleType":"generated"}},"exampleType":"generated"},"ac5ca5f6-bb7f-43a5-87b1-e010fd71efe8":{"description":"Validation error — a malformed entry, an `id` that does not belong to this entity, or identification that does not match the declared residency\n","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["type","code","message"],"properties":{"type":{"type":"string","description":"Coarse, machine-readable error category. Branch on this to handle a whole class of failures without enumerating every `code`.","enum":["invalid_request_error","authentication_error","authorization_error","not_found_error","conflict_error","rate_limit_error","service_unavailable_error","internal_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"code":{"type":"string","description":"Machine-readable error code.","enum":["VALIDATION_ERROR","INVALID_ACCOUNT_TYPE","ACCOUNT_NOT_VERIFIED","INVALID_DELIVERY_PREFERENCE","MCC_REQUIRED","MERCHANT_ADDRESS_REQUIRED","GOODS_RECEIVED_REQUIRED","IDEMPOTENCY_KEY_REQUIRED","FEE_CALCULATION_FAILED","UNSUPPORTED_CURRENCY","FX_QUOTE_INVALID","INVALID_SONAR_TOKEN","ATTACHMENT_REQUIRED","COMPLIANCE_UPLOAD_FAILED","ATTACHMENT_UPLOAD_FAILED","INTERNATIONAL_NOT_ENABLED","ENTITY_ONBOARDING_INCOMPLETE","UNAUTHORIZED","IP_NOT_ALLOWED","NOT_FOUND","DUPLICATE_ENTITY","DUPLICATE_ACCOUNT","DUPLICATE_PAYMENT","DUPLICATE_EXTERNAL_ID","ACCOUNT_IN_USE","BUSINESS_NOT_ELIGIBLE","PAYMENT_NOT_EDITABLE","PAYMENT_UPGRADED_BY_RECEIVER","PAYMENT_NOT_CANCELABLE","IDEMPOTENCY_KEY_REUSED","IDEMPOTENCY_KEY_IN_PROGRESS","IDEMPOTENCY_STORE_UNAVAILABLE","INTERNAL_ERROR"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable error message.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"type":"object","description":"Additional error context (e.g. field-level validation failures).","uniqueKey":"error.details","typeLabel":"object"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"invalid_request_error","code":"VALIDATION_ERROR","message":"\u003cstring>","details":{}}}}},"exampleType":"generated"}},"exampleType":"generated"},"54ed99d1-eb9c-4935-b8f4-3a97fd9061c7":{"description":"Entity not found","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["type","code","message"],"properties":{"type":{"type":"string","description":"Coarse, machine-readable error category. Branch on this to handle a whole class of failures without enumerating every `code`.","enum":["invalid_request_error","authentication_error","authorization_error","not_found_error","conflict_error","rate_limit_error","service_unavailable_error","internal_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"code":{"type":"string","description":"Machine-readable error code.","enum":["VALIDATION_ERROR","INVALID_ACCOUNT_TYPE","ACCOUNT_NOT_VERIFIED","INVALID_DELIVERY_PREFERENCE","MCC_REQUIRED","MERCHANT_ADDRESS_REQUIRED","GOODS_RECEIVED_REQUIRED","IDEMPOTENCY_KEY_REQUIRED","FEE_CALCULATION_FAILED","UNSUPPORTED_CURRENCY","FX_QUOTE_INVALID","INVALID_SONAR_TOKEN","ATTACHMENT_REQUIRED","COMPLIANCE_UPLOAD_FAILED","ATTACHMENT_UPLOAD_FAILED","INTERNATIONAL_NOT_ENABLED","ENTITY_ONBOARDING_INCOMPLETE","UNAUTHORIZED","IP_NOT_ALLOWED","NOT_FOUND","DUPLICATE_ENTITY","DUPLICATE_ACCOUNT","DUPLICATE_PAYMENT","DUPLICATE_EXTERNAL_ID","ACCOUNT_IN_USE","BUSINESS_NOT_ELIGIBLE","PAYMENT_NOT_EDITABLE","PAYMENT_UPGRADED_BY_RECEIVER","PAYMENT_NOT_CANCELABLE","IDEMPOTENCY_KEY_REUSED","IDEMPOTENCY_KEY_IN_PROGRESS","IDEMPOTENCY_STORE_UNAVAILABLE","INTERNAL_ERROR"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human-readable error message.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"type":"object","description":"Additional error context (e.g. field-level validation failures).","uniqueKey":"error.details","typeLabel":"object"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"type":"invalid_request_error","code":"VALIDATION_ERROR","message":"\u003cstring>","details":{}}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"64a84fc3-3976-4ee2-a7a0-6d6cdd6626de":{"ApiKey":{"type":"apiKey","in":"header","name":"api-key","scopes":[],"schemeName":"ApiKey"}}},"servers":{"11023ec5-d3f9-4571-b97f-e305433ac479":{"description":"Production","url":"https://api.melio.com/v2"},"a9b4dcdc-ad19-4ca1-80f3-760819968e97":{"description":"Staging01","url":"https://api.staging01.melio.com/v2"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"api-key","scopes":[],"schemeName":"ApiKey"},"schema":{"title":"api-key","type":"string","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"ApiKey","name":"api-key"}],"title":"ApiKey"}]},"originalFileLocation":"openapi.json"},"subdomain":"melio","siteName":"Melio Payouts API","title":"Replace beneficial owners - Melio Payouts API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-11T07:50:53.819Z","originalFileLocation":"api-reference/entities/replace-beneficial-owners.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Replaces the business\u0026#x27;s entire set of beneficial owners. Entries carrying an id are updated, entries without one are created, and any person the payload omits is deleted. Replace rather than patch because ownership percentages are only meaningful as a set: their total is validated across all entries, so a partial update has no coherent meaning. Read the current set first, modify it, and send it back whole. Recording an fx-account-holder is what unblocks international-fx accounts. Check GET /limitations afterwards to confirm nothing else is outstanding.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Melio Payouts API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/melio/9sciKkVs_XIsdZmC/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/docs/mintlify-assets/_mintlify/favicons/melio/9sciKkVs_XIsdZmC/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/melio/9sciKkVs_XIsdZmC/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/melio/9sciKkVs_XIsdZmC/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/melio/9sciKkVs_XIsdZmC/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/melio/9sciKkVs_XIsdZmC/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/melio/9sciKkVs_XIsdZmC/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/melio/9sciKkVs_XIsdZmC/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/melio/9sciKkVs_XIsdZmC/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Replace beneficial owners - Melio Payouts API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Replaces the business\u0026#x27;s entire set of beneficial owners. Entries carrying an id are updated, entries without one are created, and any person the payload omits is deleted. Replace rather than patch because ownership percentages are only meaningful as a set: their total is validated across all entries, so a partial update has no coherent meaning. Read the current set first, modify it, and send it back whole. Recording an fx-account-holder is what unblocks international-fx accounts. Check GET /limitations afterwards to confirm nothing else is outstanding.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Melio Payouts API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://developers.melio.com/docs/api-reference/entities/replace-beneficial-owners\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://melio.mintlify.site/docs/_mintlify/api/og/v2?division=Entities\u0026amp;title=Replace+beneficial+owners\u0026amp;description=Replaces+the+business%27s+entire+set+of+beneficial+owners.+Entries+carrying+an+%60id%60+are+updated%2C+entries+without+one+are+created%2C+and+**any+person+the+payload+omi\u0026amp;theme=840e77e176f335a47137ea1a\u0026amp;signature=201934f17730533477105c0ac37ef62f5da385277b173f25b72693bb15afae8a\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Replace beneficial owners - Melio Payouts API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Replaces the business\u0026#x27;s entire set of beneficial owners. Entries carrying an id are updated, entries without one are created, and any person the payload omits is deleted. Replace rather than patch because ownership percentages are only meaningful as a set: their total is validated across all entries, so a partial update has no coherent meaning. Read the current set first, modify it, and send it back whole. Recording an fx-account-holder is what unblocks international-fx accounts. Check GET /limitations afterwards to confirm nothing else is outstanding.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://melio.mintlify.site/docs/_mintlify/api/og/v2?division=Entities\u0026amp;title=Replace+beneficial+owners\u0026amp;description=Replaces+the+business%27s+entire+set+of+beneficial+owners.+Entries+carrying+an+%60id%60+are+updated%2C+entries+without+one+are+created%2C+and+**any+person+the+payload+omi\u0026amp;theme=840e77e176f335a47137ea1a\u0026amp;signature=201934f17730533477105c0ac37ef62f5da385277b173f25b72693bb15afae8a\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/docs/mintlify-assets/_mintlify/favicons/melio/9sciKkVs_XIsdZmC/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Melio Payouts API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#7849ff\">\u003clink data-mint-head rel=\"canonical\" href=\"https://developers.melio.com/docs/api-reference/entities/replace-beneficial-owners\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/api-reference/entities/replace-beneficial-owners.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://developers.melio.com/#organization\",\"name\":\"Melio Payouts API\",\"url\":\"https://developers.melio.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/melio/xvWXKzlr8EBNoRDW/images/melio-wordmark.svg?fit=max\u0026auto=format\u0026n=xvWXKzlr8EBNoRDW\u0026q=85\u0026s=64c5b00a44de83a5745e570ecf3d0fc2\"}},{\"@type\":\"WebSite\",\"@id\":\"https://developers.melio.com/docs#website\",\"name\":\"Melio Payouts API\",\"url\":\"https://developers.melio.com/docs\",\"publisher\":{\"@id\":\"https://developers.melio.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://developers.melio.com/docs/api-reference/entities/replace-beneficial-owners#webpage\",\"url\":\"https://developers.melio.com/docs/api-reference/entities/replace-beneficial-owners\",\"name\":\"Replace beneficial owners\",\"description\":\"Replaces the business's entire set of beneficial owners. Entries carrying an id are updated, entries without one are created, and any person the payload omits is deleted. Replace rather than patch because ownership percentages are only meaningful as a set: their total is validated across all entries, so a partial update has no coherent meaning. Read the current set first, modify it, and send it back whole. Recording an fx-account-holder is what unblocks international-fx accounts. Check GET /limitations afterwards to confirm nothing else is outstanding.\",\"dateModified\":\"2026-11-11T07:50:53.819Z\",\"isPartOf\":{\"@id\":\"https://developers.melio.com/docs#website\"},\"breadcrumb\":{\"@id\":\"https://developers.melio.com/docs/api-reference/entities/replace-beneficial-owners#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://developers.melio.com/docs/api-reference/entities/replace-beneficial-owners#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Entities\",\"item\":\"https://developers.melio.com/docs/api-reference/entities/list-entities\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Replace beneficial owners\",\"item\":\"https://developers.melio.com/docs/api-reference/entities/replace-beneficial-owners\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://developers.melio.com/docs/api-reference/entities/replace-beneficial-owners#apireference\",\"headline\":\"Replace beneficial owners\",\"name\":\"Replace beneficial owners\",\"description\":\"Replaces the business's entire set of beneficial owners. Entries carrying an id are updated, entries without one are created, and any person the payload omits is deleted. Replace rather than patch because ownership percentages are only meaningful as a set: their total is validated across all entries, so a partial update has no coherent meaning. Read the current set first, modify it, and send it back whole. Recording an fx-account-holder is what unblocks international-fx accounts. Check GET /limitations afterwards to confirm nothing else is outstanding.\",\"url\":\"https://developers.melio.com/docs/api-reference/entities/replace-beneficial-owners\",\"mainEntityOfPage\":{\"@id\":\"https://developers.melio.com/docs/api-reference/entities/replace-beneficial-owners#webpage\"},\"dateModified\":\"2026-11-11T07:50:53.819Z\",\"publisher\":{\"@id\":\"https://developers.melio.com/#organization\"},\"isPartOf\":{\"@id\":\"https://developers.melio.com/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Melio Payouts API\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Melio Payouts API\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/docs/api-reference/entities/replace-beneficial-owners.md","siteName":"Melio Payouts API","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/Introduction"}]},{"tab":"API Reference","groups":[{"group":"Entities","pages":[{"title":"List entities","deprecated":null,"version":null,"openapi":"/openapi.json get /entities","href":"/api-reference/entities/list-entities"},{"title":"Create an entity","deprecated":null,"version":null,"openapi":"/openapi.json post /entities","href":"/api-reference/entities/create-an-entity"},{"title":"Get an entity","deprecated":null,"version":null,"openapi":"/openapi.json get /entities/{entityId}","href":"/api-reference/entities/get-an-entity"},{"title":"Update an entity","deprecated":null,"version":null,"openapi":"/openapi.json patch /entities/{entityId}","href":"/api-reference/entities/update-an-entity"},{"title":"List beneficial owners","description":"The people recorded against the business for compliance: its ultimate beneficial owners, its directors, and the individual who acts for it on its international (FX) payments.\n\nThis is distinct from the entity's `owner`, which is the person the Melio account belongs to. The two are usually the same human, but `owner` carries no address, tax identifier or ownership stake, so it cannot satisfy international onboarding on its own.\n","deprecated":null,"version":null,"openapi":"/openapi.json get /entities/{entityId}/beneficial-owners","href":"/api-reference/entities/list-beneficial-owners"},{"title":"Replace beneficial owners","deprecated":null,"version":null,"openapi":"/openapi.json put /entities/{entityId}/beneficial-owners","href":"/api-reference/entities/replace-beneficial-owners"},{"title":"Get limitations","description":"Returns the entity's per-operation capabilities. Each operation (named `resource.subtype:action`) is either allowed or, if not, lists the reasons why (for example, missing information). Only write operations can be limited; read operations are always allowed and are not listed.\n","deprecated":null,"version":null,"openapi":"/openapi.json get /limitations","href":"/api-reference/entities/get-limitations"}]},{"group":"Accounts","pages":[{"title":"List accounts","deprecated":null,"version":null,"openapi":"/openapi.json get /accounts","href":"/api-reference/accounts/list-accounts"},{"title":"Create an account","deprecated":null,"version":null,"openapi":"/openapi.json post /accounts","href":"/api-reference/accounts/create-an-account"},{"title":"Create a link to add a Plaid or card account","deprecated":null,"version":null,"openapi":"/openapi.json post /accounts/link","href":"/api-reference/accounts/create-a-link-to-add-a-plaid-or-card-account"},{"title":"Get an account","deprecated":null,"version":null,"openapi":"/openapi.json get /accounts/{accountId}","href":"/api-reference/accounts/get-an-account"},{"title":"Delete an account","deprecated":null,"version":null,"openapi":"/openapi.json delete /accounts/{accountId}","href":"/api-reference/accounts/delete-an-account"},{"title":"Create a link to verify a Plaid account","deprecated":null,"version":null,"openapi":"/openapi.json post /accounts/{accountId}/verify/link","href":"/api-reference/accounts/create-a-link-to-verify-a-plaid-account"}]},{"group":"Attachments","pages":[{"title":"Upload an attachment","deprecated":null,"version":null,"openapi":"/openapi.json post /attachments","href":"/api-reference/attachments/upload-an-attachment"}]},{"group":"Payments","pages":[{"title":"List payments","deprecated":null,"version":null,"openapi":"/openapi.json get /payments","href":"/api-reference/payments/list-payments"},{"title":"Create a payment","deprecated":null,"version":null,"openapi":"/openapi.json post /payments","href":"/api-reference/payments/create-a-payment"},{"title":"Get a payment","deprecated":null,"version":null,"openapi":"/openapi.json get /payments/{paymentId}","href":"/api-reference/payments/get-a-payment"},{"title":"Update a payment","deprecated":null,"version":null,"openapi":"/openapi.json patch /payments/{paymentId}","href":"/api-reference/payments/update-a-payment"},{"title":"Cancel a payment","deprecated":null,"version":null,"openapi":"/openapi.json post /payments/{paymentId}/cancel","href":"/api-reference/payments/cancel-a-payment"},{"title":"Simulate a payment action","deprecated":null,"version":null,"openapi":"/openapi.json post /simulations/payments/{paymentId}/actions","href":"/api-reference/payments/simulate-a-payment-action"}]},{"group":"Tools","pages":[{"title":"Calculate fees","deprecated":null,"version":null,"openapi":"/openapi.json post /tools/fee-calculator","href":"/api-reference/tools/calculate-fees"},{"title":"Quote a currency conversion","deprecated":null,"version":null,"openapi":"/openapi.json post /tools/fx-quote","href":"/api-reference/tools/quote-a-currency-conversion"},{"title":"Check fast payment eligibility","deprecated":null,"version":null,"openapi":"/openapi.json post /tools/fast-payment-eligibility","href":"/api-reference/tools/check-fast-payment-eligibility"},{"title":"Estimate delivery dates","deprecated":null,"version":null,"openapi":"/openapi.json post /tools/delivery-eta","href":"/api-reference/tools/estimate-delivery-dates"}]}]}]},"basePath":"","title":"Replace beneficial owners - Melio Payouts API","buildId":"dpl_Aw98ji4XvBsgtZwL1VrkUF9ehFqz","deploymentId":"dpl_Aw98ji4XvBsgtZwL1VrkUF9ehFqz","dynamics":["c2aa737661","b0f84f53ff","a9bb46feb3","2b790eda92"],"chunks":["OpenApiReferenceProvider-CQGbdtm4.js","utils-D88A1f-Z.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-ChqWdz1A.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-yBrxdh_6.js","snippetPresets-BgqDrFJC.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","Page-C2-BijcO.js","ApiExamples-Duxc2rZw.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-C7jidOil.js","shallow-xkjpHm-U.js","getApiPlaygroundDisplay-fE3rVpvL.js","CodeSnippet-LgxljKed.js","CodeSnippets-D-pXWDHq.js","getPastedJson-CLRcu-uo.js","icon-Cxirpjgo.js","MethodPill-D49eqY5e.js","DuplicateIcon-CivCz5Rp.js","createIcon-D71qL3f5.js","DynamicMarkdown-BcGRTrw6.js","SectionHeading-DzaqmmSD.js","axios-vUo_bRtp.js","Markdown-CZqUYmMp.js","clsx-B6IZIRsp.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-B0ZV6X5T.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-MqLyPtsW.js"]}