---
id: config-create-digital-wallet-open-id-wallet-unit
title: "Create wallet unit"
description: "Creates a new wallet unit under the wallet provider for OID4VCI credential issuance and OpenID4VP presentation."
sidebar_label: "Create wallet unit"
hide_title: true
hide_table_of_contents: true
api: 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
sidebar_class_name: "post 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"}>Create wallet unit</h1>

<MethodEndpoint method={"post"} path={"/v2/config/digital-wallet/openid/wallet-provider/wallet-unit"}></MethodEndpoint>



Creates a new wallet unit under the wallet provider for OID4VCI credential issuance and OpenID4VP presentation.

## Request

<MimeTabs className={"openapi-tabs__mime"}><TabItem label={"application/json"} value={"application/json-schema"}><details style={{}} className={"openapi-markdown__details mime"} data-collapsed={false} open={true}><summary style={{}} className={"openapi-markdown__details-summary-mime"}><h3 className={"openapi-markdown__details-summary-header-body"}>Body</h3></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"clientId"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Client identifier for the new wallet unit (DID or URL)."}}></SchemaItem><SchemaItem collapsible={false} name={"clientUrl"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"URL endpoint of the wallet instance."}}></SchemaItem><SchemaItem collapsible={false} name={"clientPublicKey"} required={true} schemaName={"object"} qualifierMessage={undefined} schema={{"type":"object","description":"Public key JWK of the wallet instance for cryptographic verification."}}></SchemaItem><SchemaItem collapsible={false} name={"isAuthorised"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"Set to `true` to authorize this wallet unit upon creation."}}></SchemaItem></ul></details></TabItem></MimeTabs><div><div><ApiTabs label={undefined} id={undefined}><TabItem label={"200"} value={"200"}><div></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={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>walletUnit</strong><span className={"openapi-schema__name"}> object</span></span></summary><div style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"id"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Unique identifier for the wallet unit record."}}></SchemaItem><SchemaItem collapsible={false} name={"clientId"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Client identifier of the wallet instance, typically a DID or URL. Used to identify the wallet during OID4VCI and OpenID4VP protocol interactions."}}></SchemaItem><SchemaItem collapsible={false} name={"clientUrl"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"URL endpoint of the wallet instance, used for direct communication."}}></SchemaItem><SchemaItem collapsible={false} name={"clientPublicKey"} required={true} schemaName={"object"} qualifierMessage={undefined} schema={{"type":"object","description":"Public key JWK of the wallet instance, used to verify Wallet Unit Attestation Proof of Possession."}}></SchemaItem><SchemaItem collapsible={false} name={"isAuthorised"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"When `true`, this wallet unit is authorized to interact with the Wallet Provider's services."}}></SchemaItem><SchemaItem collapsible={false} name={"assertionToken"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Client assertion JWT of the wallet unit, used for OAuth 2.0 client authentication."}}></SchemaItem><SchemaItem collapsible={false} name={"assertionTokenType"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Type of the client assertion token."}}></SchemaItem><SchemaItem collapsible={false} name={"createdAt"} required={false} schemaName={"number"} qualifierMessage={undefined} schema={{"type":"number","description":"Unix timestamp (in seconds) when this wallet unit was registered."}}></SchemaItem><SchemaItem collapsible={false} name={"updatedAt"} required={false} schemaName={"number"} qualifierMessage={undefined} schema={{"type":"number","description":"Unix timestamp (in seconds) when this wallet unit record was last modified."}}></SchemaItem></div></details></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"walletUnit\": {\n    \"id\": \"string\",\n    \"clientId\": \"string\",\n    \"clientUrl\": \"string\",\n    \"clientPublicKey\": {},\n    \"isAuthorised\": true,\n    \"assertionToken\": \"string\",\n    \"assertionTokenType\": \"string\",\n    \"createdAt\": 0,\n    \"updatedAt\": 0\n  }\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"401"} value={"401"}><div>

Unauthorized

</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></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"errorCode\": 400,\n  \"errorDescription\": \"Bad input parameter\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"500"} value={"500"}><div>

Internal 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></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"errorCode\": 400,\n  \"errorDescription\": \"Bad input parameter\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem></ApiTabs></div></div>
      