---
id: config-digital-wallet-open-id-configure-qtsp-credential
title: "Configure Qualified Trust Service Provider (QTSP) credential"
description: "Configures a Qualified Trust Service Provider (QTSP) credential for remote signing of OID4VCI issued credentials."
sidebar_label: "Configure Qualified Trust Service Provider (QTSP) credential"
hide_title: true
hide_table_of_contents: true
api: eJzlVktvGzcQ/iuDOdnA6uFHgEIIgtqSUyhJa6VS7INjwPTuaMV4l2RIrmRV0H8vhlytHo7bopceepG4JGc4z++bFWbkUiuNl1phD/taTWVeWXIg4HMlCjmVlMHEVs7DmOxcpgQjq+cyIwtHnyfj0TGkljJSXooCptqCpVJ7AidzJVUOegrXw8H5TX8I0rmKsp37ro0JakNW8PvDDHuYBgsGMpdeFLeiKMhfG1LDrDHts3em36jABC19r8j5S50tsbdiDZ6U56UwppBpUN755tjDFbp0RqXglbH8tJfkglijku1YoV8awh46b6XKcZ1g5ciOpPrB2TrZ7OjHb5R6XK95z5IzWrmo/rR7wn/74cYEZyQysnyFRc7jrX/sArsuLWXYu0OyVtu+zgiTuB7svHV/aGJy4P5WeuufVJ5ysqzvWZSmIOydd7vrH6h/EZMdEbwUGUhlKg9GWFGSJxsitE4OwvFFicrPtJV/UPYiNG+63f9xaIbKk1WiAEd2ThbCMwcxWifoKK2s9Evs3a3wwsiPxMv7dbLCSxKW7EXlZ2GHvRa54+jUzQax2+Ao9Bt37DEm+JGW8KtQIqeSw36fYEl+prlVjXYhWIJVYmd+2onN28miwtYiKOxoQ0pmnSdatspGU+e7dwbZYvbHBYP3XR5QqWt3McHKFtjDmffG9TqdjErdEka2ZW6F8m2pkX3cVzCyOqtS/nhNzd9pGHuRM4a9Iu7i8aEh99s8jLkcYxVtstGUg4gbCTKm1InEBJUo+fSi7oRQ3nhYDhejITzRErhfGLRiF7RhMiOYi6Iihl0/I3jY0/MA8RkoGc8fCYylqXymDBbSz+Ah2ggPcKQYwlmBt0IWIQZGpHScALXz9oHaHtSCb5e6shyO1hMt3z20GTZ3626Fj+Hrvbal8NjDD7eTl76lKTkHXj+RAiOc25gXNdU2g1SwZwQ0EQwYwDGMj2HT35y3gNaMFr9vWeNq04+HLLBt2Qb8dwhBqqneQJJIAyRRKSRXiKuM0db/vK2KJrHyl+3WfjntVuJBTBohMJF8mZ9TzVZ7Asn/3FQxEHXqYxsHSr4hK6dSPBYEW+Z0MHSuEiolOKoZ+hiEyl4RHFlyzRMNRoyO2SKvU104Lj/pgGuTFMs40DYXqk4QpzSOAAnMdJEl4bE5v7CEGjJ2ZwOoXKg7L1QmbOZawV8plIdpoRcuFkUd6WDt7Vkfbvpw9OF2cpzA8GryHsaD1ofbCdz042vD8TWc/NQ9OWu9gXKg0045+HQwv5TCh7GkkCkpF4pi05JGpDOC03b3ReoWi0VbhOO2tnmnlnWdT8P+1W/jqxbL8JQgfbFXAyFYmU6rJnuYIONhTPtp9/S8fdY+YVlG21KoHXuaiehfTGqHXbdDrP/JEFh3qKdn3zGFkCpMXBzjVU0wdzg/xaSeD9n8PZKJc6SSPDfsEw0mGKjmPsEZE1bvDlerR+Hoiy3Wa97+XpENNJngXNhQ7ZE0N6DM3PTE2M2h4SC1JmwuXy+qCOUHkwhTSZRgNDP+L+/ucuroesyI+FjPsmWYOtCKBc+5YoE9/IpfMXgbeipMOry/wkKovBI53496GelEjbtbznkKnFMv2LPNkVruWHlIP9EZ/mXXfijylmv5Iy3fNdfjyasCDWDH25zz+/V6/ScVYVmq
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"}>Configure Qualified Trust Service Provider (QTSP) credential</h1>

<MethodEndpoint method={"post"} path={"/v2/config/digital-wallet/openid/key-management/qtsp"}></MethodEndpoint>



Configures a Qualified Trust Service Provider (QTSP) credential for remote signing of OID4VCI issued credentials.

## 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={"credentialId"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string"}}></SchemaItem><SchemaItem collapsible={false} name={"userPin"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string"}}></SchemaItem></ul></details></TabItem></MimeTabs><div><div><ApiTabs label={undefined} id={undefined}><TabItem label={"201"} value={"201"}><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></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>
      