---
title: "Corgi Labs transaction metadata"
description: "Reference for every metadata key Corgi writes to your transactions, with integration-specific details and decision semantics."
url: https://www.corgilabs.ai/docs/corgi-intelligence/corgi-labs-transaction-metadata
updated: 2026-08-03
---

# Corgi Labs transaction metadata

When Corgi Labs processes a transaction, Corgi Model and Corgi Rule Engine add metadata that explains the risk evaluation and the resulting action. The exact metadata keys available depend on your integration flow and payment service provider.

This reference lists every metadata key Corgi writes, when it appears, and what it means. Use it to debug transactions, build reporting, or integrate Corgi data into your own systems.

---

## CORGI Model metadata

Corgi Model is managed by Corgi and does not appear as a merchant-configurable rule in the Rule Engine. When Corgi Model evaluates a transaction, scoring and decision metadata populate automatically.

| Metadata key | Integration flow | Description |
|---|---|---|
| `corgi_score` | All supported flows | Corgi's payment risk score from 0 to 100. Higher values indicate a higher predicted likelihood of dispute. During staged rollout, Corgi Model may evaluate 30%, 70%, or 100% of eligible traffic. Payments outside the selected model traffic do not have this key. |
| `corgi_pre_auth_decision`, `corgi_pre_auth_matched_rule` | Corgi SDK `confirm-payment` only | Result of the Corgi Model and Rule Engine evaluation before payment authorization. When Corgi Model approves the payment, `corgi_pre_auth_decision` is `NONE` unless a rule also matched. When Corgi Model blocks the payment, `corgi_pre_auth_decision` is `BLOCK`, and `corgi_pre_auth_matched_rule` is `corgi-model-rule-id, CORGI model`. |
| `corgi_decision`, `corgi_matched_rule` | Stripe Checkout for subscriptions only | Result of the Corgi Model and Rule Engine evaluation. When Corgi Model approves the payment, `corgi_decision` is `NONE` unless a rule also matched. When Corgi Model blocks the payment, `corgi_decision` is `BLOCK`, and `corgi_matched_rule` is `corgi-model-rule-id, CORGI model`. |

`corgi-model-rule-id` is a reserved, stable identifier that represents the Corgi-managed model rule consistently across integrations.

---

## All transaction metadata by integration type

### Corgi SDK `confirm-payment` for Stripe

Calls to `POST /api/v1/corgi-sdk/confirm-payment` may be routed through a two-phase evaluation. Corgi Rule Engine evaluates the payment before authorization and, when required, after authorization. Corgi writes the metadata below to the Stripe `PaymentIntent` it creates and preserves any metadata you supplied in `paymentIntentParams.metadata`.

| Metadata key | Type / example | When present | Description |
|---|---|---|---|
| `corgi_pre_auth_decision` | enum / `ALLOW`, `BLOCK`, `REVIEW`, `REQUEST_3DS`, or `NONE` | After pre-auth evaluation | Result of the Corgi Model and Corgi Rule Engine evaluation before payment authorization. `NONE` means evaluation completed and no model or rule produced an action. |
| `corgi_pre_auth_matched_rule` | string / `rule_123, Review new customers` | After pre-auth evaluation | Matched rule ID and name before authorization, formatted as `rule ID, rule name`. An empty string means no rule matched. |
| `corgi_post_auth_decision` | enum / `ALLOW`, `BLOCK`, `REVIEW`, or `NONE` | After post-auth evaluation | Result of the Corgi Rule Engine evaluation after payment authorization. `ALLOW` means an allow rule matched; `NONE` means evaluation completed and no post-authorization rule produced an action. This key is absent when post-authorization evaluation does not run. |
| `corgi_post_auth_matched_rule` | string / `rule_456, Block high risk` | After post-auth evaluation | Rule ID and name matched after authorization, formatted as `rule ID, rule name`. An empty string means no rule matched. |
| `corgi_request_3ds_matched_rule` | string / `rule_789, Require 3DS` | When 3DS is requested | Rule ID and name that requested 3D Secure, formatted as `rule ID, rule name`. When present, `corgi_pre_auth_decision` is `REQUEST_3DS`. The authentication result is available on the Stripe `PaymentIntent` or `Charge`. |
| `corgi_global_rule` | string / `0.1, OFAC Comprehensively Embargoed Jurisdictions` | When a global rule matches | Number and name of the matched global rule, formatted as `number, name`. Global rules are Corgi-managed compliance and network-level fraud rules. You cannot configure them, but this metadata identifies the matched rule. |
| `corgi_global_block` | boolean / `true` or `false` | When a global rule matches | `true` when the matched global rule produces a block action. |
| `corgi_capture_method` | enum / `automatic` or `manual` | When Rule Engine evaluates the payment | The capture method requested in `paymentIntentParams.capture_method`; defaults to `automatic`. Corgi creates the `PaymentIntent` with manual capture while evaluating risk, then uses this value to preserve your requested capture behavior. This is separate from the Stripe Payment Element configuration. The `ConfirmationToken` must be created with `captureMethod: "manual"` for this flow. |
| `fp_event_id` | string / `fp_evt_…` | When supplied by you | Your event ID from [fingerprint.com](http://fingerprint.com/), provided through `paymentIntentParams.metadata`. Corgi copies it to the `PaymentIntent` and uses the event to evaluate device, browser, IP, and other device signals. |

### Stripe Checkout for subscriptions

This flow is for subscription businesses using Stripe Checkout. It uses a payment-mode Checkout Session for a temporary manual-capture authorization. After `checkout.session.completed`, Corgi evaluates the authorized payment, cancels the authorization, and creates a `Subscription` unless the payment is blocked.

Your Checkout Session must use `mode: "payment"` with `payment_intent_data.capture_method: "manual"` and `setup_future_usage: "off_session"`.

| Metadata key | Type / example | When present | Description |
|---|---|---|---|
| `corgi_decision` | enum / `ALLOW`, `BLOCK`, `REVIEW`, or `NONE` | After this Checkout subscription flow is processed | Corgi Model or Corgi Rule Engine evaluation result written to the Checkout Session and related `PaymentIntent` objects. This value records the evaluated action; enforcement may depend on your project's action settings. `NONE` means no model or rule produced an action, unless `corgi_rule_engine_skipped` is `true`. |
| `corgi_subscription_id` | string / `sub_…` | When a subscription is created | ID of the `Subscription` created by this Stripe Checkout subscription flow, written to the Checkout Session and related `PaymentIntent` objects. This key is absent when the payment is blocked or no `Subscription` is created. |
| `corgi_matched_rule` | string / `rule_123, Review new customers` | When a rule matches | Matched rule ID and name, formatted as `rule ID, rule name`, written to the Checkout Session and related `PaymentIntent` objects. |
| `corgi_rule_engine_skipped` | boolean / `true` | When rule evaluation is skipped | `true` when Corgi intentionally skips rule evaluation for the transaction. Written to the Checkout Session and the created `Subscription`'s `PaymentIntent`. |
| `corgi_global_rule` | string / `0.1, OFAC Comprehensively Embargoed Jurisdictions` | When a global rule matches | Number and name of the matched global rule, formatted as `number, name`, written to the Checkout Session and related `PaymentIntent` objects. Global rules are Corgi-managed compliance and network-level fraud rules. You cannot configure them, but this metadata identifies the matched rule. |
| `corgi_global_block` | boolean / `true` or `false` | When a global rule matches | `true` when the matched global rule produces a block action. Written to the Checkout Session and related `PaymentIntent` objects. |
| `corgi_decision_at` | ISO 8601 string / `2026-07-28T06:50:21.907Z` | After this Checkout subscription flow is processed | ISO 8601 timestamp marking completion of this Checkout subscription evaluation, written to the Checkout Session and related `PaymentIntent` objects. |
| `corgi_checkout_session_id` | string / `cs_…` | On the created `Subscription` | ID of the Checkout Session that originated the `Subscription`. |
| `corgi_subscription_params` | JSON / `{"items":[{"price":"price_…","quantity":1}]}` | Required for this flow | Your Stripe `Subscription` creation parameters stored on the Checkout Session. The JSON value must contain at least one `items` entry. When the payment is permitted, Corgi creates the `Subscription` from these parameters and derives the customer and default payment method from the completed Checkout flow. |
| `fp_event_id` | string / `fp_evt_…` | When supplied by you | Your event ID from [fingerprint.com](http://fingerprint.com/), provided through `paymentIntentParams.metadata`. Corgi copies it to the `PaymentIntent` and uses the event to evaluate device, browser, IP, and other device signals. |

---

## Decision values

The following enum values appear in `corgi_pre_auth_decision`, `corgi_post_auth_decision`, and `corgi_decision`:

| Value | Meaning |
|---|---|
| `ALLOW` | An allow rule matched. |
| `BLOCK` | A block rule or the Corgi Model blocked the payment. |
| `REVIEW` | A review rule matched. |
| `REQUEST_3DS` | 3D Secure was requested (pre-auth only). |
| `NONE` | Evaluation completed and no model or rule produced an action. |

---

## Global rules

Global rules are Corgi-managed compliance and network-level fraud rules. You cannot configure them, but Corgi exposes when they match through metadata.
