Skip to main content
A counterparty is a named destination or source for money movement. Before initiating a payout, your entity must have a counterparty on file — think of it as a saved recipient record. Counterparties are scoped to a specific entity via entity_id and can be either individuals or businesses. Payment details (bank account numbers, routing info) are attached separately and linked to a counterparty.

Create a counterparty

curl -X POST https://api.nuvion.dev/counterparties \
  -H "Authorization: Bearer $NUVION_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "individual",
    "entity_id": "01KBCFY3VB1XT0MC8VMZXME6RS",
    "nickname": "Jane Smith",
    "profile": {
      "first_name": "Jane",
      "last_name": "Smith",
      "relationship": "vendor",
      "email": "jane.smith@example.com",
      "address": {
        "line1": "123 Main St",
        "city": "Austin",
        "state": "TX",
        "postal_code": "78701",
        "country": "US"
      },
      "phone": {
        "number": "+15125550142",
        "type": "mobile",
        "country": "US"
      },
      "identification": [
        {
          "type": "P",
          "number": "P123456789",
          "issuing_country": "US"
        }
      ]
    }
  }'

Request parameters

type
string
required
The counterparty type. One of individual or business.
entity_id
string
required
The ULID of the entity this counterparty belongs to.
nickname
string
A human-readable label for the counterparty. Defaults to first_name + last_name for individuals, or legal_name for businesses. Max 255 characters.
profile
object
required
Profile fields differ based on type.

The counterparty object

id
string
Unique identifier for the counterparty. ULID format.
entity_id
string
The ULID of the entity this counterparty belongs to.
type
string
The counterparty type. Either individual or business.
nickname
string
Human-readable label for the counterparty.
status
string
Current status of the counterparty. Either active or inactive. Inactive counterparties cannot be used in transfers.
profile
object
Profile details for the counterparty. Shape depends on type.
meta
object
Additional metadata attached to the counterparty.
created
number
Unix timestamp in milliseconds of when the counterparty was created.
updated
number
Unix timestamp in milliseconds of the last update to the counterparty.
{
  "id": "01KM37EZ0AYCVDXJ3WDHXPPSZ9",
  "entity_id": "01KBCFY3VB1XT0MC8VMZXME6RS",
  "type": "individual",
  "nickname": "Jane Smith",
  "status": "active",
  "profile": {
    "first_name": "Jane",
    "last_name": "Smith",
    "relationship": "vendor",
    "email": "jane.smith@example.com",
    "address": {
      "line1": "123 Main St",
      "city": "Austin",
      "state": "TX",
      "postal_code": "78701",
      "country": "US"
    },
    "identification": [
      {
        "type": "P",
        "number": "P123456789",
        "issuing_country": "US"
      }
    ],
    "phone": {
      "number": "+15125550142",
      "type": "mobile",
      "country": "US"
    }
  },
  "meta": {},
  "created": 1740000000000,
  "updated": 1740000000000
}

List counterparties

Returns a paginated list of counterparties for the given entity.
entity_id is required when authenticating with an API key. It is inferred from the token when using entity-scoped access.
curl -G https://api.nuvion.dev/counterparties \
  -H "Authorization: Bearer $NUVION_API_KEY" \
  -d entity_id=01KBCFY3VB1XT0MC8VMZXME6RS \
  -d status=active \
  -d limit=20

Query parameters

entity_id
string
required
Filter counterparties by entity. Required when using API key authentication.
type
string
Filter by counterparty type. One of individual or business.
status
string
Filter by status. One of active or inactive.
limit
number
Number of results to return. 1–100. Defaults to 20.
cursor
string
Cursor from the previous response’s meta.pagination.next_cursor to fetch the next page.

Response

{
  "data": [
    {
      "id": "01KM37EZ0AYCVDXJ3WDHXPPSZ9",
      "entity_id": "01KBCFY3VB1XT0MC8VMZXME6RS",
      "type": "individual",
      "nickname": "Jane Smith",
      "status": "active",
      "profile": {
        "first_name": "Jane",
        "last_name": "Smith",
        "relationship": "vendor",
        "email": "jane.smith@example.com",
        "address": {
          "line1": "123 Main St",
          "city": "Austin",
          "state": "TX",
          "postal_code": "78701",
          "country": "US"
        }
      },
      "meta": {},
      "created": 1740000000000,
      "updated": 1740000000000
    }
  ],
  "meta": {
    "pagination": {
      "has_more": false,
      "next_cursor": null
    }
  }
}

Get a counterparty

Retrieves a single counterparty by ID.
curl https://api.nuvion.dev/counterparties/01KM37EZ0AYCVDXJ3WDHXPPSZ9 \
  -H "Authorization: Bearer $NUVION_API_KEY"
Returns the counterparty object.

Update a counterparty

Partially updates an existing counterparty. Only the fields included in the request body are changed — omitted fields remain unchanged.
curl -X PATCH https://api.nuvion.dev/counterparties/01KM37EZ0AYCVDXJ3WDHXPPSZ9 \
  -H "Authorization: Bearer $NUVION_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "profile": {
      "email": "jane.updated@example.com"
    }
  }'

Request parameters

entity_id
string
Reassign or confirm the entity scope for this counterparty.
nickname
string
Update the display label for this counterparty. Max 255 characters.
profile
object
Any subset of profile fields to update. Fields not included are not changed. Refer to the profile fields in the create section for the full list of accepted fields.
Returns the updated counterparty object.

Deactivate a counterparty

Deactivates a counterparty, setting its status to inactive.
Deactivated counterparties cannot receive transfers. This action cannot be reversed via the API — contact Nuvion support to reactivate a counterparty.
curl -X POST https://api.nuvion.dev/counterparties/01KM37EZ0AYCVDXJ3WDHXPPSZ9/deactivate \
  -H "Authorization: Bearer $NUVION_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "entity_id": "01KBCFY3VB1XT0MC8VMZXME6RS"
  }'
Returns the updated counterparty object with status: "inactive". Returns 409 Conflict if the counterparty is already inactive.

What’s next

Send a Payout

Initiate a transfer to a counterparty using their saved payment details.

Counterparties API reference

Full endpoint documentation for creating and managing counterparties.