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

# Declare VASP counterparty

`POST /counterparty/vasp`

## Request

- Base URL: `https://sandbox.striga.com/api/v1/travel-rule`
- URL: `https://sandbox.striga.com/api/v1/travel-rule/counterparty/vasp`
- Auth: API key in header `api-key` and API key in header `Authorization`

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.dev/striga/apis/travel-rule.md) - [All operations](https://skmtc.dev/striga/apis/travel-rule/llms.txt) - [OpenAPI document](https://skmtc.dev/striga/apis/travel-rule/revisions/c82fbc1ad95b?raw)
