Easy Labs
APIPaymentsPayment instrument

Create a payment instrument (Basis Theory proxy)

Create a payment instrument from a Basis Theory token. Browser uses the BT SDK to tokenize a card, then sends `{tokenId, identityId, type, ...}` here. The route forwards through the BT proxy to Finix; raw PAN data never touches easy-api.

POST
/v1/api/payment-instruments/
x-easy-api-key<token>

Merchant API key. Publishable keys (pk_test_* / pk_live_) are safe for browser/frontend use and carry a limited scope set (sessions, payment_instruments, customers, orders writes; products, product_prices, payment_links reads). Secret keys (sk_test_ / sk_live_*) grant full admin access and must only be used server-side.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

curl -X POST "https://loading/v1/api/payment-instruments/" \  -H "Content-Type: application/json" \  -d '{    "type": "PAYMENT_CARD",    "tokenId": "tok_abc123",    "identityId": "IDxxxxxxxxxxxxxxxxxx",    "name": "John Doe",    "address": {      "postal_code": "94105"    },    "tags": {      "customer_type": "premium"    }  }'
{
  "success": true,
  "timestamp": "2026-02-06T12:00:00.000Z",
  "message": "Payment instrument created",
  "data": {
    "id": "PIxxxxxxxxxxxxxxxxxx",
    "identity_id": "IDxxxxxxxxxxxxxxxxxx",
    "instrument_type": "PAYMENT_CARD",
    "type": "PAYMENT_CARD",
    "created_at": "2026-02-06T12:00:00.000Z"
  }
}
{
  "success": false,
  "timestamp": "2019-08-24T14:15:22Z",
  "error": {
    "code": "string",
    "message": "string",
    "details": null
  }
}
{
  "success": false,
  "timestamp": "2019-08-24T14:15:22Z",
  "error": {
    "code": "string",
    "message": "string",
    "details": null
  }
}
{
  "success": false,
  "timestamp": "2019-08-24T14:15:22Z",
  "error": {
    "code": "string",
    "message": "string",
    "details": null
  }
}