> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developer.fortresstech.io/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developer.fortresstech.io/_mcp/server.

# Create Scheduled Transaction

POST https://api.fortresstech.io/v1/scheduledTransactions
Content-Type: application/json

Available by RequestCreate one or more scheduled (recurring) transactions for a lease. Scheduled transactions are automatically processed based on the specified frequency (daily, weekly, or monthly) and date range. Common use cases include monthly rent charges, recurring fees, or scheduled credits.This endpoint is part of our evolving API ecosystem.
To explore availability for your integration, please contact our team.

Reference: https://developer.fortresstech.io/api-reference/scheduled-transactions/create-scheduled-transaction

## Authentication

- `x-api-key` header (required) — API Key authentication via header

## Request

### Body (application/json)

This endpoint expects a list of ScheduledTransactionCreate.

- `list of ScheduledTransactionCreate`

## Response

### 200

The created scheduled transaction(s)

- `list of ScheduledTransaction`

## Types

### ScheduledTransactionCreate

- `amount` (double, required) — The amount of the scheduled transaction
- `type` (enum, required) — The type of scheduled transaction
  - Allowed values: `PAYMENT`, `CHARGE`, `CREDIT`
- `startDate` (date, required) — The start date in YYYY-MM-DD format
- `code` (string, required) — The transaction code
- `leaseId` (string, required) — The ID of the lease associated with the scheduled transaction
- `ledger` (enum, optional, default: OPERATING) — The ledger for the transaction. Note - SECURITY is not supported yet.
  - Allowed values: `OPERATING`, `SECURITY`
- `subledger` (enum, optional, default: RESIDENT) — The subledger for the transaction
  - Allowed values: `RESIDENT`, `SUBSIDY`
- `frequency` (enum, optional) — The frequency of the scheduled transaction
  - Allowed values: `DAILY`, `WEEKLY`, `MONTHLY`
- `endDate` (date, optional) — The end date in YYYY-MM-DD format. Must be on or after startDate.
- `documentNumber` (string, optional) — The document number
- `notes` (string, optional) — Notes about the scheduled transaction
- `idempotencyId` (string, optional)

### ScheduledTransaction

- `amount` (double, required)
- `type` (enum, required)
  - Allowed values: `PAYMENT`, `CHARGE`, `CREDIT`
- `code` (string, required)
- `ledger` (enum, optional, default: OPERATING)
  - Allowed values: `OPERATING`, `SECURITY`
- `subledger` (enum, optional, default: RESIDENT)
  - Allowed values: `RESIDENT`, `SUBSIDY`
- `startDate` (date, optional)
- `endDate` (date, optional)
- `description` (string, optional)
- `notes` (string, optional)
- `frequency` (enum, optional) — The frequency of the scheduled transaction
  - Allowed values: `DAILY`, `WEEKLY`, `MONTHLY`
- `note` (string, optional) — Note on the scheduled transaction
- `id` (string, optional)
- `idempotencyId` (string, optional)
- `createdAt` (datetime, optional)
- `updatedAt` (datetime, optional)
- `deletedAt` (datetime, optional)
- `organizationId` (string, optional)
- `leaseId` (string, optional)
- `householdId` (string, optional)
- `propertyId` (string, optional)
- `household` (households_components-schemas-Base, optional)
- `customer` (customers_components-schemas-Base, optional)
- `property` (properties_components-schemas-Base, optional)
- `lease` (leases_components-schemas-Base, optional)

### households_components-schemas-Base

- `status` (enum, optional)
  - Allowed values: `APPLICANT`, `RESIDENT`, `PRIOR`
- `isUnderEviction` (boolean, optional)
- `id` (string, optional)
- `readableId` (string, optional)
- `idempotencyId` (string, optional)
- `createdAt` (datetime, optional)
- `updatedAt` (datetime, optional)
- `deletedAt` (datetime, optional)
- `currentUnitId` (string, optional) — Current unit the household is associated with. Set only when the lease is active
- `currentLeaseId` (string, optional) — Current active lease for the household.
- `applicationId` (string, optional)
- `organizationId` (string, optional)
- `propertyId` (string, optional)
- `currentCertificationId` (string, optional)
- `prospectId` (string, optional)
- `primaryCustomerId` (string, optional)
- `totalActiveRentAmount` (double, optional) — Sum of all active RENT monthly lease transactions for the household
- `totalActiveSubsidyAmount` (double, optional) — Sum of all active SUBRENT monthly lease transactions for the household
- `totalActiveFeesAmount` (double, optional) — Sum of all active non-optional fee (charge) monthly lease transactions for the household
- `unitId` (string, optional, deprecated) — Deprecated, use currentUnitId instead

### customers_components-schemas-Base

- `firstName` (string, optional)
- `middleName` (string, optional)
- `lastName` (string, optional)
- `preferredName` (string, optional)
- `suffix` (string, optional)
- `birthDate` (date, optional)
- `status` (enum, optional)
  - Allowed values: `APPLICANT`, `RESIDENT`, `PRIOR`
- `email` (string, optional)
- `phone` (string, optional)
- `gender` (string, optional)
- `headOfHousehold` (boolean, optional) — Indicates whether the customer is the head of household
- `relationship` (enum, optional) — Relationship of the customer to the head of household (null for head of household)
  - Allowed values: `PARTNER`, `PARENT`, `ADULT_CHILD`, `ROOMMATE`, `CHILD`, `GUARANTOR`, `OTHER`
- `passportNumberLastFour` (string, optional, nullable) — Last 4 characters of the passport number, spaces and dashes removed. null when no passport number is on file or it has 4 characters or fewer. The full number is never returned.
- `passportCountry` (string, optional, nullable) — Name of the country that issued the passport (for example "United States"). null when no passport country is on file.
- `alienRegistrationNumberLastFour` (string, optional, nullable) — Last 4 characters of the alien registration number (A-Number), spaces and dashes removed. null when no number is on file or it has 4 characters or fewer. The full number is never returned.
- `citizenshipStatus` (string, optional, nullable) — HUD member citizenship code from the affordable certification: EC (citizen or national), EN (non-citizen with eligible immigration status), IC (ineligible non-citizen child of head or spouse), IN (ineligible non-citizen), IP (ineligible parent of head or spouse), ND (no documentation submitted), PV (eligibility pending verification), XX (not a family member, for example a foster). Only records on certifications that are not deleted count; when the applicant has more than one, the most recently updated one is used. null when none is recorded.
- `maritalStatus` (string, optional, nullable) — Marital status from the rental application as stored, for example single, married, divorced, separated or widowed. null when not answered.
- `spouseName` (string, optional, nullable) — Spouse full name from the rental application (first, middle and last name). null when no spouse is recorded.
- `studentType` (string, optional, nullable) — Student type code from the rental application: f_tK_12 (full-time, kindergarten to grade 12), f_tPost12 (full-time, after grade 12) or p_t (part-time); a few older applications hold free text such as Full-time or Part-Time. Returned as stored, even when the application does not mark the customer as a student. null when the answer is not a student (n_s, Not a student or No es estudiante) or the question was not answered.
- `currentAddressStreet` (string, optional, nullable) — First street line of the current address the customer gave on the rental application. null when no current address is on file or the line is blank.
- `currentAddressStreet2` (string, optional, nullable) — Second street line (apartment, suite, unit) of the current address from the rental application. null when blank or no current address is on file.
- `currentAddressCity` (string, optional, nullable) — City of the current address from the rental application. null when blank or no current address is on file.
- `currentAddressState` (string, optional, nullable) — Two-letter state or territory code of the current address from the rental application (for example "NY"). null when no state is on file or the stored value is not a known state or territory code.
- `currentAddressZipCode` (string, optional, nullable) — ZIP code of the current address from the rental application, as entered. null when blank or no current address is on file.
- `lenderName` (string, optional, nullable) — Name of the landlord or mortgage lender for the current address, as entered on the rental application. null when blank or no current address is on file.
- `id` (string, optional)
- `readableId` (string, optional)
- `idempotencyId` (string, optional)
- `createdAt` (datetime, optional)
- `updatedAt` (datetime, optional)
- `deletedAt` (datetime, optional)
- `householdId` (string, optional)
- `propertyId` (string, optional)
- `organizationId` (string, optional)

### properties_components-schemas-Base

- `name` (string, optional)
- `shortName` (string, optional)
- `email` (string, optional)
- `phone` (string, optional)
- `physicalStreetAddress1` (string, optional)
- `physicalStreetAddress2` (string, optional)
- `physicalCity` (string, optional)
- `physicalState` (string, optional)
- `physicalZip` (string, optional)
- `physicalCountry` (string, optional)
- `mailingStreetAddress1` (string, optional)
- `mailingStreetAddress2` (string, optional)
- `mailingCity` (string, optional)
- `mailingState` (string, optional)
- `mailingZip` (string, optional)
- `mailingCountry` (string, optional)
- `phoneNumber` (string, optional)
- `faxNumber` (string, optional)
- `timezone` (string, optional)
- `longitude` (double, optional)
- `latitude` (double, optional)
- `turnMoveOutDays` (integer, optional) — Number of days after move-out to calculate make ready date
- `status` (enum, optional, nullable) — Property lifecycle status. Fortress aggregates occupancy only for ACTIVE properties.
  - Allowed values: `ACTIVE`, `INACTIVE`, `PENDING`
- `propertyClass` (enum, optional, nullable) — The property's class. Null for properties with no class assigned.
  - Allowed values: `Conventional`, `Affordable`, `Mixed`
- `organizationId` (string, optional)
- `id` (string, optional)
- `readableId` (string, optional)
- `idempotencyId` (string, optional)
- `createdAt` (datetime, optional)
- `updatedAt` (datetime, optional)
- `deletedAt` (datetime, optional)
- `offboardedAt` (datetime, optional)
- `countyName` (string, optional)
- `acquisitionDate` (datetime, optional)

### leases_components-schemas-Base

- `startDate` (date, optional)
- `endDate` (date, optional)
- `moveInDate` (date, optional) — Effective move-in date (actualMoveInDate if available, otherwise moveInDate)
- `moveOutDate` (date, optional) — Move-out date from the last NoticeToVacate
- `rentAmount` (double, optional)
- `leasedRent` (double, optional) — Leased rent amount on the lease
- `securityDepositAmount` (double, optional)
- `makeReadyDate` (date, optional) — Unit make ready date from Unit table
- `turnMoveOutDays` (integer, optional) — Turn move out days from Property table
- `documentId` (string, optional) — The id of the lease document
- `moveOutId` (string, optional)
- `id` (string, optional)
- `readableId` (string, optional)
- `idempotencyId` (string, optional)
- `createdAt` (datetime, optional)
- `updatedAt` (datetime, optional)
- `deletedAt` (datetime, optional)
- `propertyId` (string, optional)
- `unitId` (string, optional)
- `householdId` (string, optional)
- `organizationId` (string, optional)

## Examples

**Request**

```json
[
  {
    "amount": 1.1,
    "type": "PAYMENT",
    "startDate": "2023-01-15",
    "code": "string",
    "leaseId": "string"
  }
]
```

**Response**

```json
[
  {
    "amount": 1.1,
    "type": "PAYMENT",
    "code": "string",
    "ledger": "OPERATING",
    "subledger": "RESIDENT",
    "startDate": "2023-01-15",
    "endDate": "2023-01-15",
    "description": "string",
    "notes": "string",
    "frequency": "DAILY",
    "note": "string",
    "id": "string",
    "idempotencyId": "string",
    "createdAt": "2024-01-15T09:30:00Z",
    "updatedAt": "2024-01-15T09:30:00Z",
    "deletedAt": "2024-01-15T09:30:00Z",
    "organizationId": "string",
    "leaseId": "string",
    "householdId": "string",
    "propertyId": "string",
    "household": {
      "status": "APPLICANT",
      "isUnderEviction": true,
      "id": "string",
      "readableId": "string",
      "idempotencyId": "string",
      "createdAt": "2024-01-15T09:30:00Z",
      "updatedAt": "2024-01-15T09:30:00Z",
      "deletedAt": "2024-01-15T09:30:00Z",
      "currentUnitId": "string",
      "currentLeaseId": "string",
      "applicationId": "string",
      "organizationId": "string",
      "propertyId": "string",
      "currentCertificationId": "string",
      "prospectId": "string",
      "primaryCustomerId": "string",
      "totalActiveRentAmount": 1.1,
      "totalActiveSubsidyAmount": 1.1,
      "totalActiveFeesAmount": 1.1,
      "unitId": "string"
    },
    "customer": {
      "firstName": "string",
      "middleName": "string",
      "lastName": "string",
      "preferredName": "string",
      "suffix": "string",
      "birthDate": "2023-01-15",
      "status": "APPLICANT",
      "email": "string",
      "phone": "string",
      "gender": "string",
      "headOfHousehold": true,
      "relationship": "PARTNER",
      "passportNumberLastFour": "string",
      "passportCountry": "string",
      "alienRegistrationNumberLastFour": "string",
      "citizenshipStatus": "string",
      "maritalStatus": "string",
      "spouseName": "string",
      "studentType": "string",
      "currentAddressStreet": "string",
      "currentAddressStreet2": "string",
      "currentAddressCity": "string",
      "currentAddressState": "string",
      "currentAddressZipCode": "string",
      "lenderName": "string",
      "id": "string",
      "readableId": "string",
      "idempotencyId": "string",
      "createdAt": "2024-01-15T09:30:00Z",
      "updatedAt": "2024-01-15T09:30:00Z",
      "deletedAt": "2024-01-15T09:30:00Z",
      "householdId": "string",
      "propertyId": "string",
      "organizationId": "string"
    },
    "property": {
      "name": "string",
      "shortName": "string",
      "email": "string",
      "phone": "string",
      "physicalStreetAddress1": "string",
      "physicalStreetAddress2": "string",
      "physicalCity": "string",
      "physicalState": "string",
      "physicalZip": "string",
      "physicalCountry": "string",
      "mailingStreetAddress1": "string",
      "mailingStreetAddress2": "string",
      "mailingCity": "string",
      "mailingState": "string",
      "mailingZip": "string",
      "mailingCountry": "string",
      "phoneNumber": "string",
      "faxNumber": "string",
      "timezone": "string",
      "longitude": 1.1,
      "latitude": 1.1,
      "turnMoveOutDays": 1,
      "status": "ACTIVE",
      "propertyClass": "Conventional",
      "organizationId": "string",
      "id": "string",
      "readableId": "string",
      "idempotencyId": "string",
      "createdAt": "2024-01-15T09:30:00Z",
      "updatedAt": "2024-01-15T09:30:00Z",
      "deletedAt": "2024-01-15T09:30:00Z",
      "offboardedAt": "2024-01-15T09:30:00Z",
      "countyName": "string",
      "acquisitionDate": "2024-01-15T09:30:00Z"
    },
    "lease": {
      "startDate": "2023-01-15",
      "endDate": "2023-01-15",
      "moveInDate": "2023-01-15",
      "moveOutDate": "2023-01-15",
      "rentAmount": 1.1,
      "leasedRent": 1.1,
      "securityDepositAmount": 1.1,
      "makeReadyDate": "2023-01-15",
      "turnMoveOutDays": 1,
      "documentId": "string",
      "moveOutId": "string",
      "id": "string",
      "readableId": "string",
      "idempotencyId": "string",
      "createdAt": "2024-01-15T09:30:00Z",
      "updatedAt": "2024-01-15T09:30:00Z",
      "deletedAt": "2024-01-15T09:30:00Z",
      "propertyId": "string",
      "unitId": "string",
      "householdId": "string",
      "organizationId": "string"
    }
  }
]
```

**SDK Code**

```python
import requests

url = "https://api.fortresstech.io/v1/scheduledTransactions"

payload = [
    {
        "amount": 1.1,
        "type": "PAYMENT",
        "startDate": "2023-01-15",
        "code": "string",
        "leaseId": "string"
    }
]
headers = {
    "x-api-key": "<apiKey>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://api.fortresstech.io/v1/scheduledTransactions';
const options = {
  method: 'POST',
  headers: {'x-api-key': '<apiKey>', 'Content-Type': 'application/json'},
  body: '[{"amount":1.1,"type":"PAYMENT","startDate":"2023-01-15","code":"string","leaseId":"string"}]'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.fortresstech.io/v1/scheduledTransactions"

	payload := strings.NewReader("[\n  {\n    \"amount\": 1.1,\n    \"type\": \"PAYMENT\",\n    \"startDate\": \"2023-01-15\",\n    \"code\": \"string\",\n    \"leaseId\": \"string\"\n  }\n]")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("x-api-key", "<apiKey>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.fortresstech.io/v1/scheduledTransactions")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "[\n  {\n    \"amount\": 1.1,\n    \"type\": \"PAYMENT\",\n    \"startDate\": \"2023-01-15\",\n    \"code\": \"string\",\n    \"leaseId\": \"string\"\n  }\n]"

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.fortresstech.io/v1/scheduledTransactions")
  .header("x-api-key", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("[\n  {\n    \"amount\": 1.1,\n    \"type\": \"PAYMENT\",\n    \"startDate\": \"2023-01-15\",\n    \"code\": \"string\",\n    \"leaseId\": \"string\"\n  }\n]")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.fortresstech.io/v1/scheduledTransactions', [
  'body' => '[
  {
    "amount": 1.1,
    "type": "PAYMENT",
    "startDate": "2023-01-15",
    "code": "string",
    "leaseId": "string"
  }
]',
  'headers' => [
    'Content-Type' => 'application/json',
    'x-api-key' => '<apiKey>',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.fortresstech.io/v1/scheduledTransactions");
var request = new RestRequest(Method.POST);
request.AddHeader("x-api-key", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "[\n  {\n    \"amount\": 1.1,\n    \"type\": \"PAYMENT\",\n    \"startDate\": \"2023-01-15\",\n    \"code\": \"string\",\n    \"leaseId\": \"string\"\n  }\n]", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = [
  "x-api-key": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  [
    "amount": 1.1,
    "type": "PAYMENT",
    "startDate": "2023-01-15",
    "code": "string",
    "leaseId": "string"
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.fortresstech.io/v1/scheduledTransactions")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```