---
title: "Declare VASP counterparty"
method: POST
path: "/counterparty/vasp"
tags: ["Counterparty"]
---

# Declare VASP counterparty

`POST /counterparty/vasp`

Creates a DECLARED VASP counterparty. Use the VASP search API (`POST /vasps`) to find a
VASP and supply its `id` as `counterpartyVaspId`.

The stored `counterpartyData` always uses `entityType` LEGAL with `counterpartyVaspId`;
clients do not send `entityType` on this route.

## Request body

- DeclareVaspCounterpartyRequest — Declare a VASP counterparty. Provide exactly one owner and exactly one identifier.
  - `userId` string, uuid — Owner user id. Provide exactly one of userId / businessId.
  - `businessId` string, uuid — Owner business id. Provide exactly one of userId / businessId.
  - `counterpartyAddress` string — On-chain destination address. Provide exactly one of counterpartyAddress / paymentHash / invoice.
  - `paymentHash` string — Lightning payment hash (64-hex on BTC). Provide exactly one of counterpartyAddress / paymentHash / invoice.
  - `invoice` string — bolt11 invoice (decoded server-side to a payment hash). Provide exactly one of counterpartyAddress / paymentHash / invoice.
  - `currency` string, required — Ledger currency ticker (e.g. `SOL`, `POL`, `ETH`). Must be a supported `LedgerCryptoNetworks` key.
  - `network` string, required — Blockchain network for the currency (e.g. `SOL`, `POLYGON`, `ETH`). Must equal the network implied by `currency`.
  - `counterpartyVaspId` string, required — VASP id from the `id` field of a POST /vasps result; must resolve in the directory.

## Response `201`

success

- TRCounterpartyPublic — Public counterparty row returned by VASP declare (`201`) and in the `counterparty` field of wallet verification.
  - `counterpartyId` string, uuid, required
  - `userId` string, uuid
  - `businessId` string, uuid
  - `identityType` 'CONSUMER' | 'BUSINESS', required
  - `counterpartyAddress` string — Set for on-chain counterparties.
  - `paymentHash` string — Set for Lightning (non-invoice) counterparties.
  - `invoice` string — Set when declared with a bolt11 Lightning invoice.
  - `memo` string — Decoded memo from the bolt11 invoice, when present.
  - `network` string, required
  - `type` 'SELF_HOSTED' | 'VASP', required
  - `subType` 'OWNED' | 'THIRD_PARTY' | 'VASP', required
  - `counterpartyData` object — IVMS-oriented payload; shape depends on counterparty `type` / `subType`.
  - `createdAt` string, date-time, required
  - `updatedAt` string, date-time, required

## Other responses

- `400` — Bad Request. The request was unacceptable, often due to missing a required parameter.
- `401` — Invalid authentication header
- `409` — Address already declared
- `422` — VASP not found or invalid customer identification
- `500` — Unexpected server error.

---

[API](https://skmtc.net/striga/apis/striga-v1.md) · [All operations](https://skmtc.net/striga/apis/striga-v1/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/striga/striga-v1/versions/63e57aa7df45/schema)
