Skip to content

Eligibility (Pre-checks)

Transaction Eligibility - Pre-check if a customer can perform a transaction.

Purpose: Determine if customer meets requirements before attempting transaction.

Returns:

  • paymentReady: Boolean indicating if customer can transact immediately
  • requirements: Array of outstanding KYC/compliance requirements

Possible Requirements:

  • US_TAX_ID: US tax identification needed
  • PERSONAL_DETAILS: Name, DOB, address required
  • DOCUMENT: Government ID needed
  • SELFIE: Liveness check required
  • SOURCE_FUNDS: Source of funds declaration needed
  • OCCUPATION: Occupation information required
  • PURPOSE_OF_TX: Transaction purpose needed

Best Practice: Check eligibility before showing price quotes to avoid failed transactions.

Identity transaction eligibility

Request

Request transaction eligibility for a specific identity

Security
HMACAuth
Bodyapplication/jsonrequired
One of:

Request payload for transaction eligibility.

Identification rules:

  • Provide identityReference, OR provide all of email, countryOfResidence and dateOfBirth.
  • Responses containing 422 status codes can vary based on the restrictions found for the profile for example:
    • limit breach (daily, weekly, monthly, annual)
    • age restrictions
    • unsupported asset or fiat currency
    • Locality restrictions

Amount rules:

  • Provide exactly one of fiatAmount or cryptoAmount.

Conditional:

  • state is required when countryOfResidence is US.
identityReferencestring, [ 1 .. 255 ] characters

Partner identity reference.

Example:"user-123"
methodstring, [ 1 .. 100 ] charactersrequired

The payment method.

Available payments
debit-credit-card
apple-pay
sepa-bank-transfer
gbp-bank-transfer
ach-bank-transfer
zar-bank-transfer
interac-bank-transfer
ideal-bank-transfer
google-pay
payid-bank-transfer
wire-transfer
spei
pse
khipu
aud-bank-transfer
usd-bank-transfer
paypal
klarna-paynow
Example:"payid-bank-transfer"
transactionTypestringrequired

Transaction type: ONRAMP or OFFRAMP.

Enum:"ONRAMP""OFFRAMP"
Example:"ONRAMP"
fiatstring, [ 1 .. 10 ] characters^[A-Z0-9]{1,10}$required

Fiat currency code allowed for the partner (e.g., ISO 4217). Enforced server-side validation for availability.

Example:"AUD"
cryptostring, [ 1 .. 10 ] characters^[A-Z0-9]{1,10}$required

Crypto asset code. Enforced server-side validation for availability.

Example:"BTC"
fiatAmountstring, non-empty^[0-9]+(\.[0-9]+)?$

Fiat amount as a decimal string. Mutually exclusive with cryptoAmount.

Example:"250.00"
cryptoAmountstring, non-empty^[0-9]+(\.[0-9]+)?$

Crypto amount as a decimal string. Mutually exclusive with fiatAmount.

Example:"0.125"
blockchainstring, non-emptyrequired

Blockchain identifier.

Example:"BITCOIN"
emailstring, (email)

Required when identityReference is not provided.

countryOfResidencestring, = 2 characters^[A-Z]{2}$

Required when identityReference is not provided. ISO 3166-1 alpha-2 country code.

Example:"AU"
dateOfBirthstring, (date)

Required when identityReference is not provided. Format YYYY-MM-DD.

Example:"1990-01-30"
statestring

Required if countryOfResidence is US. (Enforced server-side.)

Example:"CA"

Check if existing customer can perform transaction

curl -i -X POST \
  https://docs.banxa.com/_mock/products/native-api/openapi/eapi/v0/identities/transactions/eligibility \
  -H 'Authorization: YOUR_API_KEY_HERE' \
  -H 'Content-Type: application/json' \
  -d '{
    "identityReference": "customer-12345",
    "method": "payid-bank-transfer",
    "transactionType": "ONRAMP",
    "fiat": "AUD",
    "crypto": "BTC",
    "blockchain": "BTC",
    "fiatAmount": "100.00"
  }'

Responses

Eligibility check result

Bodyapplication/json
paymentReadybooleanrequired

Whether the identity is eligible and can proceed with payment/transaction. When true, there are no KYC requirements.

Example:false
kycRequirementsArray of strings, uniquerequired

List of outstanding requirements that must be satisfied before payment can proceed. If paymentReady is true, this will typically be an empty array.

Items Enum:"TIN""NAME""DOB""ADDRESS""POA""DOCUMENT""SELFIE""SOURCE_FUNDS""OCCUPATION""PURPOSE_OF_TX"
Example:
[ "TIN", "NAME", "DOB", "ADDRESS", "POA", "DOCUMENT", "SELFIE", "SOURCE_FUNDS", "OCCUPATION", "PURPOSE_OF_TX" ]
Response

Customer has completed all KYC requirements and can proceed

{ "paymentReady": true, "kycRequirements": [] }