E-commerce Fraud & Order Risk API Documentation

Read a supplied order history, compare patterns across those orders, and separate indicators from confirmed fraud. Payment is the exact USDC price on Base with x402.

POSThttps://brainiac.software/api/v1/ecommerce-fraud/suspicious-order-detect$0.05 USDC

Detect suspicious order patterns

Compare supplied amounts with a Tukey fence when 8 orders share a currency, and with a customer's own median when that customer has at least four amounts. A new address counts only after earlier orders. One signal is an indicator, not confirmed fraud.

Body

FieldRequiredNotes
textNostring
jsonNostring
csvNostring
fileNoobject; Object
ordersNoarray; Array
windowNointeger
rulesNoobject; Object

Request exampleJSON

{
  "orders": [
    {
      "id": "O-1",
      "customer": "C-1",
      "created": "2026-11-01",
      "amount": 20,
      "currency": "USD",
      "status": "paid",
      "address": "1 Main St, 10001",
      "country": "US",
      "billCountry": "US"
    },
    {
      "id": "O-2",
      "customer": "C-1",
      "created": "2026-11-02",
      "amount": 22,
      "currency": "USD",
      "status": "paid",
      "address": "1 Main St, 10001",
      "country": "US",
      "billCountry": "US"
    },
    {
      "id": "O-3",
      "customer": "C-1",
      "created": "2026-11-03",
      "amount": 21,
      "currency": "USD",
      "status": "paid",
      "address": "1 Main St, 10001",
      "country": "US",
      "billCountry": "US"
    },
    {
      "id": "O-4",
      "customer": "C-1",
      "created": "2026-11-04",
      "amount": 400,
      "currency": "USD",
      "status": "paid",
      "address": "9 Other St, 20002",
      "country": "US",
      "billCountry": "CA"
    },
    {
      "id": "O-5",
      "customer": "C-2",
      "created": "2026-11-01",
      "amount": 19,
      "currency": "USD",
      "status": "paid",
      "country": "US",
      "billCountry": "US"
    },
    {
      "id": "O-6",
      "customer": "C-3",
      "created": "2026-11-01",
      "amount": 23,
      "currency": "USD",
      "status": "paid",
      "country": "US",
      "billCountry": "GB"
    },
    {
      "id": "O-7",
      "customer": "C-4",
      "created": "2026-11-01",
      "amount": 18,
      "currency": "USD",
      "status": "paid",
      "country": "US",
      "billCountry": "US"
    },
    {
      "id": "O-8",
      "customer": "C-5",
      "created": "2026-11-01",
      "amount": 20,
      "currency": "USD",
      "status": "paid",
      "country": "US",
      "billCountry": "US"
    }
  ]
}

Response exampleJSON

{
  "checkedAt": "2026-11-04T09:00:00.000Z",
  "status": "checked",
  "level": "review",
  "fences": [
    {
      "currency": "USD",
      "applied": true,
      "lower": 16,
      "upper": 26,
      "sample": 8
    }
  ],
  "signals": [
    {
      "code": "amount_outlier",
      "rule": "tukey_1_5_iqr",
      "detail": "1 of 8 supplied USD amounts are outside the Tukey fence 16 to 26. This is a statistical outlier, not confirmed fraud.",
      "confirmed": false,
      "orders": [
        "O-4"
      ]
    },
    {
      "code": "amount_vs_history",
      "rule": "above_3x_median",
      "detail": "Order O-4 is above 3 times the median of this customer's other supplied USD amounts (O-1, O-2, O-3). This is one indicator.",
      "confirmed": false,
      "orders": [
        "O-4"
      ]
    },
    {
      "code": "address_changed",
      "rule": "new_address_after_history",
      "detail": "Order O-4 uses a shipping address that does not match this customer's earlier supplied orders (O-1, O-2, O-3).",
      "confirmed": false,
      "orders": [
        "O-4"
      ]
    }
  ],
  "orders": [
    {
      "id": "O-4",
      "customer": "C-1",
      "signalCount": 3,
      "level": "review",
      "signals": "amount_outlier,amount_vs_history,address_changed"
    },
    {
      "id": "O-1",
      "customer": "C-1",
      "signalCount": 0,
      "level": "none",
      "signals": ""
    },
    {
      "id": "O-2",
      "customer": "C-1",
      "signalCount": 0,
      "level": "none",
      "signals": ""
    },
    {
      "id": "O-3",
      "customer": "C-1",
      "signalCount": 0,
      "level": "none",
      "signals": ""
    },
    {
      "id": "O-5",
      "customer": "C-2",
      "signalCount": 0,
      "level": "none",
      "signals": ""
    },
    {
      "id": "O-6",
      "customer": "C-3",
      "signalCount": 0,
      "level": "none",
      "signals": ""
    },
    {
      "id": "O-7",
      "customer": "C-4",
      "signalCount": 0,
      "level": "none",
      "signals": ""
    },
    {
      "id": "O-8",
      "customer": "C-5",
      "signalCount": 0,
      "level": "none",
      "signals": ""
    }
  ],
  "fraudConfirmed": false,
  "paymentProcessed": false,
  "orderBlocked": false,
  "accountAccessed": false,
  "findings": [
    {
      "kind": "observation",
      "code": "country_mismatch",
      "subject": "O-4",
      "detail": "The supplied ship and bill countries differ. One mismatch is not a pattern and is not a fraud finding."
    },
    {
      "kind": "observation",
      "code": "country_mismatch",
      "subject": "O-6",
      "detail": "The supplied ship and bill countries differ. One mismatch is not a pattern and is not a fraud finding."
    },
    {
      "kind": "indicator",
      "code": "amount_outlier",
      "subject": "O-4",
      "detail": "1 of 8 supplied USD amounts are outside the Tukey fence 16 to 26. This is a statistical outlier, not confirmed fraud."
    },
    {
      "kind": "indicator",
      "code": "amount_vs_history",
      "subject": "O-4",
      "detail": "Order O-4 is above 3 times the median of this customer's other supplied USD amounts (O-1, O-2, O-3). This is one indicator."
    },
    {
      "kind": "indicator",
      "code": "address_changed",
      "subject": "O-4",
      "detail": "Order O-4 uses a shipping address that does not match this customer's earlier supplied orders (O-1, O-2, O-3)."
    }
  ],
  "limitations": [
    "Patterns are calculated only from the orders supplied in the request.",
    "One signal is an indicator. It does not mean the customer is fraudulent.",
    "No payment is processed, no order is blocked, and no merchant account is accessed.",
    "A full card number is not copied. A statistical outlier is not confirmed fraud."
  ]
}

cURL

curl -i -X POST "https://brainiac.software/api/v1/ecommerce-fraud/suspicious-order-detect" \
  -H 'content-type: application/json' \
  -H 'Idempotency-Key: <fresh-64-character-random-hex-key>' \
  --data-binary @- <<'JSON'
{
  "orders": [
    {
      "id": "O-1",
      "customer": "C-1",
      "created": "2026-11-01",
      "amount": 20,
      "currency": "USD",
      "status": "paid",
      "address": "1 Main St, 10001",
      "country": "US",
      "billCountry": "US"
    },
    {
      "id": "O-2",
      "customer": "C-1",
      "created": "2026-11-02",
      "amount": 22,
      "currency": "USD",
      "status": "paid",
      "address": "1 Main St, 10001",
      "country": "US",
      "billCountry": "US"
    },
    {
      "id": "O-3",
      "customer": "C-1",
      "created": "2026-11-03",
      "amount": 21,
      "currency": "USD",
      "status": "paid",
      "address": "1 Main St, 10001",
      "country": "US",
      "billCountry": "US"
    },
    {
      "id": "O-4",
      "customer": "C-1",
      "created": "2026-11-04",
      "amount": 400,
      "currency": "USD",
      "status": "paid",
      "address": "9 Other St, 20002",
      "country": "US",
      "billCountry": "CA"
    },
    {
      "id": "O-5",
      "customer": "C-2",
      "created": "2026-11-01",
      "amount": 19,
      "currency": "USD",
      "status": "paid",
      "country": "US",
      "billCountry": "US"
    },
    {
      "id": "O-6",
      "customer": "C-3",
      "created": "2026-11-01",
      "amount": 23,
      "currency": "USD",
      "status": "paid",
      "country": "US",
      "billCountry": "GB"
    },
    {
      "id": "O-7",
      "customer": "C-4",
      "created": "2026-11-01",
      "amount": 18,
      "currency": "USD",
      "status": "paid",
      "country": "US",
      "billCountry": "US"
    },
    {
      "id": "O-8",
      "customer": "C-5",
      "created": "2026-11-01",
      "amount": 20,
      "currency": "USD",
      "status": "paid",
      "country": "US",
      "billCountry": "US"
    }
  ]
}
JSON
POSThttps://brainiac.software/api/v1/ecommerce-fraud/card-testing-pattern-detect$0.05 USDC

Detect card-testing patterns

Group supplied card fingerprints. Three or more declines on one fingerprint, or three or more cards for one customer, are indicators. A small-amount rule is used only when the caller supplies it. No payment is retried.

Body

FieldRequiredNotes
textNostring
jsonNostring
csvNostring
fileNoobject; Object
ordersNoarray; Array
windowNointeger
rulesNoobject; Object

Request exampleJSON

{
  "orders": [
    {
      "id": "T-1",
      "customer": "C-1",
      "created": "2026-11-04T10:00",
      "amount": 1,
      "currency": "USD",
      "status": "declined",
      "card": "424242-4242"
    },
    {
      "id": "T-2",
      "customer": "C-1",
      "created": "2026-11-04T10:05",
      "amount": 1,
      "currency": "USD",
      "status": "declined",
      "card": "424242-4242"
    },
    {
      "id": "T-3",
      "customer": "C-1",
      "created": "2026-11-04T10:12",
      "amount": 1,
      "currency": "USD",
      "status": "failed",
      "card": "424242-4242"
    },
    {
      "id": "T-4",
      "customer": "C-2",
      "created": "2026-11-04T11:00",
      "amount": 40,
      "currency": "USD",
      "status": "paid",
      "card": "400000-1234"
    }
  ]
}

Response exampleJSON

{
  "checkedAt": "2026-11-04T09:00:00.000Z",
  "status": "checked",
  "level": "indicator",
  "signals": [
    {
      "code": "decline_cluster",
      "rule": "min_orders_same_card",
      "detail": "3 supplied orders for card 424242-4242 (C-1) are declined or failed. No payment was retried.",
      "confirmed": false,
      "orders": [
        "T-1",
        "T-2",
        "T-3"
      ]
    }
  ],
  "fraudConfirmed": false,
  "paymentProcessed": false,
  "orderBlocked": false,
  "accountAccessed": false,
  "findings": [
    {
      "kind": "observation",
      "code": "small_amount_rule_missing",
      "subject": "",
      "detail": "No small-amount rule was supplied, so low amounts were not treated as card testing."
    },
    {
      "kind": "indicator",
      "code": "decline_cluster",
      "subject": "T-1",
      "detail": "3 supplied orders for card 424242-4242 (C-1) are declined or failed. No payment was retried."
    }
  ],
  "limitations": [
    "Patterns are calculated only from the orders supplied in the request.",
    "One signal is an indicator. It does not mean the customer is fraudulent.",
    "No payment is processed, no order is blocked, and no merchant account is accessed.",
    "A full card number is not copied. A statistical outlier is not confirmed fraud."
  ]
}

cURL

curl -i -X POST "https://brainiac.software/api/v1/ecommerce-fraud/card-testing-pattern-detect" \
  -H 'content-type: application/json' \
  -H 'Idempotency-Key: <fresh-64-character-random-hex-key>' \
  --data-binary @- <<'JSON'
{
  "orders": [
    {
      "id": "T-1",
      "customer": "C-1",
      "created": "2026-11-04T10:00",
      "amount": 1,
      "currency": "USD",
      "status": "declined",
      "card": "424242-4242"
    },
    {
      "id": "T-2",
      "customer": "C-1",
      "created": "2026-11-04T10:05",
      "amount": 1,
      "currency": "USD",
      "status": "declined",
      "card": "424242-4242"
    },
    {
      "id": "T-3",
      "customer": "C-1",
      "created": "2026-11-04T10:12",
      "amount": 1,
      "currency": "USD",
      "status": "failed",
      "card": "424242-4242"
    },
    {
      "id": "T-4",
      "customer": "C-2",
      "created": "2026-11-04T11:00",
      "amount": 40,
      "currency": "USD",
      "status": "paid",
      "card": "400000-1234"
    }
  ]
}
JSON
POSThttps://brainiac.software/api/v1/ecommerce-fraud/bulk-order-abuse-detect$0.04 USDC

Detect bulk-order patterns

Flag a shipping address only when it appears on at least three supplied orders. Combined quantity is compared with a caller rule across those orders. One large order is not a bulk pattern.

Body

FieldRequiredNotes
textNostring
jsonNostring
csvNostring
fileNoobject; Object
ordersNoarray; Array
windowNointeger
rulesNoobject; Object

Request exampleJSON

{
  "orders": [
    {
      "id": "B-1",
      "customer": "C-1",
      "created": "2026-11-01",
      "address": "1 Main St, 10001",
      "quantity": 2
    },
    {
      "id": "B-2",
      "customer": "C-2",
      "created": "2026-11-02",
      "address": "1 Main St, 10001",
      "quantity": 2
    },
    {
      "id": "B-3",
      "customer": "C-3",
      "created": "2026-11-03",
      "address": "1 Main St, 10001",
      "quantity": 2
    },
    {
      "id": "B-4",
      "customer": "C-9",
      "created": "2026-11-04",
      "address": "9 Side St, 30003",
      "quantity": 40
    }
  ]
}

Response exampleJSON

{
  "checkedAt": "2026-11-04T09:00:00.000Z",
  "status": "checked",
  "level": "indicator",
  "signals": [
    {
      "code": "shared_address",
      "rule": "min_orders_same_address",
      "detail": "3 supplied orders use the same shipping address across 3 customer key. No order was blocked.",
      "confirmed": false,
      "orders": [
        "B-1",
        "B-2",
        "B-3"
      ]
    }
  ],
  "fraudConfirmed": false,
  "paymentProcessed": false,
  "orderBlocked": false,
  "accountAccessed": false,
  "findings": [
    {
      "kind": "observation",
      "code": "quantity_rule_missing",
      "subject": "",
      "detail": "No quantity rule was supplied. Bulk quantity was not inferred."
    },
    {
      "kind": "indicator",
      "code": "shared_address",
      "subject": "B-1",
      "detail": "3 supplied orders use the same shipping address across 3 customer key. No order was blocked."
    }
  ],
  "limitations": [
    "Patterns are calculated only from the orders supplied in the request.",
    "One signal is an indicator. It does not mean the customer is fraudulent.",
    "No payment is processed, no order is blocked, and no merchant account is accessed.",
    "A full card number is not copied. A statistical outlier is not confirmed fraud."
  ]
}

cURL

curl -i -X POST "https://brainiac.software/api/v1/ecommerce-fraud/bulk-order-abuse-detect" \
  -H 'content-type: application/json' \
  -H 'Idempotency-Key: <fresh-64-character-random-hex-key>' \
  --data-binary @- <<'JSON'
{
  "orders": [
    {
      "id": "B-1",
      "customer": "C-1",
      "created": "2026-11-01",
      "address": "1 Main St, 10001",
      "quantity": 2
    },
    {
      "id": "B-2",
      "customer": "C-2",
      "created": "2026-11-02",
      "address": "1 Main St, 10001",
      "quantity": 2
    },
    {
      "id": "B-3",
      "customer": "C-3",
      "created": "2026-11-03",
      "address": "1 Main St, 10001",
      "quantity": 2
    },
    {
      "id": "B-4",
      "customer": "C-9",
      "created": "2026-11-04",
      "address": "9 Side St, 30003",
      "quantity": 40
    }
  ]
}
JSON
POSThttps://brainiac.software/api/v1/ecommerce-fraud/refund-abuse-pattern-detect$0.04 USDC

Detect refund patterns

Count supplied orders whose status is refunded. A customer needs at least three refunds before a repeat pattern is reported. A single refund is not treated as abuse.

Body

FieldRequiredNotes
textNostring
jsonNostring
csvNostring
fileNoobject; Object
ordersNoarray; Array
windowNointeger
rulesNoobject; Object

Request exampleJSON

{
  "orders": [
    {
      "id": "R-1",
      "customer": "C-1",
      "created": "2026-11-01",
      "amount": 20,
      "currency": "USD",
      "status": "refunded"
    },
    {
      "id": "R-2",
      "customer": "C-1",
      "created": "2026-11-02",
      "amount": 22,
      "currency": "USD",
      "status": "refunded"
    },
    {
      "id": "R-3",
      "customer": "C-1",
      "created": "2026-11-03",
      "amount": 21,
      "currency": "USD",
      "status": "refunded"
    },
    {
      "id": "R-4",
      "customer": "C-1",
      "created": "2026-11-04",
      "amount": 20,
      "currency": "USD",
      "status": "paid"
    },
    {
      "id": "R-5",
      "customer": "C-2",
      "created": "2026-11-04",
      "amount": 18,
      "currency": "USD",
      "status": "refunded"
    }
  ]
}

Response exampleJSON

{
  "checkedAt": "2026-11-04T09:00:00.000Z",
  "status": "checked",
  "level": "review",
  "signals": [
    {
      "code": "repeat_refund",
      "rule": "min_refunded_orders",
      "detail": "Customer C-1 has 3 supplied orders with status refunded.",
      "confirmed": false,
      "orders": [
        "R-1",
        "R-2",
        "R-3"
      ]
    },
    {
      "code": "refund_rate",
      "rule": "refunded_share_at_least_half",
      "detail": "Customer C-1 has 3 refunded orders out of 4 supplied orders. The share is at least half and at least 3 refunds.",
      "confirmed": false,
      "orders": [
        "R-1",
        "R-2",
        "R-3"
      ]
    }
  ],
  "fraudConfirmed": false,
  "paymentProcessed": false,
  "orderBlocked": false,
  "accountAccessed": false,
  "findings": [
    {
      "kind": "indicator",
      "code": "repeat_refund",
      "subject": "R-1",
      "detail": "Customer C-1 has 3 supplied orders with status refunded."
    },
    {
      "kind": "indicator",
      "code": "refund_rate",
      "subject": "R-1",
      "detail": "Customer C-1 has 3 refunded orders out of 4 supplied orders. The share is at least half and at least 3 refunds."
    }
  ],
  "limitations": [
    "Patterns are calculated only from the orders supplied in the request.",
    "One signal is an indicator. It does not mean the customer is fraudulent.",
    "No payment is processed, no order is blocked, and no merchant account is accessed.",
    "A full card number is not copied. A statistical outlier is not confirmed fraud."
  ]
}

cURL

curl -i -X POST "https://brainiac.software/api/v1/ecommerce-fraud/refund-abuse-pattern-detect" \
  -H 'content-type: application/json' \
  -H 'Idempotency-Key: <fresh-64-character-random-hex-key>' \
  --data-binary @- <<'JSON'
{
  "orders": [
    {
      "id": "R-1",
      "customer": "C-1",
      "created": "2026-11-01",
      "amount": 20,
      "currency": "USD",
      "status": "refunded"
    },
    {
      "id": "R-2",
      "customer": "C-1",
      "created": "2026-11-02",
      "amount": 22,
      "currency": "USD",
      "status": "refunded"
    },
    {
      "id": "R-3",
      "customer": "C-1",
      "created": "2026-11-03",
      "amount": 21,
      "currency": "USD",
      "status": "refunded"
    },
    {
      "id": "R-4",
      "customer": "C-1",
      "created": "2026-11-04",
      "amount": 20,
      "currency": "USD",
      "status": "paid"
    },
    {
      "id": "R-5",
      "customer": "C-2",
      "created": "2026-11-04",
      "amount": 18,
      "currency": "USD",
      "status": "refunded"
    }
  ]
}
JSON
POSThttps://brainiac.software/api/v1/ecommerce-fraud/promotion-abuse-detect$0.04 USDC

Detect promotion patterns

Report a promotion code only when the same customer uses it on at least three supplied orders, or when the same code and address appear for at least two customers. One use is not abuse.

Body

FieldRequiredNotes
textNostring
jsonNostring
csvNostring
fileNoobject; Object
ordersNoarray; Array
windowNointeger
rulesNoobject; Object

Request exampleJSON

{
  "orders": [
    {
      "id": "P-1",
      "customer": "C-1",
      "created": "2026-11-01",
      "promo": "SAVE10"
    },
    {
      "id": "P-2",
      "customer": "C-1",
      "created": "2026-11-02",
      "promo": "SAVE10"
    },
    {
      "id": "P-3",
      "customer": "C-1",
      "created": "2026-11-03",
      "promo": "SAVE10"
    },
    {
      "id": "P-4",
      "customer": "C-2",
      "created": "2026-11-03",
      "promo": "SAVE10"
    }
  ]
}

Response exampleJSON

{
  "checkedAt": "2026-11-04T09:00:00.000Z",
  "status": "checked",
  "level": "indicator",
  "signals": [
    {
      "code": "promo_repeat",
      "rule": "same_customer_same_promo",
      "detail": "Customer C-1 uses code SAVE10 on 3 supplied orders.",
      "confirmed": false,
      "orders": [
        "P-1",
        "P-2",
        "P-3"
      ]
    }
  ],
  "fraudConfirmed": false,
  "paymentProcessed": false,
  "orderBlocked": false,
  "accountAccessed": false,
  "findings": [
    {
      "kind": "indicator",
      "code": "promo_repeat",
      "subject": "P-1",
      "detail": "Customer C-1 uses code SAVE10 on 3 supplied orders."
    }
  ],
  "limitations": [
    "Patterns are calculated only from the orders supplied in the request.",
    "One signal is an indicator. It does not mean the customer is fraudulent.",
    "No payment is processed, no order is blocked, and no merchant account is accessed.",
    "A full card number is not copied. A statistical outlier is not confirmed fraud."
  ]
}

cURL

curl -i -X POST "https://brainiac.software/api/v1/ecommerce-fraud/promotion-abuse-detect" \
  -H 'content-type: application/json' \
  -H 'Idempotency-Key: <fresh-64-character-random-hex-key>' \
  --data-binary @- <<'JSON'
{
  "orders": [
    {
      "id": "P-1",
      "customer": "C-1",
      "created": "2026-11-01",
      "promo": "SAVE10"
    },
    {
      "id": "P-2",
      "customer": "C-1",
      "created": "2026-11-02",
      "promo": "SAVE10"
    },
    {
      "id": "P-3",
      "customer": "C-1",
      "created": "2026-11-03",
      "promo": "SAVE10"
    },
    {
      "id": "P-4",
      "customer": "C-2",
      "created": "2026-11-03",
      "promo": "SAVE10"
    }
  ]
}
JSON
POSThttps://brainiac.software/api/v1/ecommerce-fraud/shipping-address-risk-analyze$0.04 USDC

Analyze shipping-address patterns

Compare supplied shipping addresses across orders. A shared address needs at least three orders and two customers. Several addresses for one customer are a separate indicator. A missing address is not a fraud finding.

Body

FieldRequiredNotes
textNostring
jsonNostring
csvNostring
fileNoobject; Object
ordersNoarray; Array
windowNointeger
rulesNoobject; Object

Request exampleJSON

{
  "orders": [
    {
      "id": "A-1",
      "customer": "C-1",
      "created": "2026-11-01",
      "address": "1 Main St, 10001",
      "country": "US"
    },
    {
      "id": "A-2",
      "customer": "C-2",
      "created": "2026-11-01",
      "address": "1 Main St, 10001",
      "country": "US"
    },
    {
      "id": "A-3",
      "customer": "C-3",
      "created": "2026-11-01",
      "address": "1 Main St, 10001",
      "country": "US"
    },
    {
      "id": "A-4",
      "customer": "C-1",
      "created": "2026-11-02",
      "address": "2 Oak St, 10002",
      "country": "US"
    },
    {
      "id": "A-5",
      "customer": "C-1",
      "created": "2026-11-03",
      "address": "3 Pine St, 10003",
      "country": "US"
    }
  ]
}

Response exampleJSON

{
  "checkedAt": "2026-11-04T09:00:00.000Z",
  "status": "checked",
  "level": "review",
  "signals": [
    {
      "code": "shared_address",
      "rule": "min_orders_two_customers",
      "detail": "3 supplied orders share this shipping address across 3 customers.",
      "confirmed": false,
      "orders": [
        "A-1",
        "A-2",
        "A-3"
      ]
    },
    {
      "code": "address_spread",
      "rule": "distinct_addresses",
      "detail": "Customer C-1 has 3 distinct supplied shipping addresses.",
      "confirmed": false,
      "orders": [
        "A-1",
        "A-4",
        "A-5"
      ]
    }
  ],
  "customers": [
    {
      "customer": "C-1",
      "signalCount": 2,
      "level": "review",
      "signals": "shared_address,address_spread"
    },
    {
      "customer": "C-2",
      "signalCount": 1,
      "level": "indicator",
      "signals": "shared_address"
    },
    {
      "customer": "C-3",
      "signalCount": 1,
      "level": "indicator",
      "signals": "shared_address"
    }
  ],
  "fraudConfirmed": false,
  "paymentProcessed": false,
  "orderBlocked": false,
  "accountAccessed": false,
  "findings": [
    {
      "kind": "indicator",
      "code": "shared_address",
      "subject": "A-1",
      "detail": "3 supplied orders share this shipping address across 3 customers."
    },
    {
      "kind": "indicator",
      "code": "address_spread",
      "subject": "A-1",
      "detail": "Customer C-1 has 3 distinct supplied shipping addresses."
    }
  ],
  "limitations": [
    "Patterns are calculated only from the orders supplied in the request.",
    "One signal is an indicator. It does not mean the customer is fraudulent.",
    "No payment is processed, no order is blocked, and no merchant account is accessed.",
    "A full card number is not copied. A statistical outlier is not confirmed fraud."
  ]
}

cURL

curl -i -X POST "https://brainiac.software/api/v1/ecommerce-fraud/shipping-address-risk-analyze" \
  -H 'content-type: application/json' \
  -H 'Idempotency-Key: <fresh-64-character-random-hex-key>' \
  --data-binary @- <<'JSON'
{
  "orders": [
    {
      "id": "A-1",
      "customer": "C-1",
      "created": "2026-11-01",
      "address": "1 Main St, 10001",
      "country": "US"
    },
    {
      "id": "A-2",
      "customer": "C-2",
      "created": "2026-11-01",
      "address": "1 Main St, 10001",
      "country": "US"
    },
    {
      "id": "A-3",
      "customer": "C-3",
      "created": "2026-11-01",
      "address": "1 Main St, 10001",
      "country": "US"
    },
    {
      "id": "A-4",
      "customer": "C-1",
      "created": "2026-11-02",
      "address": "2 Oak St, 10002",
      "country": "US"
    },
    {
      "id": "A-5",
      "customer": "C-1",
      "created": "2026-11-03",
      "address": "3 Pine St, 10003",
      "country": "US"
    }
  ]
}
JSON
POSThttps://brainiac.software/api/v1/ecommerce-fraud/order-velocity-analyze$0.05 USDC

Analyze order velocity

Count supplied orders for the same customer, IP, or card. With a minute window and timestamps, the orders must fall inside that window. Otherwise they are compared on the same calendar day. Fewer than three orders is not a pattern.

Body

FieldRequiredNotes
textNostring
jsonNostring
csvNostring
fileNoobject; Object
ordersNoarray; Array
windowNointeger
rulesNoobject; Object

Request exampleJSON

{
  "window": 60,
  "orders": [
    {
      "id": "V-1",
      "customer": "C-1",
      "created": "2026-11-04T10:00",
      "ip": "203.0.113.10"
    },
    {
      "id": "V-2",
      "customer": "C-1",
      "created": "2026-11-04T10:10",
      "ip": "203.0.113.10"
    },
    {
      "id": "V-3",
      "customer": "C-1",
      "created": "2026-11-04T10:20",
      "ip": "203.0.113.10"
    },
    {
      "id": "V-4",
      "customer": "C-2",
      "created": "2026-11-04T10:00",
      "ip": "203.0.113.20"
    }
  ]
}

Response exampleJSON

{
  "checkedAt": "2026-11-04T09:00:00.000Z",
  "status": "checked",
  "level": "review",
  "windowMinutes": 60,
  "signals": [
    {
      "code": "customer_velocity",
      "rule": "caller_window",
      "detail": "3 supplied orders for C-1 fall within 60 minutes. No order was blocked.",
      "confirmed": false,
      "orders": [
        "V-1",
        "V-2",
        "V-3"
      ]
    },
    {
      "code": "ip_velocity",
      "rule": "caller_window",
      "detail": "3 supplied orders for 203.0.113.10 fall within 60 minutes. No order was blocked.",
      "confirmed": false,
      "orders": [
        "V-1",
        "V-2",
        "V-3"
      ]
    }
  ],
  "fraudConfirmed": false,
  "paymentProcessed": false,
  "orderBlocked": false,
  "accountAccessed": false,
  "findings": [
    {
      "kind": "indicator",
      "code": "customer_velocity",
      "subject": "V-1",
      "detail": "3 supplied orders for C-1 fall within 60 minutes. No order was blocked."
    },
    {
      "kind": "indicator",
      "code": "ip_velocity",
      "subject": "V-1",
      "detail": "3 supplied orders for 203.0.113.10 fall within 60 minutes. No order was blocked."
    }
  ],
  "limitations": [
    "Patterns are calculated only from the orders supplied in the request.",
    "One signal is an indicator. It does not mean the customer is fraudulent.",
    "No payment is processed, no order is blocked, and no merchant account is accessed.",
    "A full card number is not copied. A statistical outlier is not confirmed fraud."
  ]
}

cURL

curl -i -X POST "https://brainiac.software/api/v1/ecommerce-fraud/order-velocity-analyze" \
  -H 'content-type: application/json' \
  -H 'Idempotency-Key: <fresh-64-character-random-hex-key>' \
  --data-binary @- <<'JSON'
{
  "window": 60,
  "orders": [
    {
      "id": "V-1",
      "customer": "C-1",
      "created": "2026-11-04T10:00",
      "ip": "203.0.113.10"
    },
    {
      "id": "V-2",
      "customer": "C-1",
      "created": "2026-11-04T10:10",
      "ip": "203.0.113.10"
    },
    {
      "id": "V-3",
      "customer": "C-1",
      "created": "2026-11-04T10:20",
      "ip": "203.0.113.10"
    },
    {
      "id": "V-4",
      "customer": "C-2",
      "created": "2026-11-04T10:00",
      "ip": "203.0.113.20"
    }
  ]
}
JSON
POSThttps://brainiac.software/api/v1/ecommerce-fraud/investigation-report$0.12 USDC

Report order-risk indicators

Combine supplied amount, card, address, promotion, refund, and velocity patterns. Review means two or more indicators. The report does not confirm fraud, process a payment, or block an order.

Body

FieldRequiredNotes
textNostring
jsonNostring
csvNostring
fileNoobject; Object
ordersNoarray; Array
windowNointeger
rulesNoobject; Object

Request exampleJSON

{
  "orders": [
    {
      "id": "R-1",
      "customer": "C-1",
      "created": "2026-11-01",
      "amount": 20,
      "currency": "USD",
      "status": "refunded"
    },
    {
      "id": "R-2",
      "customer": "C-1",
      "created": "2026-11-02",
      "amount": 22,
      "currency": "USD",
      "status": "refunded"
    },
    {
      "id": "R-3",
      "customer": "C-1",
      "created": "2026-11-03",
      "amount": 21,
      "currency": "USD",
      "status": "refunded"
    },
    {
      "id": "R-4",
      "customer": "C-1",
      "created": "2026-11-04",
      "amount": 20,
      "currency": "USD",
      "status": "paid"
    },
    {
      "id": "R-5",
      "customer": "C-2",
      "created": "2026-11-04",
      "amount": 18,
      "currency": "USD",
      "status": "refunded"
    }
  ]
}

Response exampleJSON

{
  "checkedAt": "2026-11-04T09:00:00.000Z",
  "status": "checked",
  "level": "review",
  "orderCount": 5,
  "signalCount": 2,
  "customers": [
    {
      "customer": "C-1",
      "orderCount": 4,
      "signalCount": 2,
      "level": "review",
      "signals": "repeat_refund,refund_rate"
    },
    {
      "customer": "C-2",
      "orderCount": 1,
      "signalCount": 0,
      "level": "none",
      "signals": ""
    }
  ],
  "signals": [
    {
      "code": "repeat_refund",
      "rule": "min_refunded_orders",
      "detail": "Customer C-1 has 3 supplied orders with status refunded.",
      "confirmed": false,
      "orders": [
        "R-1",
        "R-2",
        "R-3"
      ]
    },
    {
      "code": "refund_rate",
      "rule": "refunded_share_at_least_half",
      "detail": "Customer C-1 has 3 refunded orders out of 4 supplied orders. The share is at least half and at least 3 refunds.",
      "confirmed": false,
      "orders": [
        "R-1",
        "R-2",
        "R-3"
      ]
    }
  ],
  "fraudConfirmed": false,
  "paymentProcessed": false,
  "orderBlocked": false,
  "accountAccessed": false,
  "findings": [
    {
      "kind": "observation",
      "code": "sample_too_small",
      "subject": "",
      "detail": "Fewer than 8 amounts share a currency, so no amount fence was applied."
    },
    {
      "kind": "missing",
      "code": "card_missing",
      "subject": "",
      "detail": "No card fingerprint was supplied. Cards were not looked up."
    },
    {
      "kind": "observation",
      "code": "small_amount_rule_missing",
      "subject": "",
      "detail": "No small-amount rule was supplied, so low amounts were not treated as card testing."
    },
    {
      "kind": "observation",
      "code": "quantity_rule_missing",
      "subject": "",
      "detail": "No quantity rule was supplied. Bulk quantity was not inferred."
    },
    {
      "kind": "indicator",
      "code": "repeat_refund",
      "subject": "R-1",
      "detail": "Customer C-1 has 3 supplied orders with status refunded."
    },
    {
      "kind": "indicator",
      "code": "refund_rate",
      "subject": "R-1",
      "detail": "Customer C-1 has 3 refunded orders out of 4 supplied orders. The share is at least half and at least 3 refunds."
    },
    {
      "kind": "missing",
      "code": "promo_missing",
      "subject": "",
      "detail": "No promotion code was supplied."
    },
    {
      "kind": "observation",
      "code": "address_incomplete",
      "subject": "R-1",
      "detail": "No shipping address was supplied. A missing address is not a fraud indicator."
    },
    {
      "kind": "observation",
      "code": "address_incomplete",
      "subject": "R-2",
      "detail": "No shipping address was supplied. A missing address is not a fraud indicator."
    },
    {
      "kind": "observation",
      "code": "address_incomplete",
      "subject": "R-3",
      "detail": "No shipping address was supplied. A missing address is not a fraud indicator."
    },
    {
      "kind": "observation",
      "code": "address_incomplete",
      "subject": "R-4",
      "detail": "No shipping address was supplied. A missing address is not a fraud indicator."
    },
    {
      "kind": "observation",
      "code": "address_incomplete",
      "subject": "R-5",
      "detail": "No shipping address was supplied. A missing address is not a fraud indicator."
    },
    {
      "kind": "observation",
      "code": "window_missing",
      "subject": "",
      "detail": "No minute window was supplied. Orders were compared on the same calendar day."
    }
  ],
  "limitations": [
    "Patterns are calculated only from the orders supplied in the request.",
    "One signal is an indicator. It does not mean the customer is fraudulent.",
    "No payment is processed, no order is blocked, and no merchant account is accessed.",
    "A full card number is not copied. A statistical outlier is not confirmed fraud."
  ]
}

cURL

curl -i -X POST "https://brainiac.software/api/v1/ecommerce-fraud/investigation-report" \
  -H 'content-type: application/json' \
  -H 'Idempotency-Key: <fresh-64-character-random-hex-key>' \
  --data-binary @- <<'JSON'
{
  "orders": [
    {
      "id": "R-1",
      "customer": "C-1",
      "created": "2026-11-01",
      "amount": 20,
      "currency": "USD",
      "status": "refunded"
    },
    {
      "id": "R-2",
      "customer": "C-1",
      "created": "2026-11-02",
      "amount": 22,
      "currency": "USD",
      "status": "refunded"
    },
    {
      "id": "R-3",
      "customer": "C-1",
      "created": "2026-11-03",
      "amount": 21,
      "currency": "USD",
      "status": "refunded"
    },
    {
      "id": "R-4",
      "customer": "C-1",
      "created": "2026-11-04",
      "amount": 20,
      "currency": "USD",
      "status": "paid"
    },
    {
      "id": "R-5",
      "customer": "C-2",
      "created": "2026-11-04",
      "amount": 18,
      "currency": "USD",
      "status": "refunded"
    }
  ]
}
JSON