A POST
request to /payment_methods/
creates a new representation of a customer’s payment instrument in Forage’s database.
On success, the API responds with a Forage PaymentMethod
object. You need to retrieve and store the ref
value for future requests. For example:
- To get the outcome of a balance inquiry, you need to pass the
ref
as the path param in a request to Retrieve aPaymentMethod
. - To Create a
Payment
, you need to pass theref
as thepayment_method
request body param.
When to use the Merchant-Account
Header
Merchant-Account
HeaderThe Merchant-Account
Header requirements vary by payment method type:
- For EBT payment methods: The
Merchant-Account
header is optional - For HSA/FSA payment methods: The
Merchant-Account
header is required - For credit/debit payment methods: The
Merchant-Account
header is required
The Merchant-Account
header is required for all payment methods except EBT due to technical requirements for routing and payout processing.
EBT PaymentMethods are tenant-scoped. An EBT PaymentMethod
created under one merchant account can be used by other merchant accounts within the same tenant. The Merchant-Account
header does not restrict EBT PaymentMethod
usability across merchant accounts within the same tenant.
When Merchant-Account
is passed, the created PaymentMethod
is associated with that specific merchant account for routing and reporting purposes. For EBT payment methods, the PaymentMethod
remains usable across all merchant accounts within the same tenant.
SDK Behavior
Forage JS automatically includes the
Merchant-Account
header from initialization when creatingPaymentMethod
s. There is currently no option to omit this header duringPaymentMethod
creation.
Use
customer_id
When Creating PaymentMethodsPass
customer_id
in the request to Create aPaymentMethod
.customer_id
helps Forage's servers more quickly identify and associate the correct customer with thePaymentMethod
. Whilecustomer_id
is not technically a required parameter, if you omit it then the request to create thePaymentMethod
could take longer to process. It is strongly recommended to passcustomer_id
.Each customer should only have one unique
customer_id
. For example, if you create both aPaymentMethod
and aPayment
for the same customer, then thecustomer_id
should be the same in both requests to ensure continuity of stored payment methods.
See these guides for more information: