POST
/
counterparties
Create counterparty.
curl --request POST \
  --url https://sandbox.api.openfx.com/v1/counterparties \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: <idempotency-key>' \
  --header 'X-Signature: <api-key>' \
  --header 'X-Timestamp: <api-key>' \
  --data '
{
  "customerId": "cus_01953e1a5f4b7000",
  "entityType": "individual",
  "name": "<string>",
  "email": "user@example.com",
  "address": {
    "line1": "123 Main Street",
    "city": "New York",
    "postalCode": "10001",
    "country": "US",
    "line2": "Suite 400",
    "state": "NY"
  },
  "metadata": {}
}
'
{
  "id": "cpt_01953e1a5f4b7004",
  "customerId": "cus_01953e1a5f4b7000",
  "entityType": "business",
  "name": "Globex Corporation",
  "email": "payments@globex.com",
  "status": "active",
  "metadata": {},
  "createdAt": "2026-02-23T12:00:00Z",
  "updatedAt": "2026-02-23T12:00:00Z"
}

Authorizations

Authorization
string
header
required

API key issued at onboarding. Passed as a Bearer token in the Authorization header: Authorization: Bearer <api-key>. Identifies the caller and determines organization scope. Invalid or revoked keys return 401 with error type authentication_error.

X-Signature
string
header
required

Ed25519 or RSA-SHA256 asymmetric signature over the request payload (ADR-0015). Provides request integrity and non-repudiation. The signature covers the HTTP method, path, query string, request body, and timestamp. Invalid signatures return 401 with error type authentication_error.

X-Timestamp
string
header
required

Unix timestamp (seconds) of when the request was signed. Server rejects requests where the timestamp drifts beyond +/-60 seconds from server time to prevent replay attacks. Must match the timestamp used in the signature computation.

Headers

Idempotency-Key
string
required

Idempotency key for this request. UUID v4 recommended. Max 128 characters. 24-hour retention. Same key + same body replays original response with Idempotency-Replayed: true. Same key + different body returns 409 (code: duplicate_idempotency_key). Same key while the original request is still processing returns 409 with a Retry-After header (code: idempotency_key_in_flight).

Maximum string length: 128
Example:

"550e8400-e29b-41d4-a716-446655440000"

Body

application/json
customerId
string
required

Customer resource identifier.

Pattern: ^cus_[A-Za-z0-9]+$
Example:

"cus_01953e1a5f4b7000"

entityType
enum<string>
required

Whether the counterparty is an individual or business.

Available options:
individual,
business
name
string
required
email
string<email>

Email address per RFC 5322.

Example:

"user@example.com"

address
object

Physical or mailing address. Used on Entity and Counterparty.

metadata
object

Consumer-defined key-value store. Available on all primary resources. Max 50 keys. Keys must match ^[a-zA-Z0-9_]{1,40}$. Values are strings (max 500 chars) or null.

Response

Counterparty created.

External party that can send or receive payments. No inline rail details — those live on PaymentMethod sub-resources.

id
string
required

Counterparty resource identifier.

Pattern: ^cpt_[A-Za-z0-9]+$
Example:

"cpt_01953e1a5f4b7004"

customerId
string
required

Customer resource identifier.

Pattern: ^cus_[A-Za-z0-9]+$
Example:

"cus_01953e1a5f4b7000"

entityType
enum<string>
required

Whether the counterparty is an individual or business.

Available options:
individual,
business
name
string
required

Full name of the counterparty.

Example:

"Globex Corporation"

status
enum<string>
required

Status of a counterparty.

Available options:
active,
archived
createdAt
string<date-time>
required

UTC timestamp in RFC 3339 / ISO 8601 format.

Example:

"2026-02-23T12:00:00Z"

updatedAt
string<date-time>
required

UTC timestamp in RFC 3339 / ISO 8601 format.

Example:

"2026-02-23T12:00:00Z"

email
string<email>

Email address per RFC 5322.

Example:

"user@example.com"

address
object

Physical or mailing address. Used on Entity and Counterparty.

compliance
object

Read-only compliance metadata on payments and counterparties.

metadata
object

Consumer-defined key-value store. Available on all primary resources. Max 50 keys. Keys must match ^[a-zA-Z0-9_]{1,40}$. Values are strings (max 500 chars) or null.