Agentic Orders - Overviews

Agentic Orders

When a merchant receives an order from a consumer's agent (e.g. ChatGPT or Gemini), they should call the Forter API with additional data, signaling Forter the transaction source as well as transaction metadata provided to the merchant by the agent.

This additional data improves Forter's risk decisions and provides the merchant better reporting on agentic traffic.

forterTokenCookie & forterMobileUID forterTokenCookie & forterMobileUID

In agentic flows, Forter's JavaScript snippet and Mobile SDK are typically not present, meaning forterTokenCookie and forterMobileUID will not be available. This is expected - Forter's system is adapted to assess agentic transactions with the data provided through the fields below.

orderType orderType

Set orderType to AI_AGENT

additionalIdentifiers additionalIdentifiers

Add the additionalIdentifiers.agenticCommercePlatform Object with the following fields:

The following platforms are currently supported. Additional platforms will be added as they become available.

agentSourceType agentPlatform
OPENAI CHATGPT_INSTANT_CHECKOUT, CHATGPT_AGENT, CHATGPT_APPS_SDK
GOOGLE SEARCH, AI_MODE, GEMINI
MICROSOFT COPILOT
PERPLEXITY BUY_WITH_PRO
AMAZON ALEXA, BUY_FOR_ME
META ADS
THIRD_PARTY GENSMO, OTHER
IN_HOUSE
HENRYLABS

connectionInformation connectionInformation

Populate connectionInformation.customerIP with the end user's IP address (if available). Google's UCP has it under signals.dev.ucp.buyer_ip

Populate connectionInformation.userAgent with the full, end user's agent. Google's UCP has it under signals.dev.ucp.user_agent

payment payment

For Google UCP orders, map the selected payment instrument from the UCP payment.instruments[] array (the entry where selected is true).

For Google UCP using Google Pay, use Forter's payment.androidPay object. Given the following UCP instrument:

{
  "payment": {
    "instruments": [
      {
        "id": "pi_gpay_5678",
        "handler_id": "gpay_1234",
        "type": "card",
        "selected": true,
        "display": {
          "brand": "mastercard",
          "last_digits": "5678",
          "card_art": "https://cart-art-1.html",
          "description": "Google Pay •••• 5678"
        },
        "billing_address": {
          "street_address": "123 Main St",
          "address_locality": "Anytown",
          "address_region": "CA",
          "address_country": "US",
          "postal_code": "12345"
        },
        "credential": {
          "type": "PAYMENT_GATEWAY",
          "token": "examplePaymentMethodToken"
        }
      }
    ]
  }
}

Map the fields as follows:

Resulting in the following Forter payment.androidPay object:

{
  "payment": {
    "androidPay": {
      "cardBrand": "mastercard",
      "lastFourDigits": "5678",
      "token": "examplePaymentMethodToken",
      "tokenType": "PSP"
    }
  }
}

When the payment instrument is not Google Pay, send it through the matching payment object instead (e.g. creditCard, tokenizedCard, applePay), mapping the available non-PCI fields from the agentic payload into the corresponding Forter fields.

The BIN and expiration are often missing from agentic payloads. When they are missing, try to retrieve them from your tokenizer or PSP service API.

additionalInformation additionalInformation

As protocols continue to evolve, please add the following payloads as they become available:

  1. For Google include the UCP signals as ucpSignals
  2. For OpenAI include the ACP signals as acpSignals
  3. For Adyen include Adyen signals as adyenSignals
  4. For PayPal include PayPal signals as paypalSignals
  5. For Stripe include Stripe signals as stripeSignals

Schema Schema

Your API schema should be set to support this additional fields and/or make some of the missing ones optional. If it isn't, contact your Forter Implementation Engineering team to get it updated.