FNS requirements for balance inquiries
FNS prohibits balance inquiries on sites that offer guest checkout. Skip implementing this EBT Element flow if your site offers a guest checkout option.
If your site doesn't offer guest checkout, then it's up to you whether or not to add a balance inquiry feature. No FNS regulations apply.
Create a ForagePinElement
ForagePinElement
forage.create('collect_pin')
forage.create('collect_pin')
This Forage method displays an input field that collects a customer’s four-digit EBT Card PIN in order to check the account balance. Forage does not store the PIN.
Returns a ForagePinElement
that is passed to the submit method to create the balance check.
Parameters
Parameter | Type | Description |
---|---|---|
collect_pin required | string | The constant string collect_pin . |
elementOptions | object | A set of optional configuration settings for the ForagePinElement . Refer to elementOptions . |
elementOptions
elementOptions
Field | Type | Description |
---|---|---|
style | object | An object that sets certain CSS properties for the ForagePinElement. Current supported key-value pairs include: - borderColor : A string that indicates the border color- borderWidth : A string that specifies the border width |
Example
const balanceElement = forage.create('collect_pin')
After creating the
EBT Element
, call themount()
method to attach it to the DOM. Refer to theEBT Element
lifecycle for more details.
Submit a ForagePinElement
ForagePinElement
forage.checkBalance(ForagePinElement, paymentMethodRef)
forage.checkBalance(ForagePinElement, paymentMethodRef)
This Forage method executes a balance check when passed the below parameters:
Parameters
Type | Description | |
---|---|---|
ForagePinElement required | object | The object created in response to calling the method that creates a balance check element. |
paymentMethodRef required | string | A string identifier that refers to an instance in Forage's database of a PaymentMethod, which is a tokenized representation of an EBT Card. |
Example
try {
const balanceResult = await forage.checkBalance(
balanceElement,
paymentMethodRef
)
const { ebt, updated } = balanceResult
const { snap, cash } = ebt ?? {}
} catch (error) {
const { httpStatusCode, message, code } = error ?? {}
}
forage.checkBalance(ForagePinElement, paymentMethodRef)
returns a Promise
.
Success response
On success, the Promise
resolves with an object, as in the following:
{
ebt: {
snap: '100.00',
cash: '100.00',
},
updated: '2021-06-16T00:11:50.000000Z-07:00'
}
Object fields
Type | Description | |
---|---|---|
ebt[snap] | string | The available SNAP balance on the customer’s EBT Card, represented as a numeric string. |
ebt[cash] | string | The available EBT Cash balance left on the EBT Card, represented as a numeric string. |
updated | ISO 8601 date-time string | The date-time when the funds in the account last changed |
Failure response
If the EBT balance check fails, then the Promise
rejects with a ForageError
object that describes the failure, as in the following example:
{
httpStatusCode: 400,
code: 'ebt_error_14',
message: 'Invalid card number - Re-enter Transaction'
}
You can catch and handle specific errors with switch statements in the function call, as in the below snippet:
try {
const paymentCaptureResult = await forage.checkBalance(
balanceElement,
paymentMethodRef
)
// handle successful checkBalanceResult
} catch (error) {
const { code, details, httpStatusCode, message } = error ?? {}
switch (code) {
case 'ebt_error_14':
// handle invalid card number!
break
case 'ebt_error_55':
// entered the wrong PIN!
break
default:
// handle unexpected errors
}
}
Enable a "Submit" button for customer input
Find an example submit function in the Forage JS quickstart, and listen for the "change" event’s complete value to enable the button as in this snippet.
⚠️ Allow customers to progress on their own. Do not use
complete
to automatically perform an action like submitting the form or advancing the cursor to the next input field.