For the complete documentation index, see llms.txt. This page is also available as Markdown.

Get Merchant

Retrieves the complete profile of a single merchant, including company details, tender types, fee settings, and membership list.

Endpoint

GET /Merchants/{id}

Authentication

X-Api-Key: {adminApiKey}

Path parameters

Name
Type
Required
Description

id

string

Yes

The merchantId assigned during boarding

Request headers

Header
Value

X-Api-Key

{adminApiKey}

Accept

application/json

Example request

curl -X GET "https://api.test.devs.beadpay.io/Merchants/{merchantId}" \
-H "X-Api-Key: {adminApiKey}"

Successful response — 200

The response wraps the merchant record in two parts: merchant (core record) and details (extended KYB details, or null if not available). This is the same shape returned by List Merchants at data[].merchant / data[].details.

receivableCurrencyIds contains integer IDs from the /currencies endpoint. 1 represents USD.

This is a live example (redacted). feeInfo came back null here — see the callout below for what that means.

Key fields

Field
Description

merchant

Core merchant record

details

Extended KYB details, or null if not available

tenderTypes

Default rails every child location inherits unless overridden at the location or terminal

receivableCurrencyIds

Settlement currencies, matched against IDs from /currencies

feeInfo

Nullable. Observed as null on merchants; carries the same crypto/card flat-rate shape used when creating or updating a partner. Not the field to read for per-asset crypto pricing

feeInformation.cryptoFees

Per-asset crypto fee breakdown — one entry per tenderType (e.g. bitcoin, bitcoin_Lightning, usdcBase, usdcSolana). This is the field to read for the rate on a specific crypto asset

feeInformation.digitalWalletsFees

Per-tender-type fees for wallet rails (Cash App, PayPal, Venmo, etc.), same shape as cryptoFees, or null if none configured

status

Boarding state: unverified, active, locked, restricted, inactive, suspended, terminated, closed

memberships

Users and roles that manage this merchant in the dashboard

<details> <summary>feeInfo vs. feeInformation.cryptoFees</summary>

feeInfo and feeInformation are both live fields in the API — feeInfo is not deprecated. In practice, feeInfo is returned as null on merchants; the same feeInfo shape (crypto/card, each with a single feeFactor/fixedFee) is used as required input on partner creation and update, so it most likely reflects partner-level terms rather than something set per merchant. feeInformation.cryptoFees is the field that's populated on merchants and carries the actual per-tenderType breakdown — each entry has its own transactionRate (percentage) and perItemFee (fixed). If you need to know what a merchant is charged for bitcoin versus USDC specifically, read feeInformation.cryptoFees.

</details>

Error responses

Code
Condition

401

Missing or invalid API key

403

Authenticated but not permitted to access this merchant

404

Merchant {id} does not exist or is not visible to your key

Best practices

  • Cache the response for dashboard sessions — merchant profiles rarely change during a user session

  • Use the updated timestamp to decide when to invalidate local copies

  • Check status before enabling production payment traffic — the merchant must be active

  • Respect maxTransactionAmount when building POS flows to prevent declines on oversize transactions

  • Read feeInformation.cryptoFees for the fee on a specific crypto asset — feeInfo is typically null on merchants

Last updated