# Initiate fraud screening

Request a standalone fraud screening.

## Initiate standalone fraud screening

/v1/transaction-risk-screenings/standalone

**Device data collection required**

Before calling the standalone fraud screening API, you must complete the device data collection process using the PXP SDK. This process generates a `deviceSessionId` that must be included in your API request. The `sessionID` ensures that the fraud screening is processed with complete device intelligence data, which is critical for accurate risk assessment.

### Request example

Use the following snippet to request a standalone fraud screening. Note that all fields are optional.


```json
{
  "merchantGroup": "GROUP123",
  "merchant": "MERCH123",
  "site": "SITE123",
  "performRiskScreening": true,
  "excludeDeviceData": false,
  "channel": "web",
  "deviceSessionId": "d121ea2210434ffc8a90daff9cc97e76",
  "creationDateTime": "2024-01-15T10:30:00Z",
  "userIp": "192.168.1.100",
  "account": {
    "id": "user123456",
    "type": "registered",
    "creationDateTime": "2023-06-15T08:00:00Z",
    "username": "john.doe@pxp.io",
    "accountIsActive": true
  },
  "items": [
    {
      "id": "item001",
      "price": 2999,
      "description": "Wireless Bluetooth Headphones",
      "name": "Premium Headphones",
      "quantity": 1,
      "category": "Electronics",
      "subCategory": "Audio",
      "isDigital": false,
      "sku": "SKU-WBH-001",
      "upc": "123456789012",
      "brand": "TechBrand",
      "url": "https://example.com/products/wireless-headphones",
      "imageUrl": "https://example.com/images/headphones.jpg",
      "physicalAttributes": {
        "color": "Black",
        "size": "Medium",
        "weight": "250g",
        "height": "20cm",
        "width": "15cm",
        "depth": "8cm"
      },
      "descriptors": [
        "wireless",
        "bluetooth",
        "noise-cancelling"
      ],
      "isService": false
    }
  ],
  "fulfillments": [
    {
      "type": "SHIPPED",
      "shipping": {
        "shippingAmount": 599,
        "shippingProvider": "FedEx",
        "trackingNumber": "1234567890123456",
        "shippingMethod": "STANDARD"
      },
      "items": [
        {
          "id": "item001",
          "quantity": 1
        }
      ],
      "status": "PENDING",
      "accessUrl": null,
      "store": null,
      "recipientPerson": {
        "name": {
          "first": "John",
          "middle": "A",
          "family": "Doe",
          "prefix": "Mr",
          "suffix": null,
          "preferred": "John"
        },
        "emailAddress": "john.doe@example.com",
        "phoneNumber": "+1-555-123-4567",
        "address": {
          "line1": "123 Main Street",
          "line2": "Apt 4B",
          "city": "New York",
          "region": "NY",
          "countryCode": "US",
          "postalCode": "10001"
        },
        "dateOfBirth": "1990-05-15"
      },
      "merchantFulfillmentId": "FULFILL-001"
    }
  ],
  "transactions": [
    {
      "merchantTransactionId": "TXN-20240115-001",
      "processor": "stripe",
      "processorMerchantId": "acct_1234567890",
      "payment": {
        "type": "CREDIT_CARD",
        "paymentToken": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6a7b8c9d0e1f2",
        "bin": "424242",
        "last4": "4242"
      },
      "subtotal": 2999,
      "orderTotal": 3598,
      "currency": "USD",
      "tax": {
        "isTaxable": true,
        "taxableCountryCode": "US",
        "taxAmount": 240,
        "outOfStateTaxAmount": 0
      },
      "billedPerson": {
        "name": {
          "first": "John",
          "middle": "A",
          "family": "Doe",
          "prefix": "Mr",
          "suffix": null,
          "preferred": "John"
        },
        "emailAddress": "john.doe@example.com",
        "phoneNumber": "+1-555-123-4567",
        "address": {
          "line1": "123 Main Street",
          "line2": "Apt 4B",
          "city": "New York",
          "region": "NY",
          "countryCode": "US",
          "postalCode": "10001"
        },
        "dateOfBirth": "1990-05-15"
      },
      "transactionStatus": "AUTHORIZED",
      "authorizationStatus": {
        "authResult": "Approved",
        "dateTime": "2024-01-15T10:30:15Z",
        "verificationResponse": {
          "avsStatus": "Y",
          "cvvStatus": "Match"
        },
        "declineCode": null,
        "processorAuthCode": "AUTH123456",
        "processorTransactionId": "pi_1234567890abcdef",
        "acquirerReferenceNumber": "40614857370"
      },
      "items": [
        {
          "id": "item001",
          "quantity": 1
        }
      ]
    }
  ],
  "promotions": [
    {
      "id": "PROMO-WINTER2024",
      "description": "Winter Sale - 10% off electronics",
      "status": "active",
      "statusReason": "promotion_applied",
      "discount": {
        "percentage": 0.1,
        "amount": 300,
        "currency": "USD"
      },
      "credit": null
    }
  ],
  "loyalty": {
    "id": "LOYALTY-12345",
    "description": "Premium Member Rewards",
    "credit": {
      "creditType": "points",
      "amount": 150,
      "currency": "USD"
    }
  },
  "customFields": {
    "example-custom-field-1": "AFF-001"
  }
}
```

| Parameter | Description |
|  --- | --- |
| `merchantGroup`string | Your unique merchant group identifier, as assigned by PXP. |
| `merchant`string (≤  20 characters) | Your unique merchant identifier, as assigned by PXP. |
| `site`string (≤ 20 characters) | Your unique site identifier, as assigned by PXP. |
| `performRiskScreening`boolean | Whether to enable risk screening for this transaction. |
| `excludeDeviceData`boolean | Whether to exclude device fingerprinting data from analysis. |
| `channel`string (≤ 256 characters) | The channel through which the transaction was initiated. For example, `ACME_IOS_APP`. |
| `deviceSessionId`string (≤ 256 characters) | The unique session identifier for the customer's end-user session on your site or app. This must be the same session ID used in the device data collection from the client-side Kount SDK. Format: `^[0-9A-Za-z]*$`. |
| `creationDateTime`string | The date and time when the order was placed, in ISO 8601 format. |
| `userIp`string | The customer's IPv4 address, in dotted decimal notation. For example, `192.168.1.27`. |
| `account`object | Details about the customer's account. |
| `account.id`string | The unique identifier for the account, as chosen by you. |
| `account.type`string | The account type, as chosen by you. |
| `account.creationDateTime`string | The date and time when the account was created, in ISO 8601 format. |
| `account.username`string | The username or email address associated with the account. |
| `account.accountIsActive`boolean | Whether the account is currently active. |
| `items`array | Array of details about each item in the order. |
| `items.id`string | The unique identifier for the item, as chosen by you. |
| `items.price`integer | The price of the single item in the lowest currency factor. For example, the lowest currency in `USD` is pennies, so $1.00 would have the value of `100`. Must be a natural number including `0`. |
| `items.description`string | The description of the item being purchased. |
| `items.name`string | The name of the item being purchased. Typically, this is the SKU. |
| `items.quantity`integer | The quantity of the item being purchased. This must be at least `1`. |
| `items.category`string | A high-level or generalised description of the item. |
| `items.subCategory`string | A lower-level or more specific description of the item. |
| `items.isDigital`boolean | Whether the item is a digital good or service (`true`), or a physical item or service (`false`). |
| `items.sku`string | The item's Stock Keeping Unit identifier (SKU), when available. |
| `items.upc`string | The item's Universal Product Code (UPC), when available. |
| `items.brand`string | The item's brand name. |
| `items.url`string | The URL to the item's product page. |
| `items.imageUrl`string | The URL to the product's image. |
| `items.isService`boolean | Whether the item is a service (true), or a digital or physical good (false). |
| `items.physicalAttributes`object | Details about the item's physical attributes, if it's a physical good. |
| `items.physicalAttributes.color`string | The item's colour, when there are different colour options. |
| `items.physicalAttributes.size`string | The item's size, when there are different size options. |
| `items.physicalAttributes.weight`string | The item's weight, with units. |
| `items.physicalAttributes.height`string | The item's height, with units. |
| `items.physicalAttributes.width`string | The item's width, with units. |
| `items.physicalAttributes.depth`string | The item's depth, with units. |
| `items.descriptors`array of strings | Array of descriptive tags or keywords for the item. |
| `fulfillments`array | Array of details about the fulfillment of the order. |
| `fulfillments.type`string (enum) | The type of fulfillment.Possible values:`SHIPPED``DIGITAL``STORE_PICK_UP``LOCAL_DELIVERY``STORE_DRIVE_UP``IN_PERSON` |
| `fulfillments.status`string (enum) | The current status of the fulfillment. Possible values:`PENDING``UNFULFILLED``ON_HOLD``FULFILLED``SCHEDULED``PARTIALLY_FULFILLED``DELAYED``CANCELED` |
| `fulfillments.accessUrl`string or null | The URL that the customer needs to visit to retrieve the digital good. |
| `fulfillments.store`object or null | Details about the store where the order is being fulfilled, for in-store pickups. |
| `fulfillments.store.id`string | A unique identifier for the store, as chosen by you. |
| `fulfillments.store.name`string | A human-readable name for the store, as chosen by you. |
| `fulfillments.store.address`object | Details about the store's address. |
| `fulfillments.store.address.line1`string | The first line of the store's address. |
| `fulfillments.store.address.line2`string | The second line of the store's address. |
| `fulfillments.store.address.city`string | The city of the store's address. |
| `fulfillments.store.address.region`string | The state/province/region of the store's address. |
| `fulfillments.store.address.countryCode`string | The country code of the store's address, in ISO 3166 format. |
| `fulfillments.store.address.postalCode`string | The postal/ZIP code of the store's address. |
| `fulfillments.merchantFulfillmentId`string | A unique identifier for this fulfillment, as chosen by you. |
| `fulfillments.shipping`object | Details about the shipping. This should be included even for digital goods. |
| `fulfillments.shipping.shippingAmount`integer | The total amount of the shipping cost, in its lowest denomination. For example, the lowest denomination in USD is the penny, so $1.00 has a "total" of `100`. The total must be a natural number, which includes `0`. |
| `fulfillments.shipping.shippingProvider`string | The service used to deliver the order to the recipient. If you are fulfilling the order yourself, set the value to `FBM` (fulfilled by merchant). For example, if providing digital goods. |
| `fulfillments.shipping.trackingNumber`string | The tracking number from the shipping provider for shipped goods. |
| `fulfillments.shipping.shippingMethod`string (enum) | The shipping method used.Possible values:`STANDARD``EXPRESS``SAME_DAY``NEXT_DAY``SECOND_DAY` |
| `fulfillments.items`array | Details about the item or list of items being fulfilled. |
| `fulfillments.items.id`string | The unique identifier of the item being fulfilled. |
| `fulfillments.items.quantity`integer | The quantity of the item in this fulfillment. This must be at least `1`. |
| `fulfillments.recipientPerson`object | Details about the order's recipient. |
| `fulfillments.recipientPerson.emailAddress`string | The recipient's email address. |
| `fulfillments.recipientPerson.phoneNumber`string | The recipient's phone number. |
| `fulfillments.recipientPerson.dateOfBirth`string | The recipient's date of birth. Format: `YYYY-MM-DD`. |
| `fulfillments.recipientPerson.name`object | Details about the recipient's name. |
| `fulfillments.recipientPerson.name.first`string | The recipient's first name. |
| `fulfillments.recipientPerson.name.middle`string | The recipient's middle name or initial. |
| `fulfillments.recipientPerson.name.family`string | The recipient's last name/family name. |
| `fulfillments.recipientPerson.name.prefix`string | The prefix of the recipient's name. |
| `fulfillments.recipientPerson.name.suffix`string or null | The suffix of the recipient's name. |
| `fulfillments.recipientPerson.name.preferred`string | The recipient's preferred name. |
| `fulfillments.recipientPerson.address`object | Details about the recipient's address. |
| `fulfillments.recipientPerson.address.line1`string | The first line of the recipient's address. |
| `fulfillments.recipientPerson.address.line2`string | The second line of the recipient's address. |
| `fulfillments.recipientPerson.address.city`string | The city of the recipient's address. |
| `fulfillments.recipientPerson.address.region`string | The state, province, or region code of the recipient's address. |
| `fulfillments.recipientPerson.address.countryCode`string | The country of the recipient's address, in ISO 3166-1 alpha-2 format. |
| `fulfillments.recipientPerson.address.postalCode`string | The postal or ZIP code of the recipient's address. |
| `transactions`array | Array of details about the payment transactions made for the order. |
| `transactions.merchantTransactionId`string | The unique identifier for this transaction, as chosen by you. |
| `transactions.processor`string | The name of the payment processor that processed the transaction. |
| `transactions.processorMerchantId`string | Your merchant ID, as assigned by the payment processor. |
| `transactions.subtotal`integer | The total amount of the order without shipping and tax included, in its lowest denomination. For example, the lowest denomination in USD is the penny, so $1.00 has a "total" of `100`. The total must be a natural number, which includes `0`. |
| `transactions.orderTotal`integer | The total amount of currency in the transaction, in its lowest denomination. For example, the lowest denomination in USD is the penny, so $1.00 has a "total" of `100`. The total must be a natural number, which includes `0`. |
| `transactions.currency`string | The currency used for the transaction, in ISO 4217 format. Defaults to `USD` if not provided. |
| `transactions.transactionStatus`string | The current status of the transaction.Possible values:`PENDING``AUTHORIZED``REFUSED``CAPTURED``ERROR``EXPIRED``CANCELLED``SENT_FOR_REFUND``REFUNDED``REFUND_FAILED``SETTLED``INFORMATION_REQUESTED``INFORMATION_SUPPLIED``CHARGED_BACK``CHARGEBACK_REVERSED``DISPUTE_EXPIRED``DISPUTE_RESERVE_RELEASED``DISPUTED_FUNDS_HELD``DISPUTED_FUNDS_RELEASED``CHARGEBACK_REVERSED` |
| `transactions.payment`object | Details about the payment method used for this transaction. |
| `transactions.payment.type`string | The type of payment method used.Possible values:`APAY`: Apple Pay`CREDIT_CARD`: Credit Card`DEBIT_CARD`: Debit Card`PYPL`: PayPal`CHEK`: Check`NONE`: None`TOKEN`: Token provided from payment processor`GDMP`: Green Dot Money Pack`GOOG`: Google Checkout`BLML`: Bill Me Later`GIFT`: Gift Card`BPAY`: BPAY`NETELLER`: Neteller`GIROPAY`: GiroPay`ELV`: ELV`MERCADE_PAGO`: Mercade Pago`SEPA`: Single Euro Payments Area`INTERAC`: Interac`CARTE_BLEUE`: Carte Bleue`POLI`: POLI`SKRILL`: Skrill/Moneybookers`SOFORT`: Sofort`AMZN`: Amazon Pay`SAMPAY`: Samsung Pay`ALIPAY`: AliPay`WCPAY`: WeChat Pay`CRYPTO`: Crypto Payments`KLARNA`: Klarna`AFTRPAY`: Afterpay`AFFIRM`: Affirm`SPLIT`: Splitit`FBPAY`: Facebook Pay |
| `transactions.payment.paymentToken`string | The payment token submitted for order, in the format of a KHASH (credit card, payer ID, routing/transit, MICR, and account number).The KHASH value is hashed with a salted SHA256.If `paymentType` is set to `NONE`,  then the `paymentToken` value should be left empty.For post-auth calls only: if the credit card information isn't available and a tokenised value is returned from the payment processor, set `paymentType`  to `TOKEN` and send the token returned from the payment processor as a KHASH in the `paymentToken` field.Format: `^[A-Z0-9]{64}$`. |
| `transactions.payment.bin`string (≤ 8 characters) | The card's Bank Identification Number (BIN). This is made up of the first 6 or 8 digits of a credit or debit card. |
| `transactions.payment.last4`string | The last 4 digits of card's Primary Account Number (PAN). Format: `^[0-9]{4}$`. |
| `transactions.tax`object | Details about the tax associated with the transaction. |
| `transactions.tax.isTaxable`boolean | Whether the transaction is subject to tax. |
| `transactions.tax.taxableCountryCode`string | The country code of the taxable country, in ISO 3166 format. |
| `transactions.tax.taxAmount`integer | The amount that was charged in taxes for this order, in the currency's lowest denomination. For example, the lowest denomination in USD is the penny, so $1.00 has a "total" of `100`. The total must be a natural number, which includes `0`. |
| `transactions.tax.outOfStateTaxAmount`integer | The amount that was charged in out-of-state taxes for this order, in the currency's lowest denomination. This amount should be included in the `taxAmount` property. For example, the lowest denomination in USD is the penny, so $1.00 has a "total" of `100`. The total must be a natural number, which includes `0`. |
| `transactions.billedPerson`object | Details about the person who placed the order. |
| `transactions.billedPerson.emailAddress`string | The billed person's email address. |
| `transactions.billedPerson.phoneNumber`string | The billed person's phone number. |
| `transactions.billedPerson.dateOfBirth`string | The billed person's date of birth (`YYYY-MM-DD`). |
| `transactions.billedPerson.name`object | Details about the billed person's name. |
| `transactions.billedPerson.name.first`string | The first name of the billed person. |
| `transactions.billedPerson.name.middle`string | The middle name or initial of the billed person. |
| `transactions.billedPerson.name.family`string | The last name of the billed person. |
| `transactions.billedPerson.name.prefix`string | The name prefix of the billed person. |
| `transactions.billedPerson.name.suffix`string or null | The name suffix of the billed person. |
| `transactions.billedPerson.name.preferred`string | The preferred name of the billed person. |
| `transactions.billedPerson.address`object | Details about the billed person's address. |
| `transactions.billedPerson.address.line1`string | The first line of the billed person's address. |
| `transactions.billedPerson.address.line2`string | The second line of the billed person's address. |
| `transactions.billedPerson.address.city`string | The city of the billed person's address. |
| `transactions.billedPerson.address.region`string | The state/province/region of the billed person's address. |
| `transactions.billedPerson.address.countryCode`string | The country code of the billed person's address, in ISO 3166 format. |
| `transactions.billedPerson.address.postalCode`string | The postal/ZIP code of the billed person's address. |
| `transactions.authorizationStatus`object | Details about the authorisation status. Everything in this object is expected only after payment authorisation has occurred. |
| `transactions.authorizationStatus.authResult`string (enum) | The result of the authorisation attempt, as returned to you by the payment processor. Orders with a value of `Approved` will aggregate towards the order velocity of the persona, while orders with a value of `Declined` will decrement the order velocity of the persona. Orders with a value of `Error` or `Unknown` won't change the velocity.Possible values:`Approved``Declined``Unknown``Error` |
| `transactions.authorizationStatus.dateTime`string | The date and time when the authorisation was processed, in ISO 8601 format. |
| `transactions.authorizationStatus.declineCode`string or null | The decline reason code returned by the payment provider, if the payment was declined. |
| `transactions.authorizationStatus.processorAuthCode`string | The authorisation code returned by the payment processor. |
| `transactions.authorizationStatus.processorTransactionId`string | The unique identifier used by the payment processor or gateway for the order. |
| `transactions.authorizationStatus.acquirerReferenceNumber`string | A unique 11-digit number for a credit or debit card transaction. Format: `^[0-9]{11}$`. |
| `transactions.authorizationStatus.verificationResponse`object | Details about the verification responses. |
| `transactions.authorizationStatus.verificationResponse.avsStatus`string (enum) | The Address Verification Service (AVS) response returned to the customer/you by the payment processor.Possible values: `A``B``C``D``E``F``G``I``K``L``M``N``O``P``R``S``T``U``W``X``Y``Z` |
| `transactions.authorizationStatus.verificationResponse.cvvStatus`string | The Card Verification Value (CVV, CVS) response returned to the customer/you by the payment processor.Possible values: `Unknown``NoMatch`Empty string |
| `transaction.items`array | Array indicating which of the items present in the `items` array were paid for in this transaction. |
| `transactions.items.id`string | The unique identifier of the item that was specified in the `items` property of this order that was paid for in this transaction. |
| `transactions.items.quantity`integer | The quantity of this item that were paid for in this transaction. |
| `promotions`array | Array of promotions applied to this order. |
| `promotions.id`string | A unique identifier for the promotion, as chosen by you. |
| `promotions.description`string | A human-readable description of the promotion, as chosen by you. |
| `promotions.status`string | The current status of the promotion, as chosen by you. |
| `promotions.statusReason`string | The reason for the current promotion status. |
| `promotions.credit`object or null | Details about the promotional credit that was applied to the order. |
| `promotions.credit.creditType`string | The type of credit, as chosen by you. |
| `promotions.credit.amount`integer | The amount of the total order that was paid for through a credit, in the currency's lowest denomination. For example, the lowest denomination in USD is the penny, so $1.00 has a "total" of `100`. The total must be a natural number, which includes `0`. |
| `promotions.credit.currency`string | The currency used for the credit, in ISO 4217 format. If a code is not provided, it defaults to `USD`. |
| `promotions.discount`object | Details about the promotional discount that was applied to the order. |
| `promotions.discount.percentage`float | The percentage of the total amount that was reduced due to the promotion being applied, represented as a floating point number. For example, `0.1` means 10% discounted. |
| `promotions.discount.amount`integer | The amount that the total was reduced by due to the promotion, in the currency's lowest denomination. For example, the lowest denomination in USD is the penny, so $1.00 has a "total" of `100`. The total must be a natural number, which includes `0`. |
| `promotions.discount.currency`string | The currency used for the promotional discount, in ISO 4217 format. If a code is not provided, it defaults to `USD`. If the credit is in a non-monetary format, such as loyalty points, the value of this property should be `XXX`. |
| `loyalty`object | Details about a credit that was applied from a loyalty account. |
| `loyalty.id`string | The unique identifier for the loyalty transaction. |
| `loyalty.description`string | A description of the loyalty programme. |
| `loyalty.credit`object or null | Details about the loyalty credit that was applied to the order. |
| `loyalty.credit.creditType`string | The type of loyalty credit, as chosen by you. For example, `PIZZA_POINTS`. |
| `loyalty.credit.amount`integer | The amount of the total order that was paid for through a credit, in the currency's lowest denomination. For example, the lowest denomination in USD is the penny, so $1.00 has a "total" of `100`. The total must be a natural number, which includes `0`. |
| `loyalty.credit.currency`string | The currency used for the loyalty credit, in ISO 4217 format. If a code is not provided, it defaults to `USD`. If the credit is in a non-monetary format, such as loyalty points, the value of this property should be `XXX`. |
| `customFields`object | Additional custom fields, in key-value pairs. Each key is the custom field's name as a string (≤ 32 characters). Each value is the custom field's value as a date, boolean, string (≤ 256 characters), or number. Supported date format is RFC 3339 (ex: 2023-03-30T15:41:58Z). No object or array values are allowed. |


### Response example

If your request is successful, you'll receive a `200` response containing the risk decision, Omniscore, and raw response from the provider (as a single string).

Depending on the result, you can then:

* In pre-authorisation mode:
  * Proceed with authorisation with the Transactions API.
  * Abort the transaction. No authorisation request is triggered.
* In post-authorisation mode:
  * Proceed with authorisation with the Capture API.
  * Reject the transaction with the Cancel or Void API.



```json
{
  "riskScreeningId": "e721acfa-f844-4bec-9007-47eb07dcb117",
  "providerResults": {
    "kount": {
      "decision": "APPROVE",
      "riskScore": 90,
      "rawResponse": "{\"version\": \"v2.42.0\", \"order\": {\"orderId\": \"7DQ5JFWQB5WKPRBT\", \"merchantOrderId\": \"Yqwh50T47EuQB0frB9yxFw\", \"channel\": \"ACME_IOS_APP\", \"deviceSessionId\": \"\", \"creationDateTime\": \"2019-08-24T14:15:22+00:00 \", \"riskInquiry\": {\"decision\": \"APPROVE \", \"omniscore\": 5, \"persona\": {\"uniqueCards\": 2, \"uniqueDevices\": 8, \"uniqueEmails\": 5}, \"device\": null, \"segmentExecuted\": {\"segment\": {\"id\": \"1eda9703-5b34-47ac-a01b-09f509642896\", \"name\": \"Default\", \"priority\": 1}, \"policiesExecuted\": [], \"tags\": []}}, \"transactions\": [{\"transactionId\": \"7DQ5JFWQB5WKPRBT#0\", \"merchantTransactionId\": \"d121ea2210434ffc8a90daff9cc97e76\"}], \"fulfillment\": []}}"
    }
  }
}
```