---
id: config-update-digital-wallet-open-id
title: "Enable wallet provider"
description: "Enables the wallet provider capability for the organisation. Send `isWalletProvider` with the value `true`. The service then registers the organisation as a wallet provider and the organisation can register wallet units and issue Wallet Unit Attestations. If you send `false`, the service keeps the current value and returns the deployment details."
sidebar_label: "Enable wallet provider"
hide_title: true
hide_table_of_contents: true
api: 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
sidebar_class_name: "put 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"}>Enable wallet provider</h1>

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



Enables the wallet provider capability for the organisation. Send `isWalletProvider` with the value `true`. The service then registers the organisation as a wallet provider and the organisation can register wallet units and issue Wallet Unit Attestations. If you send `false`, the service keeps the current value and returns the deployment details.

## Request

<details style={{"marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collapsed={false} open={true}><summary style={{}}><h3 className={"openapi-markdown__details-summary-header-params"}>Header Parameters</h3></summary><div><ul><ParamsItem className={"paramsItem"} param={{"description":"Optional. Unique identifier of the sandbox organisation to use for this request. When you send this header, the service runs the operation in the context of the named sandbox organisation, that is, against the wallet of that sandbox organisation and not against the main wallet of the organisation. Leave the header out to use the main wallet.\n\nThe service reads this header only when you authenticate with a bearer access token. When you authenticate with an API key, the service takes the sandbox organisation from the API key and ignores this header. To run an API-key call in a sandbox organisation, bind the key to the sandbox organisation with `PUT /v2/config/admin/apikey/{apiKeyId}/sandbox-org` instead.\n\n`X-SubwalletId` is the deprecated name of this header. The service continues to accept it, but `X-SandboxOrgId` wins if you send both headers.\n\nThe sandbox organisation must exist, must belong to your organisation and must be deployed. An unknown identifier, an identifier of a sandbox organisation that is not deployed, and an identifier that belongs to a different organisation all make the call fail with HTTP 400.","in":"header","name":"X-SandboxOrgId","required":false,"schema":{"type":"string"},"example":"6889e1a4c5b2f30001a3d710"}}></ParamsItem></ul></div></details><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><strong className={"openapi-schema__required"}>required</strong></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}><div style={{"marginTop":"1rem","marginBottom":"1rem"}}>

The wallet provider capability to set for the organisation.

</div></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"isWalletProvider"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"Set to `true` to enable the wallet provider capability. The service ignores the value `false` and keeps the current setting.","example":true}}></SchemaItem></ul></details></TabItem></MimeTabs><div><div><ApiTabs label={undefined} id={undefined}><TabItem label={"200"} value={"200"}><div>

The service returned the OpenID digital wallet deployment details.

</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={"agentServiceEndpoint"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Base URL of the OID4VCI and OpenID4VP service of the organisation.","example":"https://api.igrant.io/v2/organisation/62d9e0b9e5b1a80001d0f8b1/service"}}></SchemaItem><SchemaItem collapsible={false} name={"credentialOfferEndpoint"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"URL of the OID4VCI Credential Offer endpoint.","example":"https://api.igrant.io/v2/organisation/62d9e0b9e5b1a80001d0f8b1/service/credential-offer"}}></SchemaItem><SchemaItem collapsible={false} name={"version"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Software version of the deployed agent.","example":"1.0.0"}}></SchemaItem><SchemaItem collapsible={false} name={"status"} required={true} schemaName={"integer"} qualifierMessage={"**Possible values:** [`0`, `1`, `2`]"} schema={{"type":"integer","description":"Deployment status of the agent. `0` is Not Configured. `1` is Requested. `2` is Deployed.","enum":[0,1,2],"example":2}}></SchemaItem><SchemaItem collapsible={false} name={"statusStr"} required={true} schemaName={"string"} qualifierMessage={"**Possible values:** [`Not Configured`, `Requested`, `Deployed`]"} schema={{"type":"string","description":"Deployment status of the agent as text.","enum":["Not Configured","Requested","Deployed"],"example":"Deployed"}}></SchemaItem><SchemaItem collapsible={false} name={"ledgerName"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Name of the distributed ledger that the agent uses for DID registration.","example":"European Blockchain Services Infrastructure"}}></SchemaItem><SchemaItem collapsible={false} name={"ledgerURL"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"URL of the distributed ledger.","example":"https://hub.ebsi.eu/"}}></SchemaItem><SchemaItem collapsible={false} name={"ledgerID"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","description":"Identifier of the ledger network. The service does not set this field and always returns `0`.","example":0}}></SchemaItem><SchemaItem collapsible={false} name={"infrastructureProvider"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Infrastructure provider that hosts the agent.","example":"iGrant.io"}}></SchemaItem><SchemaItem collapsible={false} name={"deploymentRegion"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Geographic region of the agent deployment.","example":"Europe: Frankfurt"}}></SchemaItem><SchemaItem collapsible={false} name={"isWalletProvider"} required={true} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"When `true`, the organisation is a wallet provider and can issue Wallet Unit Attestations.","example":true}}></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"agentServiceEndpoint\": \"https://api.igrant.io/v2/organisation/62d9e0b9e5b1a80001d0f8b1/service\",\n  \"credentialOfferEndpoint\": \"https://api.igrant.io/v2/organisation/62d9e0b9e5b1a80001d0f8b1/service/credential-offer\",\n  \"version\": \"1.0.0\",\n  \"status\": 2,\n  \"statusStr\": \"Deployed\",\n  \"ledgerName\": \"European Blockchain Services Infrastructure\",\n  \"ledgerURL\": \"https://hub.ebsi.eu/\",\n  \"ledgerID\": 0,\n  \"infrastructureProvider\": \"iGrant.io\",\n  \"deploymentRegion\": \"Europe: Frankfurt\",\n  \"isWalletProvider\": true\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"400"} value={"400"}><div>

The organisation is already a wallet provider, or the service cannot resolve the wallet deployment.

</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={"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>
      