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:
agentSourceType - Usually the vendor or AI company which can operate multiple platforms (e.g. OPENAI)
agentPlatform - The flow or product of the AI agent application (e.g. CHATGPT_INSTANT_CHECKOUT)
agentApp - Use if the platform is not available in the agentPlatform list, or when you need to further segment the channel, traffic or orchestrator (e.g., PAYPAL_ACS)
agentId - A unique identifier provided by the AI agent orchestrator or platform
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 |
| 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:
- display.brand → cardBrand
- display.last_digits → lastFourDigits
- credential.token → token
- credential.type → tokenType
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:
- For Google include the UCP signals as ucpSignals
- For OpenAI include the ACP signals as acpSignals
- For Adyen include Adyen signals as adyenSignals
- For PayPal include PayPal signals as paypalSignals
- 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.