Boarding API (v1.0.5)
Download OpenAPI specification:Download
Welcome to the Boarding API documentation!
Here you will find our collection of endpoints for boarding an managing accounts.
This is the reference documentation and schemas for the Boarding API.
The platform uses API Keys to manage access to the API. You can pass the API key in the x-api-key header to the request.
Talk you your sales rep about acquiring these API keys.
Authorization is done via headers. You should pass the api key as the value to the x-api-key header. For example, x-api-key: ${API_KEY}.
Please note that you will be given 2 API keys, one public key and one private key. Use the private key for all server to server communication. The public key is used for interfacing wih the JS SDK.
A Forward Account is created when you have an Application that has gone through the boarding process to get to an approved state. You can fetch a particular Account, find all the Accounts that you are associated with, and update account name and user_fields. Note:
- Each Account is required to have a Company as well as an Address.
- You can only view and patch Accounts if you have the correct level of access.
This is an object that represents a Forward Application. This is how you get started on Forward to initiate the process of having an Account. You can Create a Draft Application or Update the Draft Application. Additionally, you can also generate an Application Link to update or submit a new Boarding application. All the Applications that were created by you can also be retrieved.
Fetch a boarding Application by id
Retrieve complete details about a specific boarding application by its unique identifier. This endpoint returns all application information including status, business details, company information, and configuration. Use this to review application details at any stage of the onboarding process, from draft to approved status. The response includes requires_bank_account_file_ids_on_submit: when true, your submit request must include file_ids with uploaded bank-validation documents.
Authorizations:
path Parameters
| id required | string |
Responses
Update an existing draft boarding Application
Update an existing draft boarding application to modify or complete application details. Important: This endpoint can only be used to update applications that are in DRAFT status. Once an application has been submitted and moved to other statuses (such as UNDER_REVIEW, APPROVED, etc.), it cannot be updated through this route. Use this to save your progress, correct information, or add missing details before submitting the application. You may include external_account_id to set or update your partner identifier for the account. When updating user_fields, the value must conform to the Partner's user_fields_schema if validation is enabled.
Authorizations:
path Parameters
| id required | string |
Request Body schema: application/json
| business_id required | string The Business ID |
| name required | string [ 0 .. 100 ] characters Account Name |
| sales_code_id | string [ 0 .. 50 ] characters Sales Code ID |
object (AccountCompanyRequestDto) Company Information - Supports both US (EIN) and Canadian (BN) applications | |
object (AddressRequestDto) Address Info | |
object (ApplicationIndustryVolumeExtDto) Partner-facing industry and volume. Use bank_volume for expected annual bank-rail processing volume; it is mapped to ACH annual fields on persist. | |
object (ServicesDeliveriesRequestDto) Service Delivery Information | |
object (TransactionModesRequestDto) Service Delivery Information | |
Array of objects (OwnerUpdateRequestDto) Owners Information | |
| processing_plan_id | string Processing Plan id |
| terms_accepted | boolean Terms and Conditions are accepted or not |
object (PartnerDataDto) Partner Data Information | |
| country | string [ 0 .. 10 ] characters ^(US|CA)$ Default: "US" Country code - US or CA |
| external_account_id | string [ 0 .. 255 ] characters Partner's external identifier for the account (e.g. partner system account ID) |
object User-defined fields as free-form JSON object |
Responses
Request samples
- Payload
{- "business_id": "string",
- "name": "string",
- "sales_code_id": "string",
- "company": {
- "ownership_type": "GOVERNMENT",
- "category": "RETAIL",
- "ein": "string",
- "legal_name": "string",
- "dba_name": "string",
- "description": "string",
- "business_start_date": "2019-08-24",
- "website": "string",
- "timezone": "EST",
- "phone_number": "8005550100",
- "mcc": "7021",
- "stock_symbol": "string"
}, - "business_address": {
- "country": "US",
- "state": "AL",
- "city": "string",
- "zip_code": "35242",
- "address_line1": "string",
- "address_line2": "string"
}, - "industry_volume": {
- "bank_volume": 999999999,
- "avg_ticket_amount": 99999,
- "high_ticket_amount": 0,
- "avg_ach_ticket_amount": 0,
- "ach_high_ticket_amount": 0,
- "avg_bank_ticket_amount": 0,
- "bank_high_ticket_amount": 0
}, - "services_deliveries": {
- "same_day_delivery": 0,
- "one_week_delivery": 0,
- "two_week_delivery": 0,
- "one_month_delivery": 0,
- "more_than_one_month_delivery": 0
}, - "transaction_modes": {
- "in_person": 0,
- "online": 0
}, - "owners": [
- {
- "id": "string",
- "first_name": "string",
- "last_name": "string",
- "email": "string",
- "phone_number": "string",
- "title": "OWNER",
- "ownership_percent": 0,
- "ssn": "string",
- "birth_date": "2019-08-24",
- "residence_address": {
- "country": "US",
- "state": "AL",
- "city": "string",
- "zip_code": "35242",
- "address_line1": "string",
- "address_line2": "string"
}, - "signer": true
}
], - "processing_plan_id": "string",
- "terms_accepted": true,
- "partner_data": {
- "paid_subscription": true,
- "merchant_joined": "2019-08-24T14:15:22Z",
- "backbook": true,
- "last_ip_address": "string",
- "sub_payor_name": "string",
- "request_credit_override": true,
- "prior_annual_volume": 999999999,
- "prior_avg_ticket": 999999999,
- "prior_high_ticket": 999999999,
- "six_mos_chargeback_rate": 0,
- "six_mos_refund_rate": 0,
- "redirect_url": "string"
}, - "country": "US",
- "external_account_id": "string",
- "user_fields": {
- "property1": { },
- "property2": { }
}
}Deleting an existing Application in DRAFT or CANCELLED state
Permanently delete a boarding application that is in DRAFT or CANCELLED status. Important: This operation can only be performed on applications in DRAFT or CANCELLED states. Applications in other statuses (such as UNDER_REVIEW, APPROVED, DECLINED, etc.) cannot be deleted. Once an application is deleted, it will be permanently removed and will no longer appear in application lists or be accessible through the API. Use this to clean up draft applications that are no longer needed or to remove cancelled applications from your records.
Authorizations:
path Parameters
| id required | string |
Responses
Submit a boarding Application
Submit a draft boarding application to move it to underwriting. The application must be in DRAFT status.
Access: Submit via API is an entitlement and is not available to every integration. Contact support if you want to learn more about eligibility or enabling this capability.
You can change most details about the application during the submit. Include the full application payload with any updates. Most fields from the draft can be modified in this request. Note: processing_plan_data cannot be changed on submit; the value from the draft is always used.
Make sure to select the signer. Exactly one owner in the owners array must have signer set to true. This is the person who will sign the agreement and become the primary business user.
Required fields for submit:
terms_accepted— must betrue.attest_verified— must betrue(your attestation that the data is accurate).terms_version— must matchGET /applications/{id}/terms.file_ids— required whenGET /applications/{id}returnsrequires_bank_account_file_ids_on_submittrue; use file IDs from this application's uploads.
Optional bank_account (US only): You may include US bank details for the business (routing_number, account_number, account_name, account_sub_type checking or savings). Not available when country is CA.
Typical workflow:
GET /applications/{id}/termsfor terms_version;GET /applications/{id}for requires_bank_account_file_ids_on_submit and other fields.- Set
terms_acceptedandattest_verifiedto true; setterms_version. - If required, upload documents (initiate/complete file upload) and pass
file_idson submit. - Set one owner's
signerto true. - Submit the full application payload.
See create_application for ownership types, owner titles, and country-specific validations.
Authorizations:
path Parameters
| id required | string |
Request Body schema: application/json
| business_id required | string The Business ID under which the account will be created. Choose carefully: business users can manage accounts under the given Business, and this selection affects your workflows. Must match the application's business. |
| name required | string [ 0 .. 100 ] characters Account name. Display name for the merchant account. Max 100 characters. |
| sales_code_id | string [ 0 .. 50 ] characters Optional. Sales code identifier. |
required | object (AccountCompanyRequestDto) Company Information - Supports both US (EIN) and Canadian (BN) applications |
required | object (AddressRequestDto) Address Info |
required | object (ApplicationIndustryVolumeExtDto) Partner-facing industry and volume. Use bank_volume for expected annual bank-rail processing volume; it is mapped to ACH annual fields on persist. |
required | object (ServicesDeliveriesRequestDto) Service Delivery Information |
required | object (TransactionModesRequestDto) Service Delivery Information |
required | Array of objects (OwnerUpdateRequestDto) [ 1 .. 2147483647 ] items At least one owner. Exactly one must have signer: true. Include id for existing owners. |
| processing_plan_id required | string Processing plan ID. Must be set before submit. |
| terms_accepted | boolean Required: must be true to submit. Confirms that you have read and agreed to our terms. You can read the terms by doing a GET on the application (termsAndConditions and termsAndConditionsAddendum are returned in the response). |
object (PartnerDataDto) Partner Data Information | |
| country | string [ 0 .. 10 ] characters ^(US|CA)$ Country: US or CA. Determines validation rules. Default US. |
| external_account_id | string [ 0 .. 255 ] characters Optional. Your external identifier for the account. |
object Optional. Your custom key-value data. Conforms to your user_fields_schema when enabled for your configuration. | |
| terms_version | string Required when partner submit_apps_via_api_enabled is true: must match GET /applications/{id}/terms response terms_version. |
| attest_verified | boolean Must be true to submit. You attest that the submitted application and bank details (if any) are accurate. |
object (ApplicationSubmitBankAccountDto) Optional US bank account for the business on submit. Only supported when submit country is US. | |
| file_ids | Array of strings When GET application returns requires_bank_account_file_ids_on_submit true, send one or more file IDs from uploads attached to this application. Omit or empty when that flag is false. |
Responses
Request samples
- Payload
{- "business_id": "string",
- "name": "string",
- "sales_code_id": "string",
- "company": {
- "ownership_type": "GOVERNMENT",
- "category": "RETAIL",
- "ein": "string",
- "legal_name": "string",
- "dba_name": "string",
- "description": "string",
- "business_start_date": "2019-08-24",
- "website": "string",
- "timezone": "EST",
- "phone_number": "8005550100",
- "mcc": "7021",
- "stock_symbol": "string"
}, - "address": {
- "country": "US",
- "state": "AL",
- "city": "string",
- "zip_code": "35242",
- "address_line1": "string",
- "address_line2": "string"
}, - "industry_volume": {
- "bank_volume": 999999999,
- "avg_ticket_amount": 99999,
- "high_ticket_amount": 0,
- "avg_ach_ticket_amount": 0,
- "ach_high_ticket_amount": 0,
- "avg_bank_ticket_amount": 0,
- "bank_high_ticket_amount": 0
}, - "services_deliveries": {
- "same_day_delivery": 0,
- "one_week_delivery": 0,
- "two_week_delivery": 0,
- "one_month_delivery": 0,
- "more_than_one_month_delivery": 0
}, - "transaction_modes": {
- "in_person": 0,
- "online": 0
}, - "owners": [
- {
- "id": "string",
- "first_name": "string",
- "last_name": "string",
- "email": "string",
- "phone_number": "string",
- "title": "OWNER",
- "ownership_percent": 0,
- "ssn": "string",
- "birth_date": "2019-08-24",
- "residence_address": {
- "country": "US",
- "state": "AL",
- "city": "string",
- "zip_code": "35242",
- "address_line1": "string",
- "address_line2": "string"
}, - "signer": true
}
], - "processing_plan_id": "string",
- "terms_accepted": true,
- "partner_data": {
- "paid_subscription": true,
- "merchant_joined": "2019-08-24T14:15:22Z",
- "backbook": true,
- "last_ip_address": "string",
- "sub_payor_name": "string",
- "request_credit_override": true,
- "prior_annual_volume": 999999999,
- "prior_avg_ticket": 999999999,
- "prior_high_ticket": 999999999,
- "six_mos_chargeback_rate": 0,
- "six_mos_refund_rate": 0,
- "redirect_url": "string"
}, - "country": "string",
- "external_account_id": "string",
- "user_fields": {
- "property1": { },
- "property2": { }
}, - "terms_version": "string",
- "attest_verified": true,
- "bank_account": {
- "account_name": "string",
- "account_number": "string",
- "routing_number": "string",
- "account_sub_type": "checking"
}, - "file_ids": [
- "string"
]
}List boarding Applications
Retrieve a paginated list of all boarding applications associated with your account. Use the request parameters to filter results by status, business ID, or creation timestamps. Each item includes requires_bank_account_file_ids_on_submit when you need to attach file_ids on submit.
Authorizations:
query Parameters
required | object (ApplicationFilterRequestDto) Application Filter Request |
Responses
Create a boarding Application
Create a new draft boarding application to initiate the onboarding process on Forward. This endpoint creates an application in DRAFT status, which allows you to save your progress and complete the application over time. Note: Most fields in the request are optional - you can create a minimal draft and add details later, or provide complete information upfront.
Important: Once the application is submitted (via application link), it will be processed and go through our approval workflow. Note: Webhooks are available to receive real-time notifications about application status changes, eliminating the need for polling.
Country: The country field (or address.country) determines US vs Canadian (CA) application behavior. Set country to US or CA accordingly; ownership types and validations depend on the selected country. For payments terminology, US uses ACH and Canada uses EFT.
External Account ID: Optional external_account_id lets you store your own identifier for the account (e.g. partner system account ID). It is persisted with the application and copied to the Account when the application is approved; partners can also update it later via the Account API.
User Fields and Schema: Optional user_fields stores partner-defined key-value data. When the Partner has validate_user_fields_schema enabled, user_fields must conform to the Partner's user_fields_schema (JSON schema).
Company Ownership Types and Owner Titles (US): The following mapping shows valid owner titles for each company ownership type. Note: Owner title is optional where indicated (most clients pass null). These are optional during the 'Create Application' step and can be provided later.
LIMITED LIABILITY COMPANY
- PRESIDENT
- VICE_PRESIDENT
- TREASURER
- CEO
- CFO
- COO
- SECRETARY
- MEMBER
PRIVATE
- PRESIDENT
- VICE_PRESIDENT
- SECRETARY
- TREASURER
- CEO
- CFO
- COO
TAX EXEMPT ORGANIZATION
- ADMINISTRATOR
SOLO TRADER
- OWNER
PARTNERSHIP
- PARTNER
GOVERNMENT
- Owner title is optional: pass null or omit (no titles required)
PUBLIC
- Owner title is optional: pass null or omit (no titles required)
Canadian (CA) Business Types and Owner Titles: For applications with country = CA, use one of the following ownership types and the corresponding owner titles.
GENERAL_PARTNERSHIP
- PARTNER
LIMITED_PARTNERSHIP
- PARTNER
PRIVATE_CORPORATION_FEDERALLY_OR_PROVINCIALLY_INCORPORATED
- PRESIDENT
- VICE_PRESIDENT
- SECRETARY
- TREASURER
- CEO
- CFO
- COO
PUBLIC_CORPORATION_SHARES_TRADED_ON_EXCHANGE
- PRESIDENT
- VICE_PRESIDENT
- SECRETARY
- TREASURER
- CEO
- CFO
- COO
COOPERATIVE_FOR_PROFIT
- PRESIDENT
- VICE_PRESIDENT
- SECRETARY
- TREASURER
- CEO
- CFO
- COO
COOPERATIVE_NOT_FOR_PROFIT
- OWNER
- PARTNER
- PRESIDENT
- VICE_PRESIDENT
- SECRETARY
- TREASURER
- CEO
- CFO
- COO
- MEMBER
NOT_FOR_PROFIT_ORGANIZATION_NON_CHARITY
- OWNER
- PARTNER
- PRESIDENT
- VICE_PRESIDENT
- SECRETARY
- TREASURER
- CEO
- CFO
- COO
- MEMBER
REGISTERED_CHARITY
- OWNER
- PARTNER
- PRESIDENT
- VICE_PRESIDENT
- SECRETARY
- TREASURER
- CEO
- CFO
- COO
- MEMBER
GOVERNMENT_ENTITY_FEDERAL_PROVINCIAL_MUNICIPAL_CROWN_CORPORATION
- No owner titles required (government entity)
UNLIMITED_LIABILITY_CORPORATION_ULC
- PRESIDENT
- VICE_PRESIDENT
- SECRETARY
- TREASURER
- CEO
- CFO
- COO
EXTRA_PROVINCIAL_CORPORATION_FOREIGN_CORPORATION_REGISTERED_IN_CANADA
- PRESIDENT
- VICE_PRESIDENT
- SECRETARY
- TREASURER
- CEO
- CFO
- COO
FOREIGN_PARTNERSHIP_REGISTERED_IN_CANADA
- PARTNER
COMMUNITY_CONTRIBUTION_COMPANY_FOR_PROFIT
- PRESIDENT
- VICE_PRESIDENT
- SECRETARY
- TREASURER
- CEO
- CFO
- COO
COMMUNITY_CONTRIBUTION_COMPANY_NOT_FOR_PROFIT
- OWNER
- PARTNER
- PRESIDENT
- VICE_PRESIDENT
- SECRETARY
- TREASURER
- CEO
- CFO
- COO
- MEMBER
Authorizations:
Request Body schema: application/json
| business_id required | string The Business ID under which the account will be created. Choose carefully: business users can manage accounts under the given Business, and this selection affects your workflows. The account will be scoped to this Business when approved. |
| name required | string [ 0 .. 100 ] characters Account name. Display name for the merchant account. Max 100 characters. |
| sales_code_id | string [ 0 .. 50 ] characters Optional. Sales code identifier for tracking. |
| sales_agent_id | string [ 0 .. 50 ] characters Optional. Sales agent identifier for tracking. |
| sales_group_id | string [ 0 .. 50 ] characters Optional. Sales group identifier for tracking. |
object (AccountCompanyRequestDto) Company Information - Supports both US (EIN) and Canadian (BN) applications | |
object (AddressRequestDto) Address Info | |
object (ApplicationIndustryVolumeExtDto) Partner-facing industry and volume. Use bank_volume for expected annual bank-rail processing volume; it is mapped to ACH annual fields on persist. | |
object (ServicesDeliveriesRequestDto) Service Delivery Information | |
object (TransactionModesRequestDto) Service Delivery Information | |
Array of objects (MerchantOwnerCreationRequestDto) Owner information. At least one owner required for submit. For create, can be added later. When submitting, exactly one owner must have signer: true. | |
| processing_plan_id required | string Processing plan ID. Required. Select before generating link or submitting. |
object (PartnerDataDto) Partner Data Information | |
| country | string [ 0 .. 10 ] characters ^(US|CA)$ Default: "US" Country: US or CA. Determines validation rules and ownership types. Default US. |
| external_account_id | string [ 0 .. 255 ] characters Optional. Your external identifier for the account (e.g. your system's account ID). Persisted and copied to the Account when approved. |
object Optional. Your custom key-value data as a JSON object. Conforms to your user_fields_schema when enabled for your configuration. |
Responses
Request samples
- Payload
{- "business_id": "string",
- "name": "string",
- "sales_code_id": "string",
- "sales_agent_id": "string",
- "sales_group_id": "string",
- "company": {
- "ownership_type": "GOVERNMENT",
- "category": "RETAIL",
- "ein": "string",
- "legal_name": "string",
- "dba_name": "string",
- "description": "string",
- "business_start_date": "2019-08-24",
- "website": "string",
- "timezone": "EST",
- "phone_number": "8005550100",
- "mcc": "7021",
- "stock_symbol": "string"
}, - "address": {
- "country": "US",
- "state": "AL",
- "city": "string",
- "zip_code": "35242",
- "address_line1": "string",
- "address_line2": "string"
}, - "industry_volume": {
- "bank_volume": 999999999,
- "avg_ticket_amount": 99999,
- "high_ticket_amount": 0,
- "avg_ach_ticket_amount": 0,
- "ach_high_ticket_amount": 0,
- "avg_bank_ticket_amount": 0,
- "bank_high_ticket_amount": 0
}, - "services_deliveries": {
- "same_day_delivery": 0,
- "one_week_delivery": 0,
- "two_week_delivery": 0,
- "one_month_delivery": 0,
- "more_than_one_month_delivery": 0
}, - "transaction_modes": {
- "in_person": 0,
- "online": 0
}, - "owners": [
- {
- "first_name": "string",
- "last_name": "string",
- "email": "test@example.com",
- "phone_number": "1234567890",
- "title": "OWNER",
- "ownership_percent": 50,
- "ssn": "123456789",
- "birth_date": "2019-08-24",
- "residence_address": {
- "country": "US",
- "state": "AL",
- "city": "string",
- "zip_code": "35242",
- "address_line1": "string",
- "address_line2": "string"
}, - "signer": true
}
], - "processing_plan_id": "string",
- "partner_data": {
- "paid_subscription": true,
- "merchant_joined": "2019-08-24T14:15:22Z",
- "backbook": true,
- "last_ip_address": "string",
- "sub_payor_name": "string",
- "request_credit_override": true,
- "prior_annual_volume": 999999999,
- "prior_avg_ticket": 999999999,
- "prior_high_ticket": 999999999,
- "six_mos_chargeback_rate": 0,
- "six_mos_refund_rate": 0,
- "redirect_url": "string"
}, - "country": "US",
- "external_account_id": "string",
- "user_fields": {
- "property1": { },
- "property2": { }
}
}Generate a boarding Application Link
Generate a shareable link for a boarding application that allows applicants to complete or submit the application through a hosted form. If you have configured your own Hosted Application domain, the link will be generated using your domain. Otherwise, the link will be hosted on Forward's platform. Prerequisites: A Processing Plan must be selected for the application before you can generate a link. Important: Application links can expire. Once a link expires, you will need to generate a new link to continue the application process. Use this endpoint when you want to share the application with applicants or allow them to complete the application form.
Authorizations:
path Parameters
| id required | string |
Responses
Initiate multipart upload for an application file
Upload bank-validation documents when requires_bank_account_file_ids_on_submit is true on the application (for example, voided check or bank statement).
Flow
- Initiate (this call): Send
filename,mimetype(application/pdforimage/png),size,purpose(underwriting_document), and optionaldocument_typeenum. You receiveupload_id,key, andparts[].presigned_url. - Upload: For each part,
PUTraw bytes to itspresigned_url(no JSON body, noAuthorizationheader). Store each responseETag(keep quoting as returned). - Complete:
POST .../files/complete_uploadwith the same file metadata plusupload_id,key, andpartslistingpart_numberandetag.
Presigned URLs expire quickly (often within minutes). Then reference returned file IDs in file_ids on submit.
Authorizations:
path Parameters
| id required | string |
Request Body schema: application/json
| filename required | string [ 0 .. 255 ] characters Original file name. |
| mimetype required | string Enum: "application/pdf" "image/png" MIME type of the file (application/pdf or image/png). |
| size required | integer <int64> >= 1 File size in bytes. |
| purpose required | string [ 0 .. 255 ] characters File business purpose. |
| document_type | string Enum: "alien_registration_or_visa" "articles_of_incorporation" "business_bank_statement" "business_phone_bill" "business_tax_return" "drivers_license" "government_business_license" "government_photo_id" "irs_ein_letter" "irs_tax_exempt_letter" "operating_agreement" "other" "other_registration_document" "passport" "personal_bank_statement" "personal_phone_bill" "rental_or_lease_agreement" "social_security_card" "utility_bill" "w2" Optional document classification. |
Responses
Request samples
- Payload
{- "filename": "string",
- "mimetype": "application/pdf",
- "size": 1,
- "purpose": "string",
- "document_type": "alien_registration_or_visa"
}Complete multipart upload and attach file to application
Finishes the upload after parts are written to storage. Call only after initiate_upload and successful PUTs to each presigned_url.
Body: Same filename, mimetype, purpose, and optional document_type as initiate; size must match actual bytes uploaded; include upload_id, key, and all parts with etag from the storage responses.
Response: File metadata and message file_success. Use the file id in file_ids on submit when required.
Authorizations:
path Parameters
| id required | string |
Request Body schema: application/json
| upload_id required | string Multipart upload id. |
| key required | string S3 key used during initiate upload. |
| filename required | string [ 0 .. 255 ] characters Original file name. |
| mimetype required | string Enum: "application/pdf" "image/png" MIME type of the file (application/pdf or image/png). |
| size required | integer <int64> >= 1 File size in bytes. |
| purpose required | string [ 0 .. 255 ] characters File business purpose. |
| document_type | string Enum: "alien_registration_or_visa" "articles_of_incorporation" "business_bank_statement" "business_phone_bill" "business_tax_return" "drivers_license" "government_business_license" "government_photo_id" "irs_ein_letter" "irs_tax_exempt_letter" "operating_agreement" "other" "other_registration_document" "passport" "personal_bank_statement" "personal_phone_bill" "rental_or_lease_agreement" "social_security_card" "utility_bill" "w2" Optional document classification. |
required | Array of objects (ApplicationFileCompleteUploadPartDto) Completed multipart parts and ETags. |
Responses
Request samples
- Payload
{- "upload_id": "string",
- "key": "string",
- "filename": "string",
- "mimetype": "application/pdf",
- "size": 1,
- "purpose": "string",
- "document_type": "alien_registration_or_visa",
- "parts": [
- {
- "part_number": 0,
- "etag": "string"
}
]
}Get point-in-time terms for a boarding application
Returns the point-in-time terms snapshot for this application: terms_version, canonical_payload_json, and display strings parsed from that JSON. The snapshot is the effective terms (tenant terms with partner overrides when configured).
The snapshot is created when the application is created (POST /v1/applications). If none exists, this returns not found
(you may not be enabled for API submit).
Submit: Send terms_version from this response on PUT /applications/{id}/submit together with terms_accepted true.
Present the terms to the merchant using the display fields and/or canonical_payload_json as needed for your UI.
Authorizations:
path Parameters
| id required | string |
Responses
This is an object that represents a Forward Business associated with an Account. Every Account that you have must be associated with You can create a Business, fetch a particular Business or find all the Businesses that are associated to your Account.
Create a new Business
You can create a new Business that will be linked to your Account. We encourage you to complete all the fields while creating a new Business. Once you have created a Business you can start creating Applications and get associated Accounts.
Authorizations:
Request Body schema: application/json
| name required | string [ 0 .. 100 ] characters Business Name |
| contact_email | string Contact Email |
| contact_phone_number | string Contact Phone Number |
| contact_phone_extension | string Contact Phone Extension |
| contact_first_name | string [ 2 .. 50 ] characters Contact First Name |
| contact_last_name | string [ 2 .. 50 ] characters Contact Last Name |
Responses
Request samples
- Payload
{- "name": "string",
- "contact_email": "string",
- "contact_phone_number": "string",
- "contact_phone_extension": "string",
- "contact_first_name": "string",
- "contact_last_name": "string"
}A Business on Forward can have one more Locations. Here you Create, Read, Update or Delete a Location for a Business.
Edit a Location
Business Locations are always editable, please keep this information updated as your information changes.
Authorizations:
path Parameters
| id required | string |
Request Body schema: application/json
| name required | string [ 0 .. 100 ] characters Location Name |
Responses
Request samples
- Payload
{- "name": "string"
}Find Locations
You can find all Locations that you have access to. Further filter on Business Location name and Business Id can be applied on the list of Locations.
Authorizations:
query Parameters
required | object (BusinessLocationFilterRequestExtDto) Business Location Filter Information |
Responses
Create a Location
This endpoint can be used to create a new Business Location only two fields are needed Business Id and Location Name.
Authorizations:
Request Body schema: application/json
| business_id required | string |
| name required | string [ 0 .. 100 ] characters Location Name |
Responses
Request samples
- Payload
{- "business_id": "string",
- "name": "string"
}Here you can find all Merchant Category Codes that are assigned to your Accounts. Please contact Forward support if you have any questions.
List all MCCs
Use this endpoint to list all of the MCCs that have been assigned to you. Please verify this information as it plays a key role in our payment processing flows, as well as the Application creation process.
Authorizations:
query Parameters
required | object (MccCodeFilterRequestDto) MC Codes Filter Request |
Responses
A Payee is a an entity in the platform's payment ecosystem. Using our Payee entity you can setup split payments for a given transaction. The lifecycle of a Payee is 1. A prospective payee receives an application to apply as a Payee, Note: Bank Account details is submitted with the Payee Application. Note: you can create a new payee application using link endpoint. 2. Once a payee application is filled out the application gets submitted to underwriting. 3. If our process approves the application a new payee entity comes into existence. The default state of the newly created Payee is active. You can deactivate or toggle activate for a Payee.
Generate Payee On-boarding Application Link
Use this endpoint to create a new payee application link. Note: All top-level fields in the request are optional. You can send an empty request body to generate a link without pre-populating any data. If you choose to provide application data, you can specify either an individual or company payee. Important: If you include application data, all required fields within that data must be properly completed. Individual Payee: If you provide individual payee information, all required fields (first name, last name, email, phone number, address, etc.) must be included and valid. Company Payee: If you provide company payee information, required fields like company name, legal name, email, website, and owner information must be properly completed.
Authorizations:
Request Body schema: application/json
object (PayeeRequestExtBaseDto) Payee Application Data | |||||
| |||||
Responses
Request samples
- Payload
{- "application_data": {
- "individual": {
- "first_name": "string",
- "last_name": "string",
- "address": {
- "country": "US",
- "state": "AL",
- "city": "string",
- "zip_code": "35242",
- "address_line1": "string",
- "address_line2": "string"
}, - "email": "string",
- "phone_number": "string"
}, - "company": {
- "name": "string",
- "legal_name": "string",
- "email": "string",
- "phone_number": "1234567890",
- "website": "www.example.com",
- "ownership_type": "SOLO_TRADER",
- "company_owners": [
- {
- "first_name": "string",
- "last_name": "string",
- "email": "string",
- "phone_number": "1234567890",
- "residence_address": {
- "country": "US",
- "state": "AL",
- "city": "string",
- "zip_code": "35242",
- "address_line1": "string",
- "address_line2": "string"
}, - "ownership_percent": 0,
- "title": "OWNER"
}
], - "owners": [
- {
- "first_name": "string",
- "last_name": "string",
- "email": "string",
- "phone_number": "1234567890",
- "residence_address": {
- "country": "US",
- "state": "AL",
- "city": "string",
- "zip_code": "35242",
- "address_line1": "string",
- "address_line2": "string"
}, - "ownership_percent": 0,
- "title": "OWNER"
}
], - "business_address": {
- "country": "US",
- "state": "AL",
- "city": "string",
- "zip_code": "35242",
- "address_line1": "string",
- "address_line2": "string"
}
}
}
}Deactivate an existing Payee
Deactivate a payee to temporarily disable it from being used in split payment transactions. A deactivated payee cannot receive payments as part of transaction splits, but the payee record is preserved and can be reactivated later. Use this when you need to temporarily stop payments to a payee without deleting their information, such as when a payee is on hold or under review.
Authorizations:
path Parameters
| id required | string |
Responses
Activate an existing Payee
Activate a payee to make it available for use in split payment transactions. An activated payee can receive payments as part of a transaction split. Note: The payee must have completed the identity verification process before it can be activated. Once activated, the payee will be in an active state and can be used in payment operations.
Authorizations:
path Parameters
| id required | string |
Responses
Find All Payees by provided request
Retrieve a paginated list of all payees associated with your Partner account. Use the request parameters to filter and paginate results. This endpoint is useful for viewing all available payees that can be used in split payment transactions.
Authorizations:
query Parameters
required | object (PayeeExtFilterRequestDto) |
Responses
Get an existing Payee By ID
Retrieve complete details about a specific payee by its unique identifier. This endpoint returns all payee information including status, contact details, and configuration. Use this to view payee details before including them in split payment transactions.
Authorizations:
path Parameters
| id required | string |
Responses
Find All Payee Applications by provided request
Retrieve a paginated list of all payee applications associated with your Partner account. Use the request parameters to filter and paginate results. This endpoint allows you to monitor all payee applications in various stages of the onboarding process, from pending to approved.
Authorizations:
query Parameters
required | object (PayeeApplicationFilterRequestDto) |
Responses
Get Payee Application Link Status
Retrieve the current status of a payee application. If a payee entity has been created from the application, you can also check the payee's status using this endpoint. Note: Webhooks are available to receive real-time notifications about payee application and payee status changes, eliminating the need for polling. This endpoint is useful for one-time status checks or when webhooks are not configured.
Authorizations:
path Parameters
| id required | string |
Responses
Processing Plans are key information that determines fees and payout processing at Forward. You can view, create, update a Processing Plan associated with your Accounts.
Find all Processing Plans
Here you can find all the Processing Plans, if you specify Name you can filter on specific Name as well.The Processing Plan data will be returned to you in a list.
Authorizations:
query Parameters
required | object (ProcessingPlanFilterDto) Processing Plan Filter |
Responses
Get a Processing Plan by id
Here you can review Processing Plan that has been created and verify the information is accurate. If there are any discrepancies in the Fees data please reach out as these play a key role processing payouts.
Authorizations:
path Parameters
| id required | string |
Responses
Update a User
You can keep information regarding your user updated here.
Authorizations:
path Parameters
| id required | string |
Request Body schema: application/json
| first_name required | string User First Name |
| last_name required | string User Last Name |
string User Email Address |
Responses
Request samples
- Payload
{- "first_name": "string",
- "last_name": "string",
- "email": "test@test.com"
}Create a Business User
Here you can create a user for a specific Business. Provide all the necessary details about the user. We will send an automated email out informing your user to setup a password and login. You can also generated a one time login link for this user.
Authorizations:
Request Body schema: application/json
| business_id required | string Business Id |
| first_name required | string User First Name |
| last_name required | string User Last Name |
| email required | string [ 0 .. 70 ] characters User Email |
Responses
Request samples
- Payload
{- "business_id": "string",
- "first_name": "string",
- "last_name": "string",
- "email": "string"
}