Errors documentation for SDK integration-related endpoints
An SDK integration calls both Payments API endpoints and SDK methods.
This guide lists all the code
and message
pairs that are relevant to SDK integrations. It begins with a list of errors that only endpoints return, and continues with the pairs that both endpoints and SDK methods return.
Endpoint errors
A Payments API error response object includes a code and message pair that describes the failure, as in the following example:
{
"path": "/api/payments/{payment_ref}/refunds/",
"errors": [
{
"code": "cannot_refund_after_90_days",
"message": "Per federal regulations, refunds to EBT payment methods cannot be processed after 90 days. Payment <payment_ref> succeeded on <payment_success_date>",
"source": {
"resource": "Payments",
"ref": "{payment_ref}"
}
}
]
}
In addition to the errors that all endpoints can return, SDK integration-related endpoints can return a set of specific code
and message
pairs. These are all listed below, in addition to their corresponding troubleshooting steps.
Refer to the general Errors reference for more about the shape of Forage errors, a list of error
codes
that all endpoints can return, andcodes
returned by the endpoints common to all integration types.
amount_mismatch
amount_mismatch
Payment amount needs to equal to products amount. Payment amount: {payment_amount}, products amount: {products_amount}.
Prompt the cardholder to update the {payment_amount} to match the {products_amount}.
Any failed
Payment
can be retried.If a transaction fails, then attempt to process the original
Payment
object again before creating a new one, updating it first if you need to.You only need to create a new
Payment
if the old one iscanceled
.
cannot_capture_payment
cannot_capture_payment
One of several possible messages might accompany this code.
Payment with ref {payment_ref} is either processing, succeeded, or canceled and therefore cannot be captured.
or
Amount value is null. Payment with ref {payment.ref} with funding_type {payment.funding_type} cannot be captured with a null amount value
or
'is_delivery' value is null. Payment with ref {payment.ref} requires a valid 'is_delivery' value for capture.
Depending on the message, confirm that the payment.status
, payment.funding_type
, or payment.is_delivery
value is correct before capturing the payment, and/or double check that there isn't a typo in the provided payment_ref
. If all else fails, create a new Payment
for the cardholder and prompt them to retry.
cannot_refund_after_90_days
cannot_refund_after_90_days
Per federal regulations, refunds to EBT payment methods cannot be processed after 90 days. Payment {payment_ref} succeeded on {payment_success_date}
If this error occurs in development, then confirm that the payment_ref
in the request is accurate. If this error occurs during production, then alert the customer or merchant clerk in the front-end user interface that the refund date has passed.
cannot_refund_payment
cannot_refund_payment
One of several messages might accompany this code.
Only Payments in the succeeded state can be refunded, but Payment with ref {payment_ref} is in the state {payment_state}
or
Only Payments with a non-null amount can be refunded, but Payment with ref {} has no amount provided.
or
Refund for payment ref {} misses a pin. Please use the SDK to collect pin first.
If this error occurs in development, then confirm that the payment_ref
in the request is accurate. If this error occurs during production, then alert the customer or merchant clerk in the front-end user interface that the refund date has passed.
cannot_void
cannot_void
Payment with ref {payment_ref} cannot be voided because it is in the {payment_state} state. Only payments in the succeeded state can be voided
Confirm that the payment_ref
and/or refund_ref
in the request is accurate and that its status
value is succeeded
.
card_not_reusable
card_not_reusable
Payment method {payment_method_ref} is not reusable
Prompt the cardholder to try the transaction again with a reusable payment method.
different_ebt_card
different_ebt_card
SNAP payment method ref {payment_method_ref} is different from EBT Cash payment method ref {payment_method_ref}. You must use the same EBT payment_method for all EBT Payments on an Order
Prompt the cardholder to reenter their EBT Card details.
ebt_cash_not_supported
ebt_cash_not_supported
Ebt cash payment cannot be captured in {US State}
Prompt the cardholder to update their payment method and try again.
Endpoint and SDK method errors
The following code and message pairs can be returned by both SDK integration-related endpoints and SDK methods.
ebt_error_*
codes
ebt_error_*
codesIn the case of an
ebt_error_*
code , the response always includes the original resource, in addition to theerrors
field.
For example, an ebt_error_43
returned in the case of a lost or stolen card takes the following shape:
{
"ref": "55ca7f3c35",
"merchant": "9000034",
"funding_type": "ebt_snap",
"amount": "1.00",
"description": "Testing app payments (SNAP Purchase)",
"metadata": {},
"payment_method": "6sc7bcd229",
"delivery_address": null,
"is_delivery": false,
"created": "2024-05-07T11:04:58.967491-07:00",
"updated": "2024-05-07T11:05:15.432620-07:00",
"status": "failed",
"last_processing_error": null,
"success_date": null,
"receipt": {
"ref_number": "55ca7f3c35",
"is_voided": false,
"snap_amount": "1.00",
"ebt_cash_amount": "0.00",
"cash_back_amount": "0.00",
"other_amount": "0.00",
"sales_tax_applied": "0.00",
"balance": null,
"last_4": "4443",
"message": "Lost/stolen card - Cannot Process - Call Customer Service",
"transaction_type": "Payment",
"created": "2024-05-07T11:05:15.427552-07:00",
"sequence_number": "PA022ba7"
},
"expires_at": "2024-05-07T18:35:15.432620Z",
"pos_terminal": {
"terminal_id": "0783f5a4",
"provider_terminal_id": "Android Emulator"
},
"sequence_number": "PA022ba7",
"external_location_id": null,
"merchant_destination_account": null,
"errors": [
{
"code": "ebt_error_43",
"message": "Lost/stolen card - Cannot Process - Call Customer Service",
"source": {
"resource": "Payments",
"ref": "55ca7f3c35"
}
}
],
"previous_errors": [
{
"code": "ebt_error_43",
"message": "Lost/stolen card - Cannot Process - Call Customer Service",
"source": {
"resource": "Payments",
"ref": "55ca7f3c35"
}
}
],
"refunds": []
}
The Payment
details precede the errors
details.
ebt_error_02
ebt_error_02
Bad FNS status for merchant - Cannot Process - Call Customer Service
There’s an issue between the merchant and FNS. Double check that the FNS number in the Merchant-Account
header is accurate. If there’s no typo, then reach out to FNS or to your Forage account manager for help.
ebt_error_03
ebt_error_03
Invalid merchant - Cannot Process - Call Customer Service
The merchant’s FNS number is not valid. Double check that the FNS number in the Merchant-Account
header is accurate. If there’s no typo, then reach out to FNS or your Forage account manager for help.
ebt_error_05
ebt_error_05
General denial - Cannot Process - Call Customer Service
The EBT network can’t complete the transaction.
ebt_error_06
ebt_error_06
Invalid transaction - Invalid Transaction
The EBT network can’t complete the transaction.
ebt_error_10
ebt_error_10
Partial approval - Approved
in-store only
The EBT network went down during an in-store transaction, but the brick-and-mortar merchant treated the transaction as a success, following the “store and forward” protocol. The EBT network came back online and the merchant attempted to process the transaction, but the EBT Card has insufficient funds. The merchant collects the entire available balance, and the network returns an ebt_error_10
. Per FNS regulations, in this rare case the merchant absorbs any outstanding balance as a loss.
ebt_error_12
ebt_error_12
Invalid transaction type - Transaction Not Defined
The EBT network can’t complete the transaction.
ebt_error_13
ebt_error_13
Inactive Card - Call number on EBT Card
There’s an issue with the EBT Card number.
ebt_error_14
ebt_error_14
Invalid card number - Re-enter Transaction
There’s an issue with the EBT Card number.
ebt_error_19
ebt_error_19
Invalid Card Number - Please re-enter
There’s an issue with the EBT Card number.
ebt_error_23
ebt_error_23
Unacceptable transaction fee - Cannot Process - Call Customer Service
The EBT network can’t complete the transaction, possibly because of merchant errors.
ebt_error_30
ebt_error_30
Format error - Cannot Process - Call Customer Service
The EBT network can’t complete the transaction, likely because of a typo.
ebt_error_31
ebt_error_31
Card has invalid ISO prefix - Cannot Process - Call Customer Service
Forage and the EBT network are having trouble communicating. This error is extremely rare.
ebt_error_40
ebt_error_40
Function not available - Function Unavailable
The EBT network can’t complete the transaction.
ebt_error_41
ebt_error_41
Lost Card - Cannot Process - Call Customer Service
The EBT network associates the card number with a lost card.
ebt_error_42
ebt_error_42
No account - Cannot Process - Call Customer Service
There’s an issue with the EBT Card number.
ebt_error_43
ebt_error_43
Lost/stolen card - Cannot Process - Call Customer Service
The EBT network reports that the EBT Card number belongs to a lost or stolen card.
ebt_error_51
ebt_error_51
Insufficient funds - Insufficient Funds. Remaining balances are SNAP: {number}, EBT Cash: {number}
The EBT and/or SNAP charges exceed the customer’s available EBT Card balance. Update the transaction amounts to match the available balance. For more details, check out the Forage insufficient funds guide.
The complete error object takes the following shape:
{
"ref": "414d656d28",
"merchant": "9000034",
"funding_type": "ebt_snap",
"amount": "1.00",
"description": "Testing POS certification app payments (SNAP Purchase)",
"metadata": {},
"payment_method": "5d96ef34ac",
"delivery_address": null,
"is_delivery": false,
"created": "2024-05-07T09:02:39.151663-07:00",
"updated": "2024-05-07T09:03:02.312241-07:00",
"status": "failed",
"last_processing_error": null,
"success_date": null,
"receipt": {
"ref_number": "414d656d28",
"is_voided": false,
"snap_amount": "1.00",
"ebt_cash_amount": "0.00",
"cash_back_amount": "0.00",
"other_amount": "0.00",
"sales_tax_applied": "0.00",
"balance": {
"id": 231529,
"snap": "1000.00",
"non_snap": "1000.00",
"updated": "2024-05-07T09:03:02.281341-07:00"
},
"last_4": "4451",
"message": "Insufficient funds - Insufficient Funds. Remaining balances are SNAP: $1000.00, EBT Cash: $1000.00",
"transaction_type": "Payment",
"created": "2024-05-07T09:03:02.303324-07:00",
"sequence_number": "PA022b56"
},
"expires_at": "2024-05-07T16:33:02.312241Z",
"pos_terminal": {
"terminal_id": "0783f5a4",
"provider_terminal_id": "Android Emulator"
},
"sequence_number": "PA022b56",
"external_location_id": null,
"merchant_destination_account": null,
"errors": [
{
"code": "ebt_error_51",
"message": "Insufficient funds - Insufficient Funds. Remaining balances are SNAP: $1000.00, EBT Cash: $1000.00",
"source": {
"resource": "Payments",
"ref": "414d656d28"
},
"details": {
"cash_balance": "1000.00",
"snap_balance": "1000.00"
}
}
],
"previous_errors": [
{
"code": "ebt_error_51",
"message": "Insufficient funds - Insufficient Funds. Remaining balances are SNAP: $1000.00, EBT Cash: $1000.00",
"source": {
"resource": "Payments",
"ref": "414d656d28"
},
"details": {
"cash_balance": "1000.00",
"snap_balance": "1000.00"
}
}
],
"refunds": []
}
ebt_error_52
ebt_error_52
Inactive Card - Call number on EBT Card
There’s an issue with the EBT Card number.
ebt_error_54
ebt_error_54
Expired card - Expired Card
The EBT network associates the customer’s EBT Card number with an expired card.
ebt_error_55
ebt_error_55
Invalid PIN or PIN not selected - Invalid PIN
The EBT PIN that the customer entered is incorrect.
ebt_error_56
ebt_error_56
Card number not found - Cannot Process - Call Customer Service
The EBT network doesn’t recognize the customer’s EBT Card number.
ebt_error_57
ebt_error_57
Inactive Card - Call number on EBT Card
There’s an issue with the EBT Card number.
ebt_error_58
ebt_error_58
Invalid transaction - Invalid Transaction
The EBT network can’t complete the transaction.
ebt_error_59
ebt_error_59
Fraud (return card) - Cannot Process - Call Customer Service
The EBT network associates the customer’s EBT Card number with unusual activity.
ebt_error_61
ebt_error_61
Return exceeds benefit authorization - Invalid Transaction
The requested return amount exceeds the issuer’s limit for the customer.
ebt_error_62
ebt_error_62
Restricted card - Cannot Process - Call Customer Service
The EBT network reports an issue with the EBT Card.
ebt_error_75
ebt_error_75
PIN tries exceeded - PIN Tries Exceeded
The customer entered an incorrect PIN four times, so the EBT network canceled the transaction and locked the account for 24 hours.
ebt_error_76
ebt_error_76
Key synchronization error - Cannot Process - Call Customer Service
Forage and FNS are having trouble communicating.
ebt_error_80
ebt_error_80
Voucher expired - Cannot Process - Call Customer Service
in-store only
A voucher is used to manually process SNAP purchases or refunds in the absence of a POS, or if the POS isn’t working. In this error scenario, the EBT network reports that the voucher is expired.
ebt_error_90
ebt_error_90
Processor not logged on - Host Not Available
The EBT network is currently offline.
ebt_error_91
ebt_error_91
Authorizer not available (time-out) - Host Not Available
The EBT network is currently offline.
ebt_error_92
ebt_error_92
Invalid Card Number - Please re-enter
There’s an issue with the EBT Card number.
ebt_error_96
ebt_error_96
System malfunction - Cannot Process - Call Customer Service
The EBT network can’t complete the transaction.
ebt_error_A1
ebt_error_A1
Invalid Voucher ID - Invalid Transaction
in-store only
A voucher is used to manually process SNAP purchases or refunds in the absence of a POS, or if the POS isn’t working. In this error scenario, the EBT network reports that the voucher ID is incorrect.
ebt_error_A2
ebt_error_A2
Invalid authorization number (approval code does not match voice approval code) - Invalid Transaction
in-store only
A voucher is used to manually process SNAP purchases or refunds in the absence of a POS, or if the POS isn’t working. In this error scenario, the EBT network reports an issue with the voucher authorization number.
ebt_error_A3
ebt_error_A3
Amount greater than original voice authorization - Invalid Transaction
in-store only
A voucher is used to manually process SNAP purchases or refunds in the absence of a POS, or if the POS isn’t working. In this error scenario, the EBT network reports an issue with the authorized transaction amount.
ebt_error_A4
ebt_error_A4
Original voice authorization not found for cardholder - Invalid Transaction
in-store only
A voucher is used to manually process SNAP purchases or refunds in the absence of a POS, or if the POS isn’t working. In this error scenario, the EBT network reports an issue authenticating the cardholder identity.
ebt_error_A5
ebt_error_A5
FNS number does not match original voice authorization - Invalid Transaction
in-store only
A voucher is used to manually process SNAP purchases or refunds in the absence of a POS, or if the POS isn’t working. In this error scenario, the EBT network reports an issue authenticating the merchant FNS number.
ebt_error_A6
ebt_error_A6
Item already cleared - Invalid Transaction
in-store only
A voucher is used to manually process SNAP purchases or refunds in the absence of a POS, or if the POS isn’t working. In this error scenario, the EBT network fails to process a voucher.
ebt_error_FF
ebt_error_FF
Invalid HIP Amount - Re-enter Transaction
The Healthy Incentives Program (HIP) benefits amount that the customer entered is not authorized.
ebt_error_S5
ebt_error_S5
Inactive Card - Call number on back of EBT Card to activate
There’s an issue with the EBT Card number.
ebt_error_S6
ebt_error_S6
PIN already selected - PIN Already Selected
There’s an issue processing this EBT Card number.
ebt_error_S7
ebt_error_S7
Unmatched voucher information - Unmatched Voucher Information
in-store only
A voucher is used to manually process SNAP purchases or refunds in the absence of a POS, or if the POS isn’t working. In this error scenario, the EBT network reports something wrong with the voucher input.
ebt_processor_timeout
ebt_processor_timeout
Unable to contact EBT processor, please try again shortly.
Prompt the cardholder to try the transaction again in a few minutes.
expired_session_token
expired_session_token
deferPaymentCapture returns this error.
This token has expired
Send a POST to /session_token/
to generate a new session token.
Refer to request limits documentation for details.
fixed_settlement_not_applicable
fixed_settlement_not_applicable
The merchant_fixed_settlement and platform_fixed_settlement fields are only applicable to EBT Cash Payments.
Remove the merchant_fixed_settlement
and platform_fixed_settlement
fields from the request, or update the funding_type
of the Payment
.
inconsistent_funding_and_payment_method
inconsistent_funding_and_payment_method
Payment was posted with a funding_type of {funding_type}, but the payment_method is {other_funding_type} card.
Update the funding_type
of the Payment
, or use a different payment_method
.
Payment with ref {payment_ref} has already been submitted for capture and therefore cannot be canceled. To reverse this payment, please use a normal refund.
Confirm that the payment_ref
passed in the request is correct, or call the Create a Payment Refund endpoint to refund the payment.
payment_already_captured
payment_already_captured
Payment with ref {payment_ref} has already been submitted for capture and therefore cannot be canceled. To reverse this payment, please use a normal refund.
Confirm that the payment_ref
passed in the request is correct, or call the Create a Payment Refund endpoint to refund the payment.
pin_caching_error
pin_caching_error
Unable to cache encrypted PIN value
Use the corresponding SDK method to collect a cardholder’s PIN, and then try the transaction again.
pin_retrieval_error
pin_retrieval_error
One of several possible messages might accompany this code.
Unable to retrieve encrypted PIN value
or
Unable to find encrypted PIN for key value
or
Refund for payment ref {payment_ref} requires a pin which is missing
Use the corresponding SDK method to collect a cardholder’s PIN, and then try the transaction again.
processor_timeout
processor_timeout
External processor timed out
Forage was unable to receive a response from the EBT network. Retry the request. If you keep receiving the error, then increase the amount of time that you wait between retries exponentially.
refund_exceeds_order_total
refund_exceeds_order_total
One of several possible messages might accompany this code.
Requested refund would push the total amount refunded above the original Payment amount. Total amount paid is {amount_paid}. Existing total of refunds is {refund_amount}
or
Requested refund would push the total amount settled to the Merchant above the original Payment amount. Total fixed amount allocated to the Merchant is {}. Existing total of refunds is {}
or
Requested refund would push the total amount settled to the Platform above the original Payment amount. Total fixed amount allocated to the Platform is {}. Existing total of refunds is {}
or
Must allocate funds to merchant_fixed_settlement and platform_fixed_settlement correctly. Merchant funds to be allocated: {merchant_fixed_amount_still_available_for_refund}, Platform funds to be allocated: {platform_fixed_amount_still_available_for_refund}
or
Refund must be greater than zero!
Confirm that the requested refund amount is less than or equal to the original payment amount (or is not equal to zero) and try the refund again.
resource_not_found
resource_not_found
deferPaymentCapture returns this error.
{Resource type} with ref {ref} does not exist for current Merchant with FNS {fns_number}
Confirm that the ref
is correct, and/or double check the merchant’s FNS number.
settlement_greater_than_amount
settlement_greater_than_amount
{merchant_fixed_settlement} + {platform_fixed_settlement} must be equal to or less than the amount charged. Fixed settlement charged of {amount} is greater than amount of {amount}
Update the fixed settlement charges to be less than or equal to the amount charged.
too_many_requests
too_many_requests
deferPaymentCapture returns this error.
Request was throttled, please try again later.
Refer to request limits documentation for details.
unknown_server_error
unknown_server_error
Unknown exception from EBT network
This is a problem on Forage’s end. Please try the request again.
user_error
user_error
deferPaymentCapture returns this error.
A customer submitted incorrect or incomplete information.
Prompt the customer to submit again. For example, in the case that they entered an incomplete pin, you could display a message like, “Invalid EBT Card PIN entered. Please enter your 4-digit PIN.”