PUT/api/v1/issuers/{issuerId}/capabilities

Issuers

Declare issuer capabilities

Create or update the capability profile that controls how Nuvanté orders your transactions.

Sandbox APIhttps://sandbox-api.nuvante.io

Creates or replaces the issuer's capability profile. Nuvanté uses commitPoint, custodyModel and feedbackChannel to work out the settlement mode (1, 2 or 3). Here, custodyModel describes your issuer wallet structure, and is a different field from the participant's self-custody, MPC or CaaS setting.

A profile update applies to transactions started after the write. Transactions already in flight carry on with the profile version they captured. Needs manageIssuedAssets (issuer tenant admin JWT, own participant only).

Parameters

Declare issuer capabilities parameters
FieldTypeRequiredDescription
Authorizationstring · headerYesBearer sandbox API key with `manageIssuedAssets` (issuer tenant admins only).
issuerIdstring (UUID) · pathYesThe issuer's participant ID. It must match your own participant.
commitPoint"ON_OBSERVATION" | "ON_INSTRUCTION" · bodyYesWhen Nuvanté treats the issuer as committed. `ON_OBSERVATION` gives Mode 1 (delegated signing). `ON_INSTRUCTION` gives Mode 2 (two-phase), or Mode 3 (single-phase with a pre-burn transfer) when `preBurnTransferRequired` is true.
custodyModel"PER_MEMBER_ISSUER_WALLET" | "POOLED_ISSUER_WALLET" · bodyYesHow your issuer wallets are structured (one per member, or pooled). This is separate from how keys are held and from the participant-level `custodyModel` (`self-custody`, `mpc` or `caas`). The engine still calls it `custodyModel`, and the proposed rename to `issuerWalletModel` (DECISIONS.md D-1) hasn't been confirmed.
feedbackChannel("SIGNED_WEBHOOK" | "POLLABLE_RESOURCE")[] · bodyYesHow you report instruction status back to Nuvanté.
fiatLeg"NUVANTE_SETTLES_RTGS" | "ISSUER_SETTLES_RTGS" · bodyYesWho sends the RTGS settlement instruction.
ledger"stellar" | "evm" | "solana" · bodyYesThe ledger the issued asset lives on.
apiBaseUrlstring (URL) · bodyNoThe base URL Nuvanté calls for burn and mint instructions. Required for Mode 2 and 3.

Responses

200Capability profile saved. `profileVersion` goes up by one.
Create a sandbox API key

Request

curl --request PUT \
  --url 'https://sandbox-api.nuvante.io/api/v1/issuers/323e4567-e89b-42d3-a456-426614174002/capabilities' \
  --header 'Authorization: Bearer nvt_sandbox_your_key' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{
  "commitPoint": "ON_INSTRUCTION",
  "preBurnTransferRequired": true,
  "custodyModel": "PER_MEMBER_ISSUER_WALLET",
  "mintDeliveryTarget": "REGISTERED_HANDLE",
  "feedbackChannel": [
    "SIGNED_WEBHOOK",
    "POLLABLE_RESOURCE"
  ],
  "fiatLeg": "NUVANTE_SETTLES_RTGS",
  "ledger": "stellar",
  "finalityClass": "DETERMINISTIC",
  "amountPrecision": 2,
  "approvalSlaSeconds": 45,
  "apiBaseUrl": "https://issuer-api.partner-bank.test",
  "webhookUrl": "https://issuer-api.partner-bank.test/nuvante/webhooks"
}'

Response

{
  "data": {
    "issuerId": "323e4567-e89b-42d3-a456-426614174002",
    "profileVersion": 3,
    "commitPoint": "ON_INSTRUCTION",
    "custodyModel": "PER_MEMBER_ISSUER_WALLET",
    "feedbackChannel": [
      "SIGNED_WEBHOOK",
      "POLLABLE_RESOURCE"
    ],
    "fiatLeg": "NUVANTE_SETTLES_RTGS",
    "ledger": "stellar",
    "effectiveFrom": "2026-09-01T10:00:00.000Z"
  },
  "meta": {
    "commandId": "f23e4567-e89b-42d3-a456-426614174044"
  }
}