---
updatedAt: 2026-05-07T18:17:26.000Z
agentTools:
  projectIndex: https://docs.joinforage.app/llms.txt
---

# Retrieve an Order

A `GET` request to `/orders/{order_ref}/` retrieves the specified [`Order` object](ref:orders#order-object).

The `order_ref` is the `ref` value that Forage returns in response to the request that created the order's parent [`Session`](ref:forage-sessions).

You can use this endpoint to request the transaction outcome from Forage after a customer completes a Fully Hosted or Custom Session.


# OpenAPI definition

```json
{
  "openapi": "3.0.0",
  "x-readme": {
    "explorer-enabled": false,
    "proxy-enabled": false
  },
  "info": {
    "title": "Forage Payments API",
    "description": "The Forage Payments API is a REST API for processing Electronic Benefits Transfer (EBT) payments (SNAP and EBT Cash) in your e-commerce or in-store application.\n\nProcessing any EBT payment, or checking an EBT card's balance, requires the cardholder's PIN. Federal regulations require all PIN entry to happen through a PCI-compliant, USDA-approved interface. Forage provides that interface, so EBT PIN collection always happens through a Forage-hosted surface (Forage Checkout or a Forage SDK), never directly in your own form. Some endpoints (for example, capture and balance) are only reachable through that surface because they require PIN data in the request.\n\nEBT rarely covers an entire order: items like delivery fees and non-eligible products can't be paid with SNAP or EBT Cash. You decide how to handle the remaining balance (split tender) and any credit or debit processing alongside the EBT portion.\n\nForage offers four integration options. Pick the one that fits your platform and engineering resources:\n\n1. **Fully Hosted Checkout.** Forage processes EBT and credit/debit through a Forage-hosted Checkout UI. Lowest engineering effort, and Forage absorbs most error handling. See the [Fully Hosted Checkout guide](https://docs.joinforage.app/docs/fully-hosted).\n2. **Custom Checkout.** Forage processes EBT; you handle split tender, taxes, and credit/debit in your own checkout flow. Best when you want minimal changes to your existing UX. See the [Custom Checkout guide](https://docs.joinforage.app/docs/custom).\n3. **Online SDKs.** Client-side SDKs for [web](https://docs.joinforage.app/docs/forage-js), [iOS](https://docs.joinforage.app/docs/ios), and [Android](https://docs.joinforage.app/docs/android) that collect EBT PINs in your app while keeping you out of PCI scope.\n4. **POS Terminal SDK.** Accept in-person EBT payments on an Android POS device. See the [POS Terminal guide](https://docs.joinforage.app/docs/forage-terminal-android).\n\nAs a general principle, any data created by your requests, or by your customers on a Forage-hosted surface, is retrievable through GET requests to the appropriate resource.\n\nHave more questions? Use our [contact form](https://www.joinforage.com/get-in-touch) to reach our sales and engineering support teams.\n",
    "contact": {
      "name": "API Support",
      "email": "engineering@joinforage.com"
    },
    "version": "2025-08-04"
  },
  "externalDocs": {
    "description": "Forage documentation",
    "url": "https://docs.joinforage.app/"
  },
  "servers": [
    {
      "url": "https://{environment}.joinforage.app",
      "variables": {
        "environment": {
          "default": "api.sandbox",
          "enum": [
            "api",
            "api.sandbox"
          ]
        }
      }
    }
  ],
  "security": [],
  "paths": {
    "/api/orders/{order_ref}/": {
      "parameters": [
        {
          "name": "order_ref",
          "in": "path",
          "description": "A unique reference hash for the Forage `Order` object, returned when the order’s parent [`Session`](https://docs.joinforage.app/reference/forage-sessions) was created.",
          "required": true,
          "schema": {
            "type": "string"
          }
        },
        {
          "$ref": "#/components/parameters/MerchantAccountHeader"
        },
        {
          "$ref": "#/components/parameters/APIVersionHeader"
        }
      ],
      "get": {
        "parameters": [
          {
            "$ref": "#/components/parameters/BearerTokenHeader"
          }
        ],
        "tags": [
          "Orders"
        ],
        "summary": "Retrieve an Order",
        "x-readme": {
          "code-samples": [
            {
              "language": "curl",
              "code": "curl --request GET \\\n    --url https://api.sandbox.joinforage.app/api/orders/<order_ref>/ \\\n    --header 'Authorization: Bearer <api_key>' \\\n    --header 'Merchant-Account: <merchant-id>' \\\n    --header 'accept: application/json'\n"
            }
          ]
        },
        "description": "A `GET` request to `/orders/{order_ref}/` retrieves the specified [`Order` object](https://docs.joinforage.app/reference/orders#order-object).\n\nThe `order_ref` is the `ref` value that Forage returns in response to the request that created the order’s parent [`Session`](https://docs.joinforage.app/reference/forage-sessions).\n\nYou can use this endpoint to request the transaction outcome from Forage after a customer completes a Fully Hosted or Custom Session.\n",
        "operationId": "Get order",
        "security": [
          {
            "OAuth2": [
              "hosted_checkout",
              "pinpad_only",
              "internal"
            ]
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/Order200"
          },
          "400": {
            "description": "__Bad request__ - The request was not accepted because of an error in the request body or path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseObject"
                },
                "examples": {
                  "invalid_input_data": {
                    "summary": "Invalid Input Data",
                    "value": {
                      "path": "/api/orders/{order_ref}/",
                      "errors": [
                        {
                          "code": "invalid_input_data",
                          "message": "Query parameter missing or incomplete.",
                          "source": {
                            "resource": "Orders",
                            "ref": "{order_ref}"
                          }
                        }
                      ]
                    }
                  },
                  "invalid_merchant_account": {
                    "summary": "Invalid Merchant Account",
                    "value": {
                      "path": "/api/orders/{order_ref}/",
                      "errors": [
                        {
                          "code": "invalid_merchant_account",
                          "message": "Merchant account Merchant ID not valid.",
                          "source": {
                            "resource": "Merchants"
                          }
                        }
                      ]
                    }
                  },
                  "missing_idempotency_key": {
                    "summary": "Missing Idempotency Key",
                    "value": {
                      "path": "/api/orders/{order_ref}/",
                      "errors": [
                        {
                          "code": "missing_idempotency_key",
                          "message": "You must include a value for the IDEMPOTENCY-KEY header in your requests to this endpoint.",
                          "source": {
                            "resource": "Idempotency_Key"
                          }
                        }
                      ]
                    }
                  },
                  "missing_merchant_account": {
                    "summary": "Missing Merchant Account",
                    "value": {
                      "path": "/api/orders/{order_ref}/",
                      "errors": [
                        {
                          "code": "missing_merchant_account",
                          "message": "No merchant account was provided.",
                          "source": {
                            "resource": "Merchants"
                          }
                        }
                      ]
                    }
                  },
                  "unknown_fields_error": {
                    "summary": "Unknown Fields Error",
                    "value": {
                      "path": "/api/orders/{order_ref}/",
                      "errors": [
                        {
                          "code": "unknown_fields_error",
                          "message": "Unknown field(s) provided: {unknown_fields}",
                          "source": {
                            "resource": "Orders"
                          }
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseObject"
                },
                "examples": {
                  "expired_session_token": {
                    "summary": "Expired Session Token",
                    "value": {
                      "path": "/api/orders/{order_ref}/",
                      "errors": [
                        {
                          "code": "expired_session_token",
                          "message": "This token has expired",
                          "source": {
                            "resource": "Session_Token"
                          }
                        }
                      ]
                    }
                  },
                  "invalid_token": {
                    "summary": "Invalid Token",
                    "value": {
                      "path": "/api/orders/{order_ref}/",
                      "errors": [
                        {
                          "code": "invalid_token",
                          "message": "Incorrect authentication credentials.",
                          "source": {
                            "resource": "Accounts",
                            "ref": ""
                          }
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "__Not Found__ - The requested resource was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseObject"
                },
                "example": {
                  "path": "/api/orders/{order_ref}/",
                  "errors": [
                    {
                      "code": "resource_not_found",
                      "message": "Order with ref {order_ref} does not exist for current Merchant with FNS {fns_number}",
                      "source": {
                        "resource": "Orders",
                        "ref": "{order_ref}"
                      }
                    }
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseObject"
                },
                "examples": {
                  "too_many_requests": {
                    "summary": "Too Many Requests",
                    "value": {
                      "path": "/api/orders/{order_ref}/",
                      "errors": [
                        {
                          "code": "too_many_requests",
                          "message": "Request was throttled, please try again later.",
                          "source": {
                            "resource": "Orders",
                            "ref": "{order_ref}"
                          }
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseObject"
                },
                "examples": {
                  "unknown_server_error": {
                    "summary": "Unknown Server Error",
                    "value": {
                      "path": "/api/orders/{order_ref}/",
                      "errors": [
                        {
                          "code": "unknown_server_error",
                          "message": "Unknown exception from EBT network",
                          "source": {
                            "resource": "Unknown"
                          }
                        }
                      ]
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "ErrorsArray": {
        "type": "array",
        "description": "An array with information about the error.",
        "items": {
          "type": "object",
          "properties": {
            "code": {
              "type": "string",
              "description": "A short string that represents the error."
            },
            "message": {
              "type": "string",
              "description": "A developer-facing message with more details about the error, not to be displayed to customers."
            },
            "source": {
              "type": "object",
              "properties": {
                "resource": {
                  "type": "string",
                  "description": "The type of the Forage resource involved in the error."
                },
                "ref": {
                  "type": "string",
                  "description": "If applicable, the ten character reference hash of the Forage resource that caused the error. An empty string if no specific individual resource was involved."
                }
              }
            },
            "details": {
              "type": "object",
              "description": "Additional details about the error, if applicable."
            }
          }
        },
        "example": []
      },
      "ErrorResponseObject": {
        "type": "object",
        "description": "An object that includes details about the error.",
        "properties": {
          "path": {
            "type": "string",
            "description": "The requested endpoint."
          },
          "errors": {
            "$ref": "#/components/schemas/ErrorsArray"
          }
        }
      },
      "OrderResponse": {
        "type": "object",
        "required": [
          "ref",
          "snap_total",
          "ebt_cash_total",
          "delivery_address",
          "is_delivery",
          "success_redirect_url",
          "cancel_redirect_url",
          "supported_benefits",
          "psp_customer_id",
          "customer_id",
          "external_order_id",
          "external_location_id",
          "status",
          "payments",
          "refunds",
          "success_date",
          "receipt",
          "expires_at",
          "is_commercial_shipping",
          "previous_errors"
        ],
        "properties": {
          "ref": {
            "type": "string",
            "description": "A unique reference hash for the Forage `Order` object.",
            "example": "93410bcaff"
          },
          "snap_total": {
            "type": "string",
            "format": "currency",
            "description": "The SNAP eligible portion of the order cost in USD, represented as a numeric string. Precision is supported to the penny.",
            "example": "25.99"
          },
          "ebt_cash_total": {
            "type": "string",
            "format": "currency",
            "description": "The portion of the `Order` total, in USD, that is EBT Cash eligible only, represented as a numeric string. Precision is supported to the penny.",
            "example": "5.99"
          },
          "remaining_total": {
            "type": "string",
            "format": "currency",
            "description": "The portion of the `Order` total, in USD, that is neither SNAP eligible nor EBT Cash eligible, represented as a numeric string. This amount must be charged to a credit or debit card, with precision supported to the penny. _This value is returned only for [Fully Hosted Sessions](https://docs.joinforage.app/reference/forage-sessions#fully-hosted-session) and is not included if the `Order` was created using a POST request to [`/capture_sessions/`](https://docs.joinforage.app/reference/create-capture-session)._",
            "example": "10.99"
          },
          "product_list": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductDataResponse"
            },
            "description": "A list of the products in the customer's cart. If there are no taxes applied to any of the products, then this field can be empty. _This value is only returned for [Fully Hosted Sessions](https://docs.joinforage.app/reference/forage-sessions#fully-hosted-session). It is not returned if the `Order` was created via a POST to [`/capture_sessions/`](https://docs.joinforage.app/reference/create-capture-session)._",
            "example": []
          },
          "platform_fee": {
            "type": "string",
            "format": "decimal",
            "description": "An optional field, for use by a platform supporting multiple merchants, that indicates the percentage cut of each payment that the platform charges as a fee. Represented as a decimal string.",
            "example": "0.05"
          },
          "delivery_address": {
            "$ref": "#/components/schemas/DeliveryAddressData"
          },
          "is_delivery": {
            "type": "boolean",
            "description": "Whether the order is for delivery or pickup. This information is required per FNS regulations. Defaults to `false` if not provided.",
            "example": true
          },
          "success_redirect_url": {
            "type": "string",
            "description": "The URL to redirect your customer to if the order is completed successfully, passed in the original request to create a `Session`.",
            "example": "https://www.your-app.com/?status=SUCCEEDED"
          },
          "cancel_redirect_url": {
            "type": "string",
            "description": "The URL to redirect your customer to if they cancel the order, passed in the original request to create a `Session`.",
            "example": "https://www.your-app.com/?status=CANCELED"
          },
          "supported_benefits": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list that limits the types of payment methods that can be applied at checkout, including any or all of the values in: `[\"snap\", \"ebt_cash\", \"non_ebt\"]`. Use `supported_benefits` **only** if you want to restrict the possible payment method types. Omit this field in all other cases. For example, pass `[\"snap\", \"non_ebt\"]` if you want to accept SNAP and credit card payments only (excluding EBT Cash).\n",
            "example": [
              "snap",
              "non_ebt"
            ]
          },
          "psp_customer_id": {
            "type": "string",
            "nullable": true,
            "description": "The third-party credit/debit payment processor's unique identifier for the customer. _This value is returned as `null` if the `Order` was created via a POST to [`/capture_sessions/`](https://docs.joinforage.app/reference/create-capture-session)._\n\n**You must build with Forage Version `2023-05-15` or later to use `psp_customer_id`.** Either pass `2023-05-15` as the `API-Version` header on a per request basis, or set the version for all requests in the Forage dashboard.\n",
            "example": "cus_AJ6yA7mRH34mJT"
          },
          "customer_id": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CustomerIDField"
              }
            ],
            "nullable": true,
            "example": "my_user_id"
          },
          "external_order_id": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ExternalOrderIDField"
              }
            ],
            "nullable": true
          },
          "external_location_id": {
            "type": "string",
            "nullable": true,
            "description": "A unique identifier for the physical fulfillment location."
          },
          "status": {
            "type": "string",
            "description": "The status of the `Order` in the Forage lifecycle. One of:\n\n- `canceled`\n- `draft` (the status at the start, when a Session is created)\n- `failed`\n- `processing`\n- `succeeded`\n\nIf the value is `failed`, then [inspect the associated Order Payments](https://docs.joinforage.app/reference/get-all-order-payments) to determine the cause of the error.\n",
            "enum": [
              "draft",
              "processing",
              "failed",
              "succeeded",
              "canceled"
            ],
            "example": "draft"
          },
          "payments": {
            "type": "array",
            "description": "An array of the unique reference hashes for any Forage `OrderPayment` objects associated with the `Order`.",
            "items": {
              "type": "string",
              "description": "Payment ref"
            },
            "example": []
          },
          "refunds": {
            "type": "array",
            "description": "An array of the unique reference hashes for any Forage `OrderRefund` objects associated with the `Order`.",
            "items": {
              "type": "string",
              "description": "Refund ref"
            },
            "example": []
          },
          "success_date": {
            "type": "string",
            "nullable": true,
            "format": "date-time",
            "description": "A UTC timestamp of the date when the `Order` was successfully charged. This value is `null` if the `status` of the `Order` is not yet `succeeded`.",
            "example": "2021-06-16T00:11:50.000000Z"
          },
          "receipt": {
            "nullable": true,
            "description": "Most of the information that you're required to display to the customer, according to FNS regulations.\n\nThis field is `null` if the data that populates the receipt is not yet available.\n\nThe total amount paid by the customer is `snap_amount` + `ebt_cash_amount` + `other_amount`. This amount will be settled with the merchant after applying Forage's fees.\n",
            "allOf": [
              {
                "$ref": "#/components/schemas/ReceiptData"
              }
            ]
          },
          "expires_at": {
            "type": "string",
            "nullable": true,
            "format": "date-time",
            "description": "A UTC timestamp of when the `Order` will expire if it is not captured or canceled, set to 30 minutes from when the `Order` is created.\n\nIf the `status` of the `Order` is `succeeded` or `canceled`, then the `expires_at` value is `null`.\n",
            "example": "2021-06-16T00:41:50.000000Z"
          },
          "is_commercial_shipping": {
            "type": "boolean",
            "nullable": true,
            "description": "Whether the order is to be shipped commercially. FNS uses this value in its database for statistics."
          },
          "previous_errors": {
            "$ref": "#/components/schemas/ErrorsArray"
          }
        }
      },
      "BalanceResponse": {
        "type": "object",
        "description": "An object that represents an EBT cardholder's account balance.",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier for the balance record.",
            "example": 12345
          },
          "snap": {
            "type": "string",
            "format": "currency",
            "description": "The available SNAP balance in USD on the customer’s EBT Card, represented as a numeric string."
          },
          "non_snap": {
            "type": "string",
            "format": "currency",
            "description": "The available EBT Cash balance in USD on the customer's EBT Card, represented as a numeric string."
          },
          "updated": {
            "type": "string",
            "format": "date-time",
            "description": "A UTC timestamp that indicates when the funds in the account last changed, represented as an [ISO 8601 date-time](https://www.iso.org/iso-8601-date-and-time-format.html) string."
          },
          "sequence_number": {
            "type": "string",
            "description": "A transaction number for this `PaymentMethod`'s most recent balance check. Returned only for POS Terminal transactions; omitted from online merchant balance checks."
          }
        }
      },
      "ProductDataResponse": {
        "type": "object",
        "required": [
          "id",
          "name",
          "upc",
          "unit_price",
          "quantity",
          "eligibility",
          "snap_amount",
          "cash_amount",
          "credit_debit_amount",
          "tax_collected",
          "taxes_charged",
          "taxes_exempted"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier for the product."
          },
          "name": {
            "type": "string",
            "description": "The name of the product."
          },
          "upc": {
            "type": "string",
            "nullable": true,
            "description": "The UPC of the product."
          },
          "gtin": {
            "type": "string",
            "description": "The GTIN (Global Trade Item Number) of the product."
          },
          "unit_price": {
            "type": "string",
            "format": "currency",
            "description": "The unit price of the product, represented as a numeric string."
          },
          "quantity": {
            "type": "integer",
            "description": "The quantity of the product."
          },
          "tax_rate": {
            "type": "string",
            "format": "decimal",
            "description": "The tax rate for the product, represented as a decimal string with at most six decimal places. A value of `0` indicates a tax rate of 0%, and a value of `1` indicates a tax rate of 100%. To set a 2% tax rate, for example, set the value to `0.02`. Use this field if the product is subject to only one tax rate. If multiple tax rates apply, for example both a state grocery tax and a sweetened beverage tax, then use the `tax_rate_list` param instead of `tax_rate`."
          },
          "tax_rate_list": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "imposed_by",
                "tax_rate"
              ],
              "properties": {
                "imposed_by": {
                  "type": "string",
                  "description": "The entity applying the tax to this item."
                },
                "tax_rate": {
                  "type": "string",
                  "format": "decimal",
                  "description": "The tax rate applied to the item by the entity described in the `imposed_by` field, represented as a decimal string. If the product is subject to only one tax rate, then use the single `tax_rate` param instead of `tax_rate_list`."
                },
                "taxes_charged": {
                  "type": "string",
                  "format": "currency",
                  "nullable": true,
                  "description": "The portion of taxes charged for this item attributable to the `imposed_by` entity, represented as a numeric string."
                },
                "taxes_exempted": {
                  "type": "string",
                  "format": "currency",
                  "nullable": true,
                  "description": "The portion of taxes exempted for this item attributable to the `imposed_by` entity, represented as a numeric string."
                }
              }
            }
          },
          "eligibility": {
            "type": "string",
            "nullable": true,
            "enum": [
              "snap",
              "ebt_cash",
              "non_ebt"
            ],
            "description": "The eligibility of the product. Must be `snap`, `ebt_cash`, or `non_ebt`."
          },
          "snap_amount": {
            "type": "string",
            "format": "currency",
            "nullable": true,
            "description": "The amount paid for this product using SNAP benefits in USD, represented as a numeric string. Precision is supported to the penny."
          },
          "cash_amount": {
            "type": "string",
            "format": "currency",
            "nullable": true,
            "description": "The amount paid for this product using EBT Cash benefits in USD, represented as a numeric string. Precision is supported to the penny."
          },
          "credit_debit_amount": {
            "type": "string",
            "format": "currency",
            "nullable": true,
            "description": "The amount paid for this product using credit or debit card in USD, represented as a numeric string. Precision is supported to the penny."
          },
          "tax_collected": {
            "type": "string",
            "format": "currency",
            "nullable": true,
            "description": "The tax amount collected for this product in USD, represented as a numeric string. Precision is supported to the penny."
          },
          "taxes_charged": {
            "type": "string",
            "format": "currency",
            "nullable": true,
            "description": "The amount of taxes charged for this product in USD, represented as a numeric string. Precision is supported to the penny.",
            "example": "2.47"
          },
          "taxes_exempted": {
            "type": "string",
            "format": "currency",
            "nullable": true,
            "description": "The amount of taxes exempted for this product in USD, represented as a numeric string. Precision is supported to the penny.",
            "example": "1.83"
          }
        }
      },
      "DeliveryAddressData": {
        "type": "object",
        "required": [
          "line1",
          "zipcode"
        ],
        "description": "⚠️ **Exception**: If the purchase is made in-store via a POS Terminal, then a `delivery_address` is not required when creating a `Payment`.\n\nThe address for delivery or pickup of the `Order`. Per FNS regulations, this value must always be provided. If the `Order` is for pickup, then use the merchant address.\n",
        "properties": {
          "city": {
            "type": "string",
            "description": "The name of the city."
          },
          "country": {
            "type": "string",
            "description": "Either `us` or `US`. Defaults to `US` if not provided."
          },
          "line1": {
            "type": "string",
            "description": "The first line of the street address."
          },
          "line2": {
            "type": "string",
            "nullable": true,
            "description": "The second line of the street address."
          },
          "zipcode": {
            "type": "string",
            "description": "The zip or postal code."
          },
          "state": {
            "type": "string",
            "description": "The two-letter abbreviation, can be upper or lowercase, for the US state."
          }
        }
      },
      "ReceiptData": {
        "type": "object",
        "description": "Most of the information that you're required to display to the customer, according to FNS regulations.\n\nThis field is `null` if the data that populates the receipt is not yet available.\n\nThe total amount paid by the customer is `snap_amount` + `ebt_cash_amount` + `other_amount`. This amount will be settled with the merchant after applying Forage's fees.\n",
        "properties": {
          "ref_number": {
            "type": "string",
            "description": "A unique reference hash for the Forage `Order`, `Payment`, or `Refund` associated with this receipt.\n\nNote: `receipt.ref_number` equals `ref`.\n",
            "default": "45e3f12a90"
          },
          "is_voided": {
            "type": "boolean",
            "description": "Whether the transaction associated with this receipt has been voided. If `false`, then the transaction finished processing as expected. If `true`, then the transaction was reversed."
          },
          "snap_amount": {
            "type": "string",
            "description": "The USD amount charged/refunded to the SNAP balance of the EBT Card, represented as a numeric string.",
            "default": "25.99"
          },
          "ebt_cash_amount": {
            "type": "string",
            "format": "currency",
            "description": "The USD amount charged/refunded to the EBT Cash balance of the EBT Card, represented as a numeric string.",
            "default": "10.99"
          },
          "cash_back_amount": {
            "type": "string",
            "format": "currency",
            "nullable": true,
            "description": "The USD amount of cash back given to the customer, represented as a numeric string.",
            "default": "0.00"
          },
          "other_amount": {
            "type": "string",
            "format": "currency",
            "description": "The USD amount charged/refunded to any payment method that is not an EBT Card, represented as a numeric string.",
            "default": "5.99"
          },
          "sales_tax_applied": {
            "type": "string",
            "format": "currency",
            "description": "The USD amount of taxes charged to the customer’s non-EBT payment instrument, represented as a numeric string.",
            "default": "5.16"
          },
          "balance": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/BalanceResponse"
              }
            ]
          },
          "last_4": {
            "type": "string",
            "description": "The last four digits of the EBT Card number.",
            "default": "3456"
          },
          "message": {
            "type": "string",
            "description": "A message from the EBT payment network that must be displayed to the EBT cardholder.",
            "default": "Approved"
          },
          "transaction_type": {
            "type": "string",
            "enum": [
              "Order",
              "Refund",
              "Payment"
            ],
            "description": "A constant string that is used to identify the transaction type associated with the receipt.\n",
            "default": "Refund"
          },
          "created": {
            "type": "string",
            "format": "date-time",
            "description": "A UTC timestamp of when the Forage transaction object was created, represented as an [ISO 8601 date-time](https://www.iso.org/iso-8601-date-and-time-format.html) string.",
            "default": "2021-06-16T00:11:50.000000Z"
          },
          "sequence_number": {
            "type": "string",
            "nullable": true,
            "description": "The terminal transaction sequence number for POS transactions. `null` for online (non-POS) transactions."
          }
        }
      },
      "CustomerIDField": {
        "type": "string",
        "maxLength": 64,
        "description": "**⚠️ If you’re integrating Forage with a POS Terminal, then do not use this param. It is only supported for online transactions.**\n\nA unique identifier for the end customer making the payment.\n\nForage automatically adds the `customer_id` to the Session's corresponding `Order` and `OrderPayments`.\n\nThis field helps Forage's servers more quickly identify the customer associated with the request. While `customer_id` is not technically required, if you omit it then requests could take longer to process. **It is strongly recommended to pass customer_id.**\n\nIf you're providing your internal customer ID, then we recommend that you hash the value before sending it on the payload.\n\nEach customer should only have one unique `customer_id`. For example, if you create both a `PaymentMethod` and a Forage `Session` (Fully Hosted or Custom) or `Payment` (SDK) for the same customer, then the `customer_id` should be the same in both requests to ensure continuity of stored payment methods.\n"
      },
      "ExternalOrderIDField": {
        "type": "string",
        "maxLength": 64,
        "description": "A unique identifier for the order as created by the merchant or platform (not Forage).\n\nWhen a merchant or platform passes this order ID to Forage, it persists in each Forage transaction related to the `Order`. This field enables merchants to map order IDs in their system to corresponding Forage `Order` IDs.\n\n**You must build with Forage Version `2023-05-15` or later to use `external_order_id`.** Either pass `2023-05-15` as the `API-Version` header on a per request basis, or set the version for all requests in the Forage dashboard.\n"
      }
    },
    "responses": {
      "Order200": {
        "description": "__OK__ - Success",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OrderResponse"
            }
          }
        }
      }
    },
    "parameters": {
      "BearerTokenHeader": {
        "name": "Authorization",
        "in": "header",
        "description": "An OAuth 2.0 bearer token that validates the request. You can use either a short-lived [session token](https://docs.joinforage.app/docs/authentication#session-tokens) if the request is coming from the front-end, or an [authentication token](https://docs.joinforage.app/docs/authentication#authentication-tokens) for server-side requests. Pass the token in this header after the word `Bearer` and a whitespace, for example `Bearer <api_key>`.",
        "schema": {
          "type": "string"
        },
        "required": true
      },
      "MerchantAccountHeader": {
        "name": "Merchant-Account",
        "in": "header",
        "description": "A unique merchant ID that Forage provides during onboarding, as in `123ab45c67`. The Merchant ID can be found in the Forage [sandbox](https://dashboard.sandbox.joinforage.app/login/) or [production](https://dashboard.joinforage.app/login/) dashboard.",
        "schema": {
          "type": "string"
        },
        "required": true
      },
      "APIVersionHeader": {
        "name": "API-Version",
        "in": "header",
        "description": "The [Forage version](https://docs.joinforage.app/reference/version-history), represented as a string with the format of a `YYYY-MM-DD` date.\n\nIf not specified in the request header, then the version defaults to the value set in the Forage dashboard.\n",
        "schema": {
          "type": "string"
        },
        "required": false
      }
    },
    "securitySchemes": {
      "OAuth2": {
        "type": "oauth2",
        "description": "Pass the access token in the 'Authorization' header with the format \"Bearer ${token}\", i.e. the word \"Bearer\" and your access token from the /o/token/ API, separated by whitespace.\n",
        "flows": {
          "password": {
            "tokenUrl": "/o/token/",
            "scopes": {
              "hosted_checkout": "Scope for tokens used by merchant applications which allow Forage to manage split tender processing (i.e. EBT + Credit/Debit).\n",
              "pinpad_only": "Scope for tokens used by merchant applications which manage their own split tender (i.e. Forage Checkout is used only for EBT processing).\n"
            }
          },
          "clientCredentials": {
            "tokenUrl": "/o/token/",
            "scopes": {
              "internal": "Scope for tokens used by Forage internal applications.\n",
              "pin-protected": "Scope for tokens which can access secure storage.\n",
              "disbursement": "Scope for tokens which can disburse money to merchants.\n"
            }
          }
        }
      }
    }
  }
}
```

# Sibling pages

* [Update an Order](https://docs.joinforage.app/reference/update-order.md)
* [Cancel an Order](https://docs.joinforage.app/reference/cancel-order.md)