---
title: "Create a contract with a ach token or ach data for a Merchant's Customer"
method: POST
path: "/merchants/{merchant_id}/contracts/ach"
tags: ["Contracts"]
---

# Create a contract with a ach token or ach data for a Merchant's Customer

`POST /merchants/{merchant_id}/contracts/ach`

## Request

- Base URL: `https://tb.paymentfusion.com`
- URL: `https://tb.paymentfusion.com/merchants/{merchant_id}/contracts/ach`
- Auth: none declared. Required headers: `Authorization`, `Accept`, `Content-Type`

Called by the Independent Software Vendor. Allows creating of contracts with ach tokens or ach data.

## Path parameters

- `merchant_id` string, required

## Headers

- `Authorization` string, api_id:api_token, required
- `Accept` string, required
- `Content-Type` string, required

## Request body `application/x-www-form-urlencoded`

- union
  - object
    - `bill_amount` integer, required: Sets the monetary amount to charge on each cycle. Specified in USD.
    - `start_date` string: Must be entered in YYYYMMDD format. If not set, the default value will be the date of tomorrow. For example, if today is 1/10/2009 and schedule=monthly then start_date will be set to 2/10/2009. If set to "next" the date of the next billing cycle will be used. For example, if today is 1/10/2009 and schedule=monthly then start_date will be set to 2/10/2009. Can also be entered as "first of month" or "last day of month".
    - `schedule` string: Frequency of recurring billing schedule. Will be ignored if recurring is not sent as "true". Allowed values - "disabled","daily","weekly","bi-weekly", "monthly","bi-monthly","quarterly","bi-annually","annually". If set to "disabled" the contract will have the schedule set to "monthly" and status set to "disabled".
    - `num_left` integer: Number of transactions remaining in the recurring billing cycle. Will be ignored if recurring is not sent as "true". Can take the value of *, which is interpreted as recurring payment for unlimited time.
    - `enabled` boolean: Indicates whether the contract will be enabled or disabled when created.
    - `token` string, required: The ACH token. Supported only for the Payment Fusion Gateway
  - object
    - `bill_amount` integer, required: Sets the monetary amount to charge on each cycle. Specified in USD.
    - `start_date` string: Must be entered in YYYYMMDD format. If not set, the default value will be the date of tomorrow. For example, if today is 1/10/2009 and schedule=monthly then start_date will be set to 2/10/2009. If set to "next" the date of the next billing cycle will be used. For example, if today is 1/10/2009 and schedule=monthly then start_date will be set to 2/10/2009. Can also be entered as "first of month" or "last day of month".
    - `schedule` string: Frequency of recurring billing schedule. Will be ignored if recurring is not sent as "true". Allowed values - "disabled","daily","weekly","bi-weekly", "monthly","bi-monthly","quarterly","bi-annually","annually". If set to "disabled" the contract will have the schedule set to "monthly" and status set to "disabled".
    - `num_left` integer: Number of transactions remaining in the recurring billing cycle. Will be ignored if recurring is not sent as "true". Can take the value of *, which is interpreted as recurring payment for unlimited time.
    - `enabled` boolean: Indicates whether the contract will be enabled or disabled when created.
    - `email_address` string: Check owner’s email address
    - `phone_number` string: Check owner’s phone number.
    - `street_1` string: Check owner’s address street(1)
    - `street_2` string: Check owner’s address street(2)
    - `city` string: Check owner’s address city.
    - `state_or_province_code` string: Check owner’s address tate or province code
    - `postal_code` string: Check owner’s address postal code
    - `country_code` string: Check owner’s address country
    - `account_number` string, required: The check account number.
    - `routing_number` string, required: The checking routing number
    - `name_on_check` string, required: The check name on check.
    - `account_type` string: The type of account used as a source of funds.

## Response `200`

Success

- object
  - `contract` ContractAch
    - `customer_id` string: Customer identifier associated to a transaction
    - `bill_amount` string: Sets the monetary amount to charge on each cycle. This is NOT the "initial" charge or "setup" charge, this is only the "recurring" charge. Described in USD up to 6 decimals, its last 4 digits must be 0. (e.g. "1", "1.00", "1.01", "1.2", "1.230000").
    - `status` 'enabled' | 'disabled' | 'completed': Description of contract status.
    - `start_date` string: Date formatted as YYYYMMDD.
    - `end_date` string: Date formatted as YYYYMMDD. The end_date is the next day after the last installment. For example if last installment was on 20210305 then the end_date will be 20210306. For a contract with unlimited number of installments the end_date will be `"none"`.
    - `schedule` string: Frequency of recurring billing schedule. Allowed values - `"daily"`,`"weekly"`,`"bi-weekly"`,`"monthly"`,`"bi-monthly"`,`"quarterly"`,`"bi-annually"`,`"annually"`.
    - `num_left` string: Number of transactions remaining in recurring billing cycle. When a contract is completed, the num_left will be returned as `0` When the contract is created with unlimited number of installments, the num_left will be returned as `*`
  - `v` string: The API version that was used to handle the request.

## Other responses

- `4XX`: Possible errors - 1, 6, 24, 25, 26, 27, 70, 189, 318, 319,
- `5XX`: Possible errors - 8

---

[API](https://skmtc.dev/bankofamerica/apis/transaction-broker-api.md) - [All operations](https://skmtc.dev/bankofamerica/apis/transaction-broker-api/llms.txt) - [OpenAPI document](https://skmtc.dev/bankofamerica/apis/transaction-broker-api/revisions/6097bc689e41?raw)
