Wallets
Promote Wallet
Make a linked wallet the customer primary
POST
/
customers
/
api
/
manage
/
{customerId}
/
wallets
/
{address}
/
promote
curl -X POST "https://api.trusset.org/customers/api/manage/cmt0k3b9x0004cghxw7r2d5ya/wallets/0x1234f9a07c6b53d81e2a4f70c9b385d6014a7e52/promote" \
-H "X-API-Key: trusset_your_key_here"
const response = await fetch(
'https://api.trusset.org/customers/api/manage/cmt0k3b9x0004cghxw7r2d5ya/wallets/0x1234f9a07c6b53d81e2a4f70c9b385d6014a7e52/promote',
{
method: 'POST',
headers: { 'X-API-Key': 'trusset_your_key_here' }
}
);
const { data: customer } = await response.json();
{
"success": true,
"data": {
"id": "cmt0k3b9x0004cghxw7r2d5ya",
"instanceId": "cmrz4d1v20000cghx8k6p3m7t",
"issuerId": "cmrz3a8q10000cghxf5w2n9k4",
"walletAddress": "0x1234f9a07C6B53d81e2A4F70C9b385d6014a7E52",
"externalId": "acme-001",
"name": "Acme Corp",
"country": "DEU",
"investorType": "PROFESSIONAL",
"customerType": "COMPANY",
"companyUrl": "https://acme.example/",
"companyId": null,
"status": "verified",
"frozen": false,
"kycHash": "0x5f1c2e8a9b7d4c3e2f1a0b9c8d7e6f5a4b3c2d1e0f9a8b7c6d5e4f3a2b1c0d9e",
"onChainTxHash": "0x8e2d41c7a9f03b56d1e8c4a27f90b3d65e1c8a4f27b90d3e6c1a85f42d97b0e3",
"sumsubApplicantId": null,
"idLinkId": null,
"referenceKey": null,
"contactChannels": [],
"metadata": null,
"archived": false,
"archivedAt": null,
"verifiedAt": "2026-09-01T10:00:00.000Z",
"revokedAt": null,
"onChainSyncedAt": null,
"createdAt": "2026-08-15T08:00:00.000Z",
"updatedAt": "2026-09-06T11:45:00.000Z"
},
"metadata": {
"requestId": "550e8400-e29b-41d4-a716-446655440000",
"timestamp": "2026-09-06T11:45:00.000Z"
}
}
Makes a linked wallet the customer’s primary. The wallet that was primary becomes a linked wallet labelled
Previously primary, so no wallet is lost in the swap. The promoted wallet’s link row is removed, and its label with it.
Path Parameters
string
required
Customer record ID.
string
required
The linked wallet to promote, in any letter case. It must already be linked to this customer.
Response Fields
object
The customer record after the swap, with the promoted wallet as
walletAddress. It carries the fields listed on Get Customer other than its linked wallets, company links, Sumsub applicant record and audit entries.The primary wallet is what other parts of the platform read as the customer’s address. Promoting changes which wallet that is, and it does not move anything on chain. Identity verification and claims stay attached to the wallet that holds them. The new primary carries only the identity the registry already holds for it.Promoting does not read the registry. The record’s
status, verifiedAt and kycHash are left as they were, so they can still describe the old primary. When the instance switches identity registers, each record whose status is verified and that holds a kycHash is queued for registration with that kycHash under its current primary. Check the new primary with Identity Status and verify it if it has no identity.curl -X POST "https://api.trusset.org/customers/api/manage/cmt0k3b9x0004cghxw7r2d5ya/wallets/0x1234f9a07c6b53d81e2a4f70c9b385d6014a7e52/promote" \
-H "X-API-Key: trusset_your_key_here"
const response = await fetch(
'https://api.trusset.org/customers/api/manage/cmt0k3b9x0004cghxw7r2d5ya/wallets/0x1234f9a07c6b53d81e2a4f70c9b385d6014a7e52/promote',
{
method: 'POST',
headers: { 'X-API-Key': 'trusset_your_key_here' }
}
);
const { data: customer } = await response.json();
{
"success": true,
"data": {
"id": "cmt0k3b9x0004cghxw7r2d5ya",
"instanceId": "cmrz4d1v20000cghx8k6p3m7t",
"issuerId": "cmrz3a8q10000cghxf5w2n9k4",
"walletAddress": "0x1234f9a07C6B53d81e2A4F70C9b385d6014a7E52",
"externalId": "acme-001",
"name": "Acme Corp",
"country": "DEU",
"investorType": "PROFESSIONAL",
"customerType": "COMPANY",
"companyUrl": "https://acme.example/",
"companyId": null,
"status": "verified",
"frozen": false,
"kycHash": "0x5f1c2e8a9b7d4c3e2f1a0b9c8d7e6f5a4b3c2d1e0f9a8b7c6d5e4f3a2b1c0d9e",
"onChainTxHash": "0x8e2d41c7a9f03b56d1e8c4a27f90b3d65e1c8a4f27b90d3e6c1a85f42d97b0e3",
"sumsubApplicantId": null,
"idLinkId": null,
"referenceKey": null,
"contactChannels": [],
"metadata": null,
"archived": false,
"archivedAt": null,
"verifiedAt": "2026-09-01T10:00:00.000Z",
"revokedAt": null,
"onChainSyncedAt": null,
"createdAt": "2026-08-15T08:00:00.000Z",
"updatedAt": "2026-09-06T11:45:00.000Z"
},
"metadata": {
"requestId": "550e8400-e29b-41d4-a716-446655440000",
"timestamp": "2026-09-06T11:45:00.000Z"
}
}
Error Codes
| Code | HTTP | Cause |
|---|---|---|
INVALID_ADDRESS | 400 | address is not a valid address |
NOT_FOUND | 404 | No such customer, the record is archived, or that wallet is not linked to them. The current primary is not a link, so it answers here too |
ALREADY_PRIMARY | 409 | The wallet is linked to this customer and is also its primary |
WALLET_IN_USE | 409 | The wallet, or the outgoing primary, conflicts with another customer record |
PROMOTE_FAILED | 500 | The promotion could not be written |
⌘I
curl -X POST "https://api.trusset.org/customers/api/manage/cmt0k3b9x0004cghxw7r2d5ya/wallets/0x1234f9a07c6b53d81e2a4f70c9b385d6014a7e52/promote" \
-H "X-API-Key: trusset_your_key_here"
const response = await fetch(
'https://api.trusset.org/customers/api/manage/cmt0k3b9x0004cghxw7r2d5ya/wallets/0x1234f9a07c6b53d81e2a4f70c9b385d6014a7e52/promote',
{
method: 'POST',
headers: { 'X-API-Key': 'trusset_your_key_here' }
}
);
const { data: customer } = await response.json();
{
"success": true,
"data": {
"id": "cmt0k3b9x0004cghxw7r2d5ya",
"instanceId": "cmrz4d1v20000cghx8k6p3m7t",
"issuerId": "cmrz3a8q10000cghxf5w2n9k4",
"walletAddress": "0x1234f9a07C6B53d81e2A4F70C9b385d6014a7E52",
"externalId": "acme-001",
"name": "Acme Corp",
"country": "DEU",
"investorType": "PROFESSIONAL",
"customerType": "COMPANY",
"companyUrl": "https://acme.example/",
"companyId": null,
"status": "verified",
"frozen": false,
"kycHash": "0x5f1c2e8a9b7d4c3e2f1a0b9c8d7e6f5a4b3c2d1e0f9a8b7c6d5e4f3a2b1c0d9e",
"onChainTxHash": "0x8e2d41c7a9f03b56d1e8c4a27f90b3d65e1c8a4f27b90d3e6c1a85f42d97b0e3",
"sumsubApplicantId": null,
"idLinkId": null,
"referenceKey": null,
"contactChannels": [],
"metadata": null,
"archived": false,
"archivedAt": null,
"verifiedAt": "2026-09-01T10:00:00.000Z",
"revokedAt": null,
"onChainSyncedAt": null,
"createdAt": "2026-08-15T08:00:00.000Z",
"updatedAt": "2026-09-06T11:45:00.000Z"
},
"metadata": {
"requestId": "550e8400-e29b-41d4-a716-446655440000",
"timestamp": "2026-09-06T11:45:00.000Z"
}
}
