HomeGuidesReference
Log In

Reports

You can use the Forage API to retrieve data about your EBT SNAP business.

With the /reporting/ endpoints, you can:

The API responds to every /reporting/ request with a list of paginated results.

Query params

The following query params tell Forage what results to collect for a report:

start_date | date

The date that the reporting period starts, represented as an ISO 8601 date string, inclusive. The result set includes all reported items that occurred on the date.

The Forage server uses Pacific time, so, for example, a transaction that occurred at 2 AM EST on 2021-01-31 is included in the results for 2021-01-30.

end_date | date

The date that the reporting period ends, represented as an ISO 8601 date string, inclusive. The result set includes all reported items that occurred on the date.

The Forage server uses Pacific time, so, for example, a transaction that occurred at 2 AM on 2021-01-31 is included in the results for 2021-01-30.

limit | integer

The maximum number of objects to include in the results array. Not to exceed 1000. If the limit exceeds 1000, then Forage returns a 400 error response.

Defaults to 100.

cursor | string

The starting point for the results, as returned in a previous /reporting/ request. Find a cursor in the URL returned in the next and/or previous response values.

📘

Consult each endpoint's individual reference page for exact query params.

Not all endpoints accept a start_date and end_date, for example.

Report object

Example Order Report

{
  "next": "https://api.sandbox.joinforage.app/reporting/orders/?cursor=cD0yMDIzLTAxLTMxKzIxJTNBMzElM0ExNC40NTUxNjMlMkIwMCUzQTAw&end_date=2021-02-28&start_date=2021-01-31",
  "previous": null,
  "results": [
    {
      "ref": "b085e45a54",
      "status": "draft",
      "snap_eligible_total": 25.99,
      "ebt_cash_eligible_total": 21.23,
      "remaining_total": 44.39,
      "sales_tax_applied": 5.12,
      "snap_paid": 86.29,
      "ebt_cash_paid": 15.22,
      "credit_debit_paid": 67.9,
      "merchant_fns_number": "1234567",
      "created": "2021-06-15T00:11:50.000000Z-07:00",
      "success_date": "2021-06-16T00:11:50.000000Z-07:00",
      "payments": [
        "cd62e45f33",
        "a2f4e45665"
      ],
      "refunds": [
        "aaabe45432",
        "7e84e45db7"
      ],
      "psp_customer_id": "string",
      "external_order_id": "1f2ee410-5b47-4130-aec2-40f5eb2108f5"
    }
  ]
}

No matter the type of report, on success all /reporting/ endpoints respond with the following fields:

PropertyTypeDescription
nextstringA URL that you can send a GET to in order to retrieve the next set of results. Alternatively, you can retrieve the cursor value from the URL and pass it in the body of a new request.

This value is null if there are no more results.
previousstringA URL that you can send a GET to in order to retrieve the previous set of results. Alternatively, you can retrieve the cursor value from the URL and pass it in the body of a new request.

The value is null if the response includes the first set of results.
resultsarrayAn array of objects that varies depending on the type of report requested. Refer to Report types for report-level details.

Report types

Order Reports

/reporting/orders/

Order reports are only relevant to Fully Hosted and Custom integrations.

Only Fully Hosted and Custom integrations generate Forage Order objects. Use any of the other report types if you’re building with an SDK.

An order report includes a list of Forage Orders created during the provided reporting period.

If the status of an Order is not succeeded or failed, then some of the object response fields return null, as indicated in the table below.

The results field of the response to requests to /reporting/orders/ returns an array of objects. Each object contains the following fields:

PropertyTypeDescription
refstringA unique reference hash for the Forage Order object.
statusstringThe status of the order in the Forage lifecycle. One of:

- canceled
- draft
- failed
- processing
- succeeded
snap_eligible_totalnumberThe SNAP-only eligible portion of the order cost in USD.
ebt_cash_eligible_totalnumberThe EBT Cash-only eligible portion of the order cost in USD.
remaining_totalnumberThe portion of the order total in USD that is not SNAP or EBT Cash eligible. This amount must be charged to a credit or debit card.
sales_tax_applied*

*The value of this field is null if the status is not succeeded or failed
numberThe amount of sales tax that Forage added to the order total, calculated after the customer distributed tender across payment methods.

This value is always 0 for Custom integrations. Forage only calculates taxes for Fully Hosted integrations.

If the value is nonzero, then some of the ebt_cash_paid or credit_debit_paid covered taxes. Per FNS regulations, snap_paid is tax-exempt. The sum of (snap_paid, ebt_cash_paid, credit_debit_paid) should always equal the sum of (sales_tax_applied, snap_eligible_total, remaining_total).
snap_paid*

*The value of this field is null if the status is not succeeded or failed
numberThe portion of the order cost in USD that the customer paid for with SNAP benefits.
ebt_cash_paid*

*The value of this field is null if the status is not succeeded or failed
numberThe portion of the order cost in USD that the customer paid for with EBT Cash benefits.
credit_debit_paid*

*The value of this field is null if the status is not succeeded or failed
numberThe portion of the order cost in USD that the customer paid for with credit/debit card.
merchant_fns_numberstringThe FNS number of the merchant that created this order.
success_dateISO 8601 date-time stringA UTC-8 timestamp of when all OrderPayments associated with the Order are successfully processed, represented as an ISO 8601 date-time string.
createdISO 8601 date-time stringA UTC-8 timestamp of when the Order was created, represented as an ISO 8601 date-time string.
paymentsarray of stringsAn array of the unique reference hashes for any Forage OrderPayments associated with this Order.
refundsarray of stringsAn array of the unique reference hashes for any Forage OrderRefunds associated with the Order.
psp_customer_idstringThe third-party credit/debit payment processor’s unique identifier for the customer.

The value of this field is null if the Order was created via a POST to /capture_sessions/.
external_order_idstringA unique identifier for the order as created by the merchant or platform (not Forage).

When 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.
external_location_idstringA unique identifier, provided by the merchant or platform (not Forage), that indicates the physical fulfillment location for the order. For example, this field could specify which location of a grocery store chain fulfilled an order.

Example request

How to filter for successful orders

If you add the status query param and pass succeeded as the value, then the start_date and end_date params refer to the order’s success_date, rather than its created value. The status filter has no effect if any other value is applied or if excluded from the request. Check out the /reporting/orders/ reference docs for details.

curl --request GET \
     --url 'https://api.sandbox.joinforage.app/reporting/orders/?start_date=2021-01-31&end_date=2021-02-28&limit=1&status=succeeded' \
     --header 'Authorization: Bearer <authentication_token>' \
     --header 'Merchant-Account: <merchant_account>' \
     --header 'accept: application/json'

Payout Reports

/reporting/payouts/

A payout is a scheduled funds disbursement from Forage to a merchant. A payout accounts for all transactions, both purchases and refunds, during the scheduled time period.

A Payout Report includes a list of payouts that occurred during the provided time period.

The results field of the response to requests to /reporting/payouts/ returns an array of objects with the following fields:

PropertyTypeDescription
payout_idintegerA unique identifier for the payout.
merchant_namestringThe name of the merchant that received this payout.
tenant_namestringThe name of the platform that the merchant that received this payout sells through, if applicable.
merchant_fns_numberstringThe FNS number of the merchant that received this payout.
merchant_settlement_dateISO 8601 date-time stringA UTC timestamp of when this payout is scheduled for settlement to the merchant’s account, represented as an ISO 8601 date-time string.
platform_settlement_dateISO 8601 date-time stringA UTC timestamp of when this payout is scheduled for settlement to the platform’s account, represented as an ISO 8601 date-time string.
total_purchasesnumberThe total amount in USD of all of the purchases included in this payout.
total_refundsnumberThe total amount in USD of all of the refunds included in this payout.
total_chargebacksnumberThe total amount in USD of refunds paid to customers as the result of dispute resolutions during this payout period. The total_chargebacks value is distinct and not included in the total_refunds value.
feenumberThe sum of Forage fees in USD for all transactions included in this payout.
merchant_net_settlementnumberThe gross value of the merchandise involved in the payout, minus the Forage fee.

For merchants processing via a platform, this value is the gross merchandise value minus both fee and platform_net_settlement.
platform_net_settlementnumberThe gross value of the merchandise involved in the payout, minus the Forage fee and merchant_net_settlement.

This value is 0 if the merchant does not process via a platform
merchant_destination_account_refstringA unique reference hash for the bank account that received funds settlement for this payment.

The value of this field is returned as null if the argument was not passed in the request to create the Payment.
external_location_idstringA unique identifier, provided by the merchant or platform (not Forage), that indicates the physical fulfillment location for the order. For example, this field could specify which location of a grocery store chain fulfilled an order.

Example request

curl --request GET \
     --url 'https://api.sandbox.joinforage.app/reporting/payouts/?start_date=2021-01-31&end_date=2021-02-28&limit=1' \
     --header 'Authorization: Bearer <authentication_token>' \
     --header 'Merchant-Account: <merchant_account>' \
     --header 'accept: application/json'

Payout Transaction Reports

/reporting/payouts/{payout_id}/transactions/

A Payout Transaction Report includes a list of all transactions associated with the provided payout_id.

Forage defines a transaction as any financial operation that triggers a flow of funds, including both EBT purchases and EBT refunds. Credit and debit card transactions are included in the report if the transaction occurred via a Fully Hosted integration, but Forage is never involved in the settlement flow for credit/debit. That falls to the credit/debit PSP, so balance your credit/debit accounting against the PSP’s ledger.

The results field of the response to requests to /reporting/payouts/{payout_id}/transactions/ returns an array of objects with the following fields:

PropertyTypeDescription
order_refstringA unique reference hash identifier for the Forage Order associated with this transaction, if applicable.

This value is only returned for Fully Hosted and Custom integrations.
payment_refstringA unique reference hash identifier for the Forage Payment or OrderPayment associated with this transaction.
retrieval_refstringA unique, 12-digit reference hash identifier for the transaction that you can use to look up the original object on Forage’s backend.

The first two characters identify the transaction type:

- PA identifies a payment
- RE identifies a refund

The last ten characters are the Forage transaction ref.
merchant_fns_numberstringThe FNS number of the merchant that received the payout including this transaction.
transaction_typestringThe type of the transaction. One of:

- Credit_Debit_Chargeback
- Credit_Debit_Purchase
- Credit_Debit_Refund
- Credit_Debit_Void_Purchase
- Credit_Debit_Void_Refund
- EBT_Cash_Chargeback
- EBT_Cash_Purchase
- EBT_Cash_Refund
- EBT_Cash_Void_Purchase
- EBT_Cash_Void_Refund
- SNAP_Chargeback
- SNAP_Purchase
- SNAP_Refund
- SNAP_Void_Purchase
- SNAP_Void_Refund

The Credit_Debit_ transaction type is only returned if a transaction occurred via a Fully Hosted integration.
descriptionstringA description of the transaction.
recorded_dateISO 8601 date-time stringA timestamp of when the transaction successfully processed, represented as an ISO 8601 date-time string.
gross_merchandise_valuenumberThe total amount in USD charged to the customer.
feenumberThe total amount in USD that Forage charged to process this transaction.
merchant_net_settlementnumberThe gross value of the merchandise involved in the payout, minus the Forage fee.

For merchants processing via a platform, this value is the gross merchandise value minus both fee and platform_net_settlement.
platform_net_settlementnumberThe gross value of the merchandise involved in the payout less the Forage fee and merchant_net_settlement.

This value is 0 if the merchant does not process via a platform.
zipcodestringThe zip code of the delivery/pickup address for the order associated with this transaction.
state_codestringThe two-letter abbreviation for the US state of the delivery/pickup address for the order associated with this transaction.
merchant_settlement_dateISO 8601 date-time stringA UTC timestamp of when the transaction is scheduled for settlement to the merchant's account, represented as an ISO 8601 date-time string.
platform_settlement_dateISO 8601 date-time stringA UTC timestamp of when the transaction is scheduled for settlement to the platform's account, represented as an ISO 8601 date-time string.
payout_idintegerA unique identifier for the payout that this transaction is associated with.

This field is null until Forage disperses the payout.
external_order_idstringA unique identifier for the order as created by the merchant or platform (not Forage).

When 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.

New in version 2023-05-15.
merchant_destination_account_refstringA unique reference hash for the bank account that received funds settlement for this payment.

The value of this field is returned as null if the argument was not passed in the request to create the Payment.
external_location_idstringA unique identifier, provided by the merchant or platform (not Forage), that indicates the physical fulfillment location for the order. For example, this field could specify which location of a grocery store chain fulfilled an order.

Example request

curl --request GET \
     --url 'https://api.sandbox.joinforage.app/reporting/payouts/27/transactions/?start_date=2021-01-31&end_date=2021-02-28&limit=1' \
     --header 'Authorization: Bearer <authentication_token>' \
     --header 'Merchant-Account: <merchant_account>' \
     --header 'accept: application/json'

Transaction Reports

/reporting/transactions/

A Transaction Report includes a list of all transactions that Forage recorded between the provided start_date and end_date.

Forage defines a transaction as any financial operation that triggers a flow of funds, including both EBT purchases and EBT refunds. A Transaction Report is useful for reconciling your accounting books against the Forage ledger. The fee field can help finance teams reconcile the payouts received from Forage.

Credit and debit card transactions are included in the report if the transaction occurred via a Fully Hosted integration, but Forage is never involved in the settlement flow for credit/debit. That falls to the credit/debit PSP, so balance your credit/debit accounting against the PSP’s ledger.

The results field of the response to requests to /reporting/transactions/ returns an array of objects with the following fields:

PropertyTypeDescription
order_refstringA unique reference hash identifier for the Forage Order associated with this transaction, if applicable.

This value is only returned for Fully Hosted and Custom integrations.
payment_refstringA unique reference hash identifier for the Forage Payment or OrderPayment associated with this transaction.
retrieval_refstringA unique, 12-digit reference hash identifier for the transaction that you can use to look up the original object on Forage’s backend.

The first two characters identify the transaction type:

- PA identifies a payment
- RE identifies a refund

The last ten characters are the Forage transaction ref.
merchant_fns_numberstringThe FNS number of the merchant that received the payout including this transaction.
transaction_typestringThe type of the transaction. One of:

- Credit_Debit_Chargeback
- Credit_Debit_Purchase
- Credit_Debit_Refund
- Credit_Debit_Void_Purchase
- Credit_Debit_Void_Refund
- EBT_Cash_Chargeback
- EBT_Cash_Purchase
- EBT_Cash_Refund
- EBT_Cash_Void_Purchase
- EBT_Cash_Void_Refund
- SNAP_Chargeback
- SNAP_Purchase
- SNAP_Refund
- SNAP_Void_Purchase
- SNAP_Void_Refund

The Credit_Debit_ transaction type is only returned if a transaction occurred via a Fully Hosted integration.
descriptionstringA description of the transaction.
recorded_dateISO 8601 date-time stringA timestamp of when the transaction successfully processed, represented as an ISO 8601 date-time string.
gross_merchandise_valuenumberThe total amount in USD charged to the customer.
feenumberThe total amount in USD that Forage charged to process this transaction.
merchant_net_settlementnumberThe gross value of the merchandise involved in the payout, minus the Forage fee.

For merchants processing via a platform, this value is the gross merchandise value minus both fee and platform_net_settlement.
platform_net_settlementnumberThe gross value of the merchandise involved in the payout less the Forage fee and merchant_net_settlement.

This value is 0 if the merchant does not process via a platform.
zipcodestringThe zip code of the delivery/pickup address for the order associated with this transaction.
state_codestringThe two-letter abbreviation for the US state of the delivery/pickup address for the order associated with this transaction.
merchant_settlement_dateISO 8601 date-time stringA UTC timestamp of when the transaction is scheduled for settlement to the merchant's account, represented as an ISO 8601 date-time string.
platform_settlement_dateISO 8601 date-time stringA UTC timestamp of when the transaction is scheduled for settlement to the platform's account, represented as an ISO 8601 date-time string.
payout_idintegerA unique identifier for the payout that this transaction is associated with.

This field is null until Forage disperses the payout.
external_order_idstringA unique identifier for the order as created by the merchant or platform (not Forage).

When 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.

New in version 2023-05-15.
merchant_destination_account_refstringA unique reference hash for the bank account that received funds settlement for this payment.

The value of this field is returned as null if the argument was not passed in the request to create the Payment.
external_location_idstringA unique identifier, provided by the merchant or platform (not Forage), that indicates the physical fulfillment location for the order. For example, this field could specify which location of a grocery store chain fulfilled an order.

Example request

curl --request GET \
     --url 'https://api.sandbox.joinforage.app/reporting/transactions/?start_date=2021-01-31&end_date=2021-02-28&limit=1' \
     --header 'Authorization: Bearer <authentication_token>' \
     --header 'Merchant-Account: <merchant_account>' \
     --header 'accept: application/json'