BIN
BIN Intelligence (v1)
Resolve the account range for a card BIN, full PAN, or network token and return the complete issuer, network, card, funding, product, capability, risk, and payout-eligibility profile in a single call.
POST
Performs a single BIN Intelligence lookup and returns the full, normalized profile for the resolved account range. Unlike the tiered Card Lookup endpoint, BIN Intelligence has no feature flags: one call returns every attribute PayOS can resolve. Any attribute the card networks do not provide for the account range is returned as
Sandbox requests use the test base URL and a test key:
Control characters are also rejected. Requests return 406 when input matches a security pattern, such as consecutive dots (
null.
The response is normalized, so the same shape is returned for every brand. Fields that apply only to a specific network (for example, several Visa-only risk flags, the Mastercard issuer number, or the Discover network-program flags) are populated only for that network and return null otherwise.
Authentication
Requires API Key authentication via theX-API-Key header.
Request Body
Provide exactly one credential:bin for a 6 to 8 digit prefix, or accountNumber for a full number. No other input is required, and there are no feature flags. The full profile is returned on every successful call.
string
A BIN or account prefix: 6 to 8 digits, digits only.A 6 to 8 digit prefix is enough for most lookups, but some prefixes are shared across issuers or products, in which case the result is
MULTIPLE — resubmit with the full accountNumber to resolve a single range.Either bin or accountNumber is required, but not both.Example: "41111111"string
A full account number: 12 to 19 digits, digits only, no spaces or dashes. Accepts a card number (PAN) or a network token number (for example, a mobile wallet credential) — you do not need to know which you hold. The response’s
data.card.credentialType reports how the network classified it (PAN or TOKEN).Either bin or accountNumber is required, but not both.Example: "4111111111111111"Response
200 OK
Successful lookup. Inspectdata.status to confirm the match before relying on the rest of the profile: a MULTIPLE or NO_MATCH result is still returned with HTTP 200.
boolean
true when the lookup was processed.string
Unique identifier for the lookup. Store it with your records and quote it to PayOS support for troubleshooting.
integer
HTTP status code for the response.
string | null
Machine-readable error code.
null on success (HTTP 200). On a 207 it is the string PARTIAL_FAILURE. On 400 / 401 / 406 the error is conveyed in error and errorCode may be absent.object
The BIN Intelligence profile. Always a single object (one card profile), never an array of candidate ranges. On a
MULTIPLE result the card profile is not populated; resubmit with the full accountNumber to resolve to one range.Lookup Status
The match result is returned indata.status and is independent of the HTTP status code. All three values return HTTP 200.
Every lookup returns a single response with a single
data object — one card profile, never an array of candidate ranges. When the supplied digits match more than one account range, data.status is MULTIPLE and no card profile is populated; resubmit the lookup with more digits (an 8-digit bin, or the full accountNumber) to resolve to a single range. The API does not fan out or return a list of candidate matches.207 Multi-Status
Partial processing failure: one or more upstream operations failed during the lookup.success is false and errorCode is PARTIAL_FAILURE. Any data that was resolved is returned in data, using the same profile shape as a 200 COMPLETED response (the example above is abbreviated).
If you receive a 207, contact PayOS support with the inquiryId and the full response.
400 Bad Request
Validation error. Returned when the request is malformed, for example when neitherbin nor accountNumber is supplied, when both are supplied, when either contains non-digit characters, when bin is not 6 to 8 digits, when accountNumber is not 12 to 19 digits, or when the card networks reject the supplied credential as unprocessable.
406 Not Acceptable
Character validation error. Returned when input contains forbidden characters or matches a security pattern (see Input Validation below).401 Unauthorized
Authentication error. Returned when theX-API-Key header is missing or invalid. Authentication and authorization errors use a different envelope from lookup errors: { "error": { "code", "ruleCode", "message" } }.
403 Forbidden
Authorization error. Returned when the API key is valid but not authorized for BIN Intelligence. Uses the same{ "error": { "code", "ruleCode", "message" } } envelope as 401. Contact PayOS to enable BIN Intelligence for your key.
429 Too Many Requests
Rate limit exceeded.errorCode is RATE_LIMIT_EXCEEDED. Retry after the time indicated by the RateLimit-Reset response header.
502 Bad Gateway
Upstream error. The lookup could not be completed because an upstream dependency failed or is unavailable. The response includes aninquiryId for the attempted lookup. Retry later; if the error persists, contact PayOS support with the inquiryId.
Sandbox Testing
Sandbox (test API keys,sk_test_…) returns deterministic test profiles for the credentials below — no real card data is required, and the request and response shapes are identical to production. Nothing extra is needed in the request: the same call against the sandbox base URL with a test key just works.
Each test range works either way — send the 6-digit prefix as
bin or the example full number as accountNumber. Any other sandbox input returns NO_MATCH.
Error Codes
Example Usage
Input Validation
The lookup accepts only the credential.bin and accountNumber must be digits only, with no spaces or dashes. The following characters are rejected, and the request returns 406 Not Acceptable:
..) or SQL keywords and comment markers (for example SELECT, DROP, UNION, --, /*). For security, the error message does not identify which field caused the failure.
Notes
- BIN Intelligence returns the full profile on every successful call. There are no feature flags, and there is no separate request to enable additional fields.
- Always check
data.statusbefore consuming the profile.MULTIPLEandNO_MATCHreturn HTTP 200. - Fields that are network-specific (for example, Visa-only risk flags, the Mastercard issuer number, or Discover program flags) are populated only for that network and return
nullotherwise. - Payout eligibility (push and pull) can differ between account ranges under one issuing BIN, so it is resolved at the account-range level rather than the BIN level.
- Every lookup is tracked with a unique
inquiryIdfor support purposes. Full account numbers are masked in stored inquiry records. - For plain-language field definitions, usage guidance, and the network code lists (card type, product, ACNL, ARDEF), see the BIN Intelligence guide.
