---
id: config-delete-digital-wallet-open-id-organisation-wallet-unit
title: "Delete organisation wallet unit"
description: "Deletes an organisation wallet unit. In one change, the wallet provider removes its authorisation, revokes (`Revoked`) its Wallet Unit Attestations on their status lists and the copies that the holder organisation keeps, and deletes it. There is no undo: the wallet unit leaves the list, a read gives 404, and the holder organisation never gets a new organisation wallet unit."
sidebar_label: "Delete organisation wallet unit"
hide_title: true
hide_table_of_contents: true
api: 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
sidebar_class_name: "delete api-method"
info_path: docs/openid4vc-api/igrant-io-api-documentation
custom_edit_url: null
---

> **Build this with an AI coding agent.** Install the iGrant.io Agent Skills, then ask your agent to build the integration:
>
> ```bash
> npx skills add L3-iGrant/skills
> ```


import ApiTabs from "@theme/ApiTabs";
import DiscriminatorTabs from "@theme/DiscriminatorTabs";
import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
import SecuritySchemes from "@theme/ApiExplorer/SecuritySchemes";
import MimeTabs from "@theme/MimeTabs";
import ParamsItem from "@theme/ParamsItem";
import ResponseSamples from "@theme/ResponseSamples";
import SchemaItem from "@theme/SchemaItem";
import SchemaTabs from "@theme/SchemaTabs";
import Markdown from "@theme/Markdown";
import OperationTabs from "@theme/OperationTabs";
import TabItem from "@theme/TabItem";

<h1 className={"openapi__heading"}>Delete organisation wallet unit</h1>

<MethodEndpoint method={"delete"} path={"/v4/config/ows/wallet-provider/organisation-wallet-units/{walletUnitId}"}></MethodEndpoint>



Deletes an organisation wallet unit. In one change, the wallet provider removes its authorisation, revokes (`Revoked`) its Wallet Unit Attestations on their status lists and the copies that the holder organisation keeps, and deletes it. There is no undo: the wallet unit leaves the list, a read gives 404, and the holder organisation never gets a new organisation wallet unit.

Its rows in the wallet unit attestation issuance history stay, with `revocationStatus` `Revoked`. Its key attestations do not change. To stop the wallet unit and keep the option to authorise it again, use the kill switch of [Update organisation wallet unit](/docs/openid4vc-api/config-update-digital-wallet-open-id-organisation-wallet-unit) instead.

## Request

<details style={{"marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collapsed={false} open={true}><summary style={{}}><h3 className={"openapi-markdown__details-summary-header-params"}>Path Parameters</h3></summary><div><ul><ParamsItem className={"paramsItem"} param={{"description":"The `id` of the wallet unit, from the list of the wallet units of its kind. The routes of each kind read only their kind: the `id` of an organisation wallet unit gives 404 on an individual wallet unit route, and the other way round. A deleted wallet unit also gives 404.","in":"path","name":"walletUnitId","required":true,"schema":{"type":"string","format":"uuid"}}}></ParamsItem></ul></div></details><div><div><ApiTabs label={undefined} id={undefined}><TabItem label={"200"} value={"200"}><div>

The wallet unit is revoked and deleted. No body.

</div><details style={{"textAlign":"left","marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collaposed={true} open={false}><summary style={{}}><strong>Response Headers</strong></summary><ul style={{"marginLeft":"1rem"}}></ul></details><div></div></TabItem><TabItem label={"400"} value={"400"}><div>

The organisation is not the wallet provider (also without a deployment), or a status list refused the revocation.

</div><details style={{"textAlign":"left","marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collaposed={true} open={false}><summary style={{}}><strong>Response Headers</strong></summary><ul style={{"marginLeft":"1rem"}}></ul></details><div><MimeTabs className={"openapi-tabs__mime"} schemaType={"response"}><TabItem label={"application/json"} value={"application/json"}><SchemaTabs className={"openapi-tabs__schema"}><TabItem label={"Schema"} value={"Schema"}><details style={{}} className={"openapi-markdown__details response"} data-collapsed={false} open={true}><summary style={{}} className={"openapi-markdown__details-summary-response"}><strong>Schema</strong></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"errorCode"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","example":400}}></SchemaItem><SchemaItem collapsible={false} name={"errorDescription"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","example":"Bad input parameter"}}></SchemaItem><SchemaItem collapsible={false} name={"errorKey"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"A text code of the refusal that does not change when the text changes. Only some refusals have it, for example `organisation_suspended`, `feature_disabled` or `purpose_exists`."}}></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"errorCode\": 400,\n  \"errorDescription\": \"Bad input parameter\",\n  \"errorKey\": \"string\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"401"} value={"401"}><div>

The `Authorization` header is missing, or the API key or token is not valid.

</div><details style={{"textAlign":"left","marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collaposed={true} open={false}><summary style={{}}><strong>Response Headers</strong></summary><ul style={{"marginLeft":"1rem"}}></ul></details><div><MimeTabs className={"openapi-tabs__mime"} schemaType={"response"}><TabItem label={"application/json"} value={"application/json"}><SchemaTabs className={"openapi-tabs__schema"}><TabItem label={"Schema"} value={"Schema"}><details style={{}} className={"openapi-markdown__details response"} data-collapsed={false} open={true}><summary style={{}} className={"openapi-markdown__details-summary-response"}><strong>Schema</strong></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"errorCode"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","example":400}}></SchemaItem><SchemaItem collapsible={false} name={"errorDescription"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","example":"Bad input parameter"}}></SchemaItem><SchemaItem collapsible={false} name={"errorKey"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"A text code of the refusal that does not change when the text changes. Only some refusals have it, for example `organisation_suspended`, `feature_disabled` or `purpose_exists`."}}></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"errorCode\": 400,\n  \"errorDescription\": \"Bad input parameter\",\n  \"errorKey\": \"string\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"403"} value={"403"}><div>

The API key or token does not allow this call. An API key without the scope of the operation gets the older body `{"Code", "Message"}`. An `X-SandboxOrgId` header that names another sandbox organisation than the one of the API key gets `{"errorCode", "errorDescription"}`. When a platform admin has turned off the feature of the operation for the organisation, the answer has `errorKey` `feature_disabled` and the member `feature` (the name of the feature).

</div><details style={{"textAlign":"left","marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collaposed={true} open={false}><summary style={{}}><strong>Response Headers</strong></summary><ul style={{"marginLeft":"1rem"}}></ul></details><div><MimeTabs className={"openapi-tabs__mime"} schemaType={"response"}><TabItem label={"application/json"} value={"application/json"}><SchemaTabs className={"openapi-tabs__schema"}><TabItem label={"Schema"} value={"Schema"}><details style={{}} className={"openapi-markdown__details response"} data-collapsed={false} open={true}><summary style={{}} className={"openapi-markdown__details-summary-response"}><strong>Schema</strong></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}></div><ul style={{"marginLeft":"1rem"}}><div><span className={"badge badge--info"}>anyOf</span><SchemaTabs><TabItem label={"MOD1"} value={"0-item-properties"}><SchemaItem collapsible={false} name={"errorCode"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","example":400}}></SchemaItem><SchemaItem collapsible={false} name={"errorDescription"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","example":"Bad input parameter"}}></SchemaItem><SchemaItem collapsible={false} name={"errorKey"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"A text code of the refusal that does not change when the text changes. Only some refusals have it, for example `organisation_suspended`, `feature_disabled` or `purpose_exists`."}}></SchemaItem></TabItem><TabItem label={"Older error body"} value={"1-item-properties"}><SchemaItem collapsible={false} name={"Code"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","description":"The HTTP status.","example":403}}></SchemaItem><SchemaItem collapsible={false} name={"Message"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"What went wrong.","example":"Unauthorized access;User doesn't have enough permissions;"}}></SchemaItem></TabItem></SchemaTabs></div></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{}"} language={"json"}></ResponseSamples></TabItem><TabItem label={"Example"} value={"Example"}><ResponseSamples responseExample={"{\n  \"Code\": 403,\n  \"Message\": \"Unauthorized access;User doesn't have enough permissions;\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"404"} value={"404"}><div>

No organisation wallet unit of the wallet provider has this id (also for the id of an individual wallet unit or of a deleted wallet unit).

</div><details style={{"textAlign":"left","marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collaposed={true} open={false}><summary style={{}}><strong>Response Headers</strong></summary><ul style={{"marginLeft":"1rem"}}></ul></details><div><MimeTabs className={"openapi-tabs__mime"} schemaType={"response"}><TabItem label={"application/json"} value={"application/json"}><SchemaTabs className={"openapi-tabs__schema"}><TabItem label={"Schema"} value={"Schema"}><details style={{}} className={"openapi-markdown__details response"} data-collapsed={false} open={true}><summary style={{}} className={"openapi-markdown__details-summary-response"}><strong>Schema</strong></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"errorCode"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","example":400}}></SchemaItem><SchemaItem collapsible={false} name={"errorDescription"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","example":"Bad input parameter"}}></SchemaItem><SchemaItem collapsible={false} name={"errorKey"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"A text code of the refusal that does not change when the text changes. Only some refusals have it, for example `organisation_suspended`, `feature_disabled` or `purpose_exists`."}}></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"errorCode\": 400,\n  \"errorDescription\": \"Bad input parameter\",\n  \"errorKey\": \"string\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"500"} value={"500"}><div>

Unexpected server error.

</div><details style={{"textAlign":"left","marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collaposed={true} open={false}><summary style={{}}><strong>Response Headers</strong></summary><ul style={{"marginLeft":"1rem"}}></ul></details><div><MimeTabs className={"openapi-tabs__mime"} schemaType={"response"}><TabItem label={"application/json"} value={"application/json"}><SchemaTabs className={"openapi-tabs__schema"}><TabItem label={"Schema"} value={"Schema"}><details style={{}} className={"openapi-markdown__details response"} data-collapsed={false} open={true}><summary style={{}} className={"openapi-markdown__details-summary-response"}><strong>Schema</strong></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"errorCode"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","example":400}}></SchemaItem><SchemaItem collapsible={false} name={"errorDescription"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","example":"Bad input parameter"}}></SchemaItem><SchemaItem collapsible={false} name={"errorKey"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"A text code of the refusal that does not change when the text changes. Only some refusals have it, for example `organisation_suspended`, `feature_disabled` or `purpose_exists`."}}></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"errorCode\": 400,\n  \"errorDescription\": \"Bad input parameter\",\n  \"errorKey\": \"string\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem></ApiTabs></div></div>
      