> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://ixopay.ferndocs.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://ixopay.ferndocs.com/_mcp/server.

# Forter

When processing transactions through the IXOPAY platform, Forter external risk checks can be utilized to enhance your transaction security. This guide covers the necessary steps to initiate these checks.

## Transaction extra data

The proper implementation of Forter risk checks requires specific `extraData` to be incorporated into calls to the [Transaction API](https://documentation.ixopay.com/api/transaction/transaction-api).

For the specific details on what needs to be included, please refer to [Adapters: External Risk - Forter External Risk Adapter](https://documentation.ixopay.com/adapters/external-risk#forter-external-risk-adapter).

## Initializing the risk script

Depending on the configuration of your risk profile or connector, you might need to manually initialize the Forter risk scripts. There are two scenarios:

* Using payment.js
* Without payment.js

In cases where the connector or risk profile associated with your *Public Integration Key* isn't set to automatically initialize Forter, you need to manually initiate it with payment.js. If *Init Scripts Automatically* is enabled, no further javascript steps are required for embedding Forter.

```html
<script>
  const payment = new PaymentJs("1.2");

  payment.init("public-integration-key", "number_div", "cvv_div", (payment) => {
    // ...
    try {
      payment.initRiskScript({ type: "forter" });
    } catch (exception) {
      //this might happen on an invalid configuration at risk profile or connector level
    }
  });
</script>
```

If you are not utilizing PaymentJS, you can still manually initialize the Forter risk script with the following steps.

```html
<script src="https://gateway.ixopay.com/js/risk-scripts/forter-dc.min.js"></script>
<script>
  // retrieve from your Forter dashbaord differs from PROD / DEV environment
  const forterSiteId = "forter-site-id";
  const forterHandler = new ForterDcHandler(forterSiteId);

  forterHandler.initForterDc((forterToken) => {
    // provide as transaction extra data FORTER_TOKEN or forter_token
    document.getElementById("hidden-forter-token-id").value = forterToken;
  });
</script>
```

Remember to accurately include all necessary information for successful risk checks with Forter. If you encounter issues, review your connector configuration or the extra data you're providing.