Skip to main content
POST
/
api
/
decisions
curl --request POST \
  --url https://{instance}.{env}.on-hellgate.cloud/api/decisions \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "billing": {
    "address1": "96 Powers Street",
    "city": "Milford",
    "country": "US",
    "first_name": "James",
    "last_name": "Smith",
    "postal_code": "03055",
    "state": "NH"
  },
  "context": "checkout",
  "credential": {
    "pan": {
      "cardholder_name": "Sherlock Holmes",
      "expiry_month": 12,
      "expiry_year": 2031,
      "scheme": "visa",
      "value": "4111111111111111"
    },
    "type": "pan"
  },
  "customer": {
    "id": "cust_001",
    "email": "sherlock@example.com",
    "first_name": "Sherlock",
    "last_name": "Holmes"
  },
  "device": {
    "fingerprint": "fp_vdm_test",
    "ip": "1.2.3.4",
    "language": "en-GB"
  },
  "items": [
    {
      "categories": [
        "Accessories",
        "Smoking"
      ],
      "name": "Calabash Pipe",
      "price": 4900,
      "product_type": "physical",
      "quantity": 1,
      "sku": "PIPE-001"
    }
  ],
  "metadata": {
    "campaign": "spring_2026",
    "channel": "web"
  },
  "shipping": {
    "carrier": "DHL",
    "method": "STANDARD"
  },
  "transaction": {
    "amount": 4900,
    "currency": "USD",
    "reference": "ord_001"
  }
}
'
{
  "id": "9f1c8e2a-3b4d-4e5f-8a9b-0c1d2e3f4a5b",
  "backend_results": [],
  "context": "checkout",
  "credential_fingerprint": "crd_4ba2188f9c1e",
  "credential_type": "pan",
  "decision": "ALLOW",
  "evaluated_at": "2026-06-02T12:00:00Z",
  "events": [],
  "has_backend_error": false,
  "latency_us": 4250,
  "masked_credential": "411111 ****** 1111",
  "resolution": null,
  "ruleset_id": "1f2e3d4c-5b6a-4978-8c0d-1e2f3a4b5c6d",
  "ruleset_version": 3,
  "source": "RULE_ENGINE",
  "triggered_rules": []
}

Authorizations

Authorization
string
header
required

HS256-signed JWT bearer token, obtained via the OAuth2 client-credentials grant (see Authentication).

Body

application/json

Decision request

credential
object
required
customer
object
required
transaction
object
required
airline
Airline · object

Airline / travel industry data. Present only for airline transactions.

backend_options
object

Provider-specific passthrough fields keyed by backend identifier. Not persisted.

Example:
{
"sift": { "$site_domain": "shop.example.com" }
}
billing
object

Billing address for the transaction

context
string

Ruleset context key. Defaults to "default" if omitted.

Example:

"checkout"

device
object
items
Item · object[]

Cart / order line items

metadata
object

Flat key-value pairs stored alongside the decision. Available to rules. Not sent to backends.

Example:
{
"campaign": "spring_2026",
"channel": "web"
}
shipping
object

Shipping address for the transaction

Response

Decision result

Result of evaluating a transaction against the active ruleset.

id
string<uuid>

Unique decision identifier

amount
integer | null
backend_results
BackendResult · object[]

One entry per backend rule that was executed.

context
string
Example:

"checkout"

credential_fingerprint
string

Deterministic HMAC-SHA256 card instrument identifier

Example:

"crd_4ba218..."

credential_type
enum<string> | null

Type of credential supplied in the request

Available options:
pan,
masked_pan,
sepa
currency
string | null
customer_id
string | null
decision
enum<string>

BLOCK terminates on first match. REVIEW accumulates. ALLOW is the default when no rules match.

Available options:
ALLOW,
BLOCK,
REVIEW,
PROVISIONAL
device_fingerprint
string | null
device_ip
string | null
evaluated_at
string<date-time>
events
object[]

Always empty on a freshly evaluated decision.

has_backend_error
boolean

True if any backend_results entry carries a non-nil error (e.g. "backend_capability_disabled").

integration
string | null

Integration type that originated this decision (e.g. 'interceptor')

interceptor_id
string<uuid> | null

ID of the interceptor that originated this decision

latency_us
integer
Example:

4250

masked_credential
string | null

Display-safe masked representation, e.g. '411111 ****** 4242'

Example:

"411111 ****** 4242"

metadata
object

Merchant-supplied key-value pairs stored with the decision.

resolution
object

Always null on a freshly evaluated decision.

ruleset_id
string<uuid> | null
ruleset_version
integer | null
source
enum<string>

RULE_ENGINE — condition rules only. BACKEND — backend rule(s) only. COMBINED — both.

Available options:
RULE_ENGINE,
BACKEND,
COMBINED
transaction_reference
string | null
triggered_rules
TriggeredRule · object[]