Discussion

There are two actions on this controller, review_cost and process_move_in

review_cost is used to generate the cost of a move in when given the unit ID of a vacant, rentable unit (OR a lead ID with a reserved unit).
* Review cost will NOT save any information passed in to it. Providing tenant information with the hopes of updating it will not work.
* Review cost will also return a session_id and a list of Event Documents, each with their own session_document_id
* These IDs are to be used with the /documents/:session_document_id/session/:session_id endpoint to retrieve the documents associated with the move in event returned
* The session information returned will expire 24 hours after it is created, and any attempt to retrieve documents after 24 hours with those IDs will fail
* If no tenant or lead ID's are provided, a random tenant will be generated and reflected on any documents as "Fake Name". If you plan to use the documents generated from review_cost it is recommended you provide valid tenant information.
process_move_in is used to perform the move in, and can be given either:
* A tenant id and a unit id
* A tenant hash (used to create a new tenant) and a unit id
* A lead id (with an associated tenant) and a unit id
* A lead id (with an associated tenant AND reserved unit)
* The session_id that was returned from review_cost can be passed in, and will ensure the lease_number that was reserved during review_cost is used

A gate access code will be required, unless the tenant (or lead) has an existing gate code from a previous ledger.

Both review_cost and process_move_in can also accept an insurance ID, service IDs, and a specified invoice period


GET /v1/:facility_id/move_ins
Collection of all current move ins for the current facility that have not been completed or cancelled

Examples

GET /v1/08fd767a-f4b1-4370-972d-c4707d18f525/move_ins
200
{
  "move_ins": [
    {
      "id": "6c5b36c2-236a-40e2-a4d5-fe8bf102032a",
      "invoice_period": "monthly",
      "unit_name": "U131",
      "unit_id": "be0a1e6a-e12b-4c13-b03a-79d874d3e46d",
      "unit_combination_lock_number": null,
      "unit_overlock_lock_number": null,
      "tenant_name": "Layne211 Wehner",
      "tenant_id": "30a99e9d-7041-42bb-9db0-2c8974b5e1e1",
      "tenant_military_information": null,
      "ledger_id": "a8c0bc9f-ce12-442a-aecd-9625c3aad314",
      "esign_url": null,
      "rate_type": null,
      "channel_rate_id": null,
      "discount_plan_ids": [],
      "storage_items": [],
      "storing_vehicle": null,
      "gate_access_code": "1030139",
      "first_month_rent_subtotal": null,
      "lock_subtotal": 0,
      "move_in_subtotal": 0,
      "move_in_taxes_total": 0,
      "move_in_total": 0,
      "invoice_line_items": [],
      "successful_payment_events": []
    },
    {
      "id": "cf993bd8-2257-445f-a069-f8838580f545",
      "invoice_period": "monthly",
      "unit_name": "U132",
      "unit_id": "aaa359d8-cedf-457b-af44-f6802fbc731e",
      "unit_combination_lock_number": null,
      "unit_overlock_lock_number": null,
      "tenant_name": "Kip213 Wehner",
      "tenant_id": "acf950d8-c400-4700-b341-a30194300f05",
      "tenant_military_information": null,
      "ledger_id": "dfdd4202-5df5-49f5-99c6-033a6512a787",
      "esign_url": null,
      "rate_type": null,
      "channel_rate_id": null,
      "discount_plan_ids": [],
      "storage_items": [],
      "storing_vehicle": null,
      "gate_access_code": "1170333",
      "first_month_rent_subtotal": null,
      "lock_subtotal": 0,
      "move_in_subtotal": 0,
      "move_in_taxes_total": 0,
      "move_in_total": 0,
      "invoice_line_items": [],
      "successful_payment_events": []
    }
  ],
  "meta": {
    "pagination": {
      "current_page": 1,
      "total_pages": 1,
      "per_page": 100,
      "total_entries": 2,
      "previous_page": null,
      "next_page": null
    },
    "status_code": 200,
    "status_message": "OK",
    "status_cat": "https://http.cat/200",
    "request_method": "GET",
    "request_id": null,
    "parameters": {
      "facility_id": "08fd767a-f4b1-4370-972d-c4707d18f525"
    }
  }
}

POST /v1/:facility_id/move_ins/review_cost
Review the cost of moving into a unit

Examples

POST /v1/4a81e84b-5bef-4f54-a201-29bab382c726/move_ins/review_cost
{
  "move_in": {
    "insurance_id": "84020410-89c9-4bb7-8d14-327bd0ac35f9",
    "invoice_period": "monthly",
    "services": [
      {
        "service_id": "3935f837-c899-492a-a25b-0594efe051ac"
      },
      {
        "service_id": "69077ed6-a6ae-4f89-82c1-fb0018ccc307"
      }
    ],
    "unit_id": "2dd5fd01-9ad2-4ea0-96be-194721acde2f"
  }
}
200
{
  "move_in_unit_event": {
    "id": null,
    "invoice_period": "monthly",
    "unit_name": "U133",
    "unit_id": "2dd5fd01-9ad2-4ea0-96be-194721acde2f",
    "unit_combination_lock_number": "12-31-24",
    "unit_overlock_lock_number": null,
    "tenant_name": "Sample Tenant",
    "tenant_id": null,
    "tenant_military_information": null,
    "ledger_id": null,
    "esign_url": null,
    "rate_type": "standard_rate",
    "channel_rate_id": null,
    "discount_plan_ids": [],
    "storage_items": [],
    "storing_vehicle": null,
    "gate_access_code": null,
    "first_month_rent_subtotal": 536.91,
    "lock_subtotal": 0,
    "move_in_subtotal": 594.48,
    "move_in_taxes_total": 50.47,
    "move_in_total": 644.95,
    "invoice_line_items": [
      {
        "id": null,
        "description": "Rent Unit U133 - 8x5x7",
        "quantity": 1,
        "prorated": true,
        "discount_amount": null,
        "single_item_price": 536.91,
        "subtotal": 536.91,
        "tax_total": 50.47,
        "total": 587.38,
        "current_product_code": "Unit #U133",
        "full_description": "Rent Unit U133 - 8x5x7 (9/12/2022 - 9/30/2022) - Prorated",
        "quantifiable": false,
        "children_line_items": [
          {
            "id": null,
            "description": "Xercor Insurance Services LLC - $37,000.00",
            "quantity": 1,
            "prorated": false,
            "discount_amount": null,
            "single_item_price": 31.41,
            "subtotal": 31.41,
            "tax_total": 0.0,
            "total": 31.41,
            "current_product_code": "XERCOR-1",
            "full_description": "Xercor Insurance Services LLC - $37,000.00 (9/12/2022 - 9/30/2022)",
            "quantifiable": false,
            "children_line_items": []
          },
          {
            "id": null,
            "description": "Some service item",
            "quantity": 1,
            "prorated": true,
            "discount_amount": null,
            "single_item_price": 7.08,
            "subtotal": 7.08,
            "tax_total": 0.0,
            "total": 7.08,
            "current_product_code": "S-12",
            "full_description": "Some service item (9/12/2022 - 9/30/2022) - Prorated",
            "quantifiable": false,
            "children_line_items": []
          },
          {
            "id": null,
            "description": "Some other service item",
            "quantity": 1,
            "prorated": true,
            "discount_amount": null,
            "single_item_price": 19.08,
            "subtotal": 19.08,
            "tax_total": 0.0,
            "total": 19.08,
            "current_product_code": "S-13",
            "full_description": "Some other service item (9/12/2022 - 9/30/2022) - Prorated",
            "quantifiable": false,
            "children_line_items": []
          }
        ]
      },
      {
        "id": null,
        "description": "Xercor Insurance Services LLC - $37,000.00",
        "quantity": 1,
        "prorated": false,
        "discount_amount": null,
        "single_item_price": 31.41,
        "subtotal": 31.41,
        "tax_total": 0.0,
        "total": 31.41,
        "current_product_code": "XERCOR-1",
        "full_description": "Xercor Insurance Services LLC - $37,000.00 (9/12/2022 - 9/30/2022)",
        "quantifiable": false,
        "children_line_items": []
      },
      {
        "id": null,
        "description": "Some service item",
        "quantity": 1,
        "prorated": true,
        "discount_amount": null,
        "single_item_price": 7.08,
        "subtotal": 7.08,
        "tax_total": 0.0,
        "total": 7.08,
        "current_product_code": "S-12",
        "full_description": "Some service item (9/12/2022 - 9/30/2022) - Prorated",
        "quantifiable": false,
        "children_line_items": []
      },
      {
        "id": null,
        "description": "Some other service item",
        "quantity": 1,
        "prorated": true,
        "discount_amount": null,
        "single_item_price": 19.08,
        "subtotal": 19.08,
        "tax_total": 0.0,
        "total": 19.08,
        "current_product_code": "S-13",
        "full_description": "Some other service item (9/12/2022 - 9/30/2022) - Prorated",
        "quantifiable": false,
        "children_line_items": []
      }
    ],
    "successful_payment_events": [],
    "session_id": "dc6ef4a698f53f32c400d6a2415fa5b2",
    "event_documents": [
      {
        "session_document_id": "63e27d8a-a465-430a-8368-591fecc0e21f",
        "document_description": "Lease Agreement",
        "esignable": false
      }
    ],
    "total_monthly_billing_amount": 1000.15
  },
  "meta": {
    "status_code": 200,
    "status_message": "OK",
    "status_cat": "https://http.cat/200",
    "request_method": "POST",
    "request_id": null,
    "parameters": {
      "move_in": {
        "insurance_id": "84020410-89c9-4bb7-8d14-327bd0ac35f9",
        "invoice_period": "monthly",
        "services": [
          {
            "service_id": "3935f837-c899-492a-a25b-0594efe051ac"
          },
          {
            "service_id": "69077ed6-a6ae-4f89-82c1-fb0018ccc307"
          }
        ],
        "unit_id": "2dd5fd01-9ad2-4ea0-96be-194721acde2f"
      },
      "facility_id": "4a81e84b-5bef-4f54-a201-29bab382c726"
    }
  }
}

Params

Param name Description
move_in
required

Value: Must be a Hash
move_in[should_generate_documents]
optional

Defaults to true if not passed. Determines whether documents will be generated along with the review cost call or not. Must be passed as true at least once before the move-in is processed.


Value: Must be one of: <code>true</code>, <code>false</code>.
move_in[lead_id]
optional

Provide an existing lead id if one exists


Value: Must be a String
move_in[unit_id]
required

The desired unit ID


Value: Must be a String
move_in[tenant_id]
optional

A tenant record to associate the move-in with. Required if tenant hash or lead_id are not given.


Value: Must be a String
move_in[tenant]
optional

Value: Must be a Hash
move_in[tenant][first_name]
optional

Value: Must be a String
move_in[tenant][account_number]
optional

Value: Must be a String
move_in[tenant][middle_initial]
optional

Value: Must be a String
move_in[tenant][last_name]
optional

Value: Must be a String
move_in[tenant][drivers_license_number]
optional

Value: Must be a String
move_in[tenant][drivers_license_state]
optional

Value: Must be a String
move_in[tenant][vehicle_license_plate_number]
optional

Value: Must be a String
move_in[tenant][vehicle_license_state]
optional

Value: Must be a String
move_in[tenant][vehicle_description]
optional

Value: Must be a String
move_in[tenant][email]
optional

Value: Must be a String
move_in[tenant][username]
optional

Value: Must be a String
move_in[tenant][password]
optional

Value: Must be a String
move_in[tenant][tax_exempt]
optional

Is the tenant tax exempt?


Value: Must be one of: <code>true</code>, <code>false</code>.
move_in[tenant][is_military]
optional

Is the tenant military?


Value: Must be one of: <code>true</code>, <code>false</code>.
move_in[tenant][is_business]
optional

Is the tenant a business?


Value: Must be one of: <code>true</code>, <code>false</code>.
move_in[tenant][business_name]
optional

Value: Must be a String
move_in[tenant][title]
optional

Value: Must be a String
move_in[tenant][decline_alternate_contact]
optional

Whether or not the tenant declined to provide alternate contact information


Value: Must be one of: <code>true</code>, <code>false</code>.
move_in[tenant][military_information]
optional

A collection of military information (if is_military is true).


Value: Must be a Hash
move_in[tenant][military_information][retired_military]
optional

Is the tenant retired military?


Value: Must be one of: <code>true</code>, <code>false</code>.
move_in[tenant][military_information][no_agent_given]
optional

Is agent information provided?


Value: Must be one of: <code>true</code>, <code>false</code>.
move_in[tenant][military_information][date_entered_service]
optional

Date entered service, Format: YYYY-MM-DD


Value: Must be a Date
move_in[tenant][military_information][military_id]
optional

Value: Must be a String
move_in[tenant][military_information][end_of_active_service_date]
optional

End date of active service, Format: YYYY-MM-DD


Value: Must be a Date
move_in[tenant][military_information][place_of_birth]
optional

Value: Must be a String
move_in[tenant][military_information][last_4_of_ssn]
optional

Must be a 4 digit number


Value: Must be a String
move_in[tenant][military_information][military_email_address]
optional

Must be a valid email address


Value: Must be a String
move_in[tenant][military_information][military_rank]
optional

Value: Must be a String
move_in[tenant][military_information][current_duty_location]
optional

Value: Must be a String
move_in[tenant][military_information][branch_of_service]
optional

Must be Air Force, Army, Coast Guard, Marines, Navy, National Guard, or Other


Value: Must be a String
move_in[tenant][military_information][military_unit]
optional

Value: Must be a String
move_in[tenant][military_information][squadron]
optional

Value: Must be a String
move_in[tenant][military_information][division]
optional

Value: Must be a String
move_in[tenant][military_information][type_of_service]
optional

Must be Active Component or Veteran


Value: Must be a String
move_in[tenant][military_information][agent_first_name]
optional

Value: Must be a String
move_in[tenant][military_information][agent_last_name]
optional

Value: Must be a String
move_in[tenant][military_information][agent_email_address]
optional

Must be a valid email address


Value: Must be a String
move_in[tenant][military_information][agent_phone_number]
optional

Must be a valid phone number


Value: Must be a String
move_in[tenant][military_information][agent_address]
optional

Value: Must be a String
move_in[tenant][military_information][agent_city]
optional

Value: Must be a String
move_in[tenant][military_information][agent_state]
optional

Must be a valid state abbreviation


Value: Must be a String
move_in[tenant][military_information][agent_postal_code]
optional

Must be a valid US postal code


Value: Must be a String
move_in[tenant][military_information][officer_first_name]
optional

Value: Must be a String
move_in[tenant][military_information][officer_last_name]
optional

Value: Must be a String
move_in[tenant][military_information][officer_phone_number]
optional

Must be a valid phone number


Value: Must be a String
move_in[tenant][password_recovery_questions_attributes]
optional

Password recovery questions


Value: Must be an Array of nested elements
move_in[tenant][password_recovery_questions_attributes][question]
required

Value: Must be a String
move_in[tenant][password_recovery_questions_attributes][answer]
required

Value: Must be a String
move_in[tenant][phone_numbers_attributes]
required

A collection of phone numbers.


Value: Must be an Array of nested elements
move_in[tenant][phone_numbers_attributes][number]
optional

Phone number


Value: Must be a String
move_in[tenant][phone_numbers_attributes][extension]
required

Phone number extension


Value: Must be a String
move_in[tenant][phone_numbers_attributes][label]
optional

A label for what the phone number is, such as Home, Work, Mobile, etc.


Value: Must be a String
move_in[tenant][phone_numbers_attributes][primary]
optional

Flag that indicates if this is the primary phone number of the tenant


Value: Must be a String
move_in[tenant][phone_numbers_attributes][sms_opt_in]
optional

Opt the tenant in to SMS (if applicable). Requires a "Mobile" label for SMS to work correctly.


Value: Must be one of: <code>true</code>, <code>false</code>.
move_in[tenant][mailing_address_attributes]
required

A collection of addresses.


Value: Must be a Hash
move_in[tenant][mailing_address_attributes][address1]
required

Value: Must be a String
move_in[tenant][mailing_address_attributes][address2]
optional

Value: Must be a String
move_in[tenant][mailing_address_attributes][city]
required

Value: Must be a String
move_in[tenant][mailing_address_attributes][state]
required

Value: Must be a String
move_in[tenant][mailing_address_attributes][postal]
required

Value: Must be a String
move_in[tenant][contacts_attributes]
optional

A collection of contacts.


Value: Must be an Array of nested elements
move_in[tenant][contacts_attributes][first_name]
optional

Value: Must be a String
move_in[tenant][contacts_attributes][middle_initial]
optional

Value: Must be a String
move_in[tenant][contacts_attributes][last_name]
optional

Value: Must be a String
move_in[tenant][contacts_attributes][email]
optional

Value: Must be a String
move_in[tenant][contacts_attributes][description]
required

Contact description


Value: Must be a String
move_in[tenant][contacts_attributes][primary]
optional

Flag that indicates if this is the primary contact of the tenant


Value: Must be a String
move_in[tenant][contacts_attributes][phone_numbers_attributes]
optional

A collection of phone numbers.


Value: Must be an Array of nested elements
move_in[tenant][contacts_attributes][phone_numbers_attributes][number]
optional

Phone number


Value: Must be a String
move_in[tenant][contacts_attributes][phone_numbers_attributes][extension]
optional

Phone number extension


Value: Must be a String
move_in[tenant][contacts_attributes][phone_numbers_attributes][label]
optional

A label for what the phone number is, such as Home, Work, Mobile, etc.


Value: Must be a String
move_in[tenant][contacts_attributes][phone_numbers_attributes][primary]
optional

Flag that specifies if this is the primary phone number of the contact


Value: Must be a String
move_in[tenant][contacts_attributes][address_attributes]
optional

A collection of addresses.


Value: Must be a Hash
move_in[tenant][contacts_attributes][address_attributes][address1]
optional

Value: Must be a String
move_in[tenant][contacts_attributes][address_attributes][address2]
optional

Value: Must be a String
move_in[tenant][contacts_attributes][address_attributes][city]
optional

Value: Must be a String
move_in[tenant][contacts_attributes][address_attributes][state]
optional

Value: Must be a String
move_in[tenant][contacts_attributes][address_attributes][postal]
optional

Value: Must be a String
move_in[gate_access_code]
optional

The desired gate access code for the unit, required if tenant provided does not have a gate access code from a previous ledger


Value: Must be a String
move_in[invoice_period]
optional

Value: Must be one of: <code>monthly</code>, <code>anniversary</code>.
move_in[insurance_id]
optional

Desired insurance ID


Value: Must be a String
move_in[services]
optional

A collection of service ids


Value: Must be an Array of nested elements
move_in[services][service_id]
optional

Value: Must be a String
move_in[insurance_goods_value]
optional

Estimated value of goods stored for insurance purpose. Must be in range 1-5000 if provided.


Value: Must be a Integer
move_in[invoiceable_items]
optional

A collection of additional invoiceable items purchased with move-in


Value: Must be an Array of nested elements
move_in[invoiceable_items][id]
optional

ID of invoiceable item purchased


Value: Must be a String
move_in[invoiceable_items][quantity]
optional

Quantity of invoiceable items purchased


Value: Must be a Integer
move_in[discount_plans]
optional

A collection of discount plan ids


Value: Must be an Array of nested elements
move_in[discount_plans][discount_plan_id]
optional

Value: Must be a String
move_in[tenant_signature_request_id]
optional

Signature request id


Value: Must be a String
move_in[lien_holders]
optional

A collection of lien holders


Value: Must be an Array of nested elements
move_in[lien_holders][name]
optional

Name of the lien holder


Value: Must be a String
move_in[lien_holders][address_attributes]
optional

The address of the alternate contact


Value: Must be a Hash
move_in[lien_holders][address_attributes][address1]
optional

Value: Must be a String
move_in[lien_holders][address_attributes][address2]
optional

Value: Must be a String
move_in[lien_holders][address_attributes][city]
optional

Value: Must be a String
move_in[lien_holders][address_attributes][state]
optional

Value: Must be a String
move_in[lien_holders][address_attributes][postal]
optional

Value: Must be a String
payment_method
optional

Value: Must be a Hash
payment_method[autopay_enabled]
optional

Enable autopay with this payment method (reuseable must be true). An autopay_day must also be set if facility does set autopay day to invoice day


Value: Must be one of: <code>true</code>, <code>false</code>.
payment_method[autopay_day]
optional

When autopay_enabled is set to 'true' you must specify an autopay day of the month between 1 and 31


Value: Must be a Integer
alternate_contact
optional

Contact to be used as the alternate contact for the tenant


Value: Must be a Hash
alternate_contact[id]
optional

The ID of the contact that will be used for the alternate contact


Value: Must be a String
alternate_contact[description]
required

Contact description


Value: Must be a String
alternate_contact[declined]
optional

Decline to use an alternate contact for the tenant


Value: Must be one of: <code>true</code>, <code>false</code>.
alternate_contact[first_name]
optional

Value: Must be a String
alternate_contact[middle_initial]
optional

Value: Must be a String
alternate_contact[last_name]
optional

Value: Must be a String
alternate_contact[email]
optional

Value: Must be a String
alternate_contact[phone_numbers_attributes]
optional

A collection of phone numbers.


Value: Must be an Array of nested elements
alternate_contact[phone_numbers_attributes][number]
optional

Phone number


Value: Must be a String
alternate_contact[phone_numbers_attributes][extension]
optional

Phone number extension


Value: Must be a String
alternate_contact[phone_numbers_attributes][label]
optional

A label for what the phone number is, such as Home, Work, Mobile, etc.


Value: Must be a String
alternate_contact[phone_numbers_attributes][primary]
optional

Flag that specifies if this is the primary phone number of the contact


Value: Must be a String
alternate_contact[address_attributes]
optional

The address of the alternate contact


Value: Must be a Hash
alternate_contact[address_attributes][address1]
optional

Value: Must be a String
alternate_contact[address_attributes][address2]
optional

Value: Must be a String
alternate_contact[address_attributes][city]
optional

Value: Must be a String
alternate_contact[address_attributes][state]
optional

Value: Must be a String
alternate_contact[address_attributes][postal]
optional

Value: Must be a String

POST /v1/:facility_id/move_ins/process_move_in
Moves a tenant into specified unit

Examples

POST /v1/07cb7e64-0bee-4b1c-937f-83aeeef6a343/move_ins/process_move_in
{
  "move_in": {
    "accepted_documents": [
      {
        "session_document_id": "512a2e25-8041-47c8-9725-a95c4c8f2573"
      }
    ],
    "discount_plans": [
      {
        "discount_plan_id": "2f9ad069-986b-4df6-869a-b66aee14ab33"
      }
    ],
    "gate_access_code": "56763",
    "insurance_id": "0c66b595-cc52-4957-85ab-401cedd9fca6",
    "services": [
      {
        "service_id": "8d2dcd5e-439d-49e7-8074-71010c1a85e6"
      },
      {
        "service_id": "06481bcd-9600-457c-89ea-6d8406c585ef"
      }
    ],
    "session_id": "4a15b92a519a36e7f49450fdb9aa13e2",
    "tenant_id": "a7bdcd49-7b2b-41ac-9f46-8686cca08611",
    "unit_id": "f7db4988-8cf5-493a-87b5-e06630ff71af"
  },
  "alternate_contact": {
    "first_name": "Jane",
    "last_name": "Doe",
    "description": "Alternate",
    "email": "janedoe@email.com",
    "address_attributes": {
      "address1": "123 main",
      "address2": "",
      "city": "Somecity",
      "postal": "12345",
      "state": "AL"
    }
  },
  "payment_method": {
    "billing_address_attributes": {
      "address1": "123 Main",
      "city": "Somecity",
      "country": "US",
      "postal": "12345",
      "state": "AL"
    },
    "card_number": "00000000",
    "card_type": "visa",
    "expiration_date": "10/24",
    "first_name": "John",
    "kind": "credit_card",
    "last_name": "Doe",
    "security_code": "123"
  }
}
200
{
  "move_in_unit_event": {
    "id": "fb81718a-7a35-404a-acfa-ddc3d6caa814",
    "invoice_period": "monthly",
    "unit_name": "U117",
    "unit_id": "f7db4988-8cf5-493a-87b5-e06630ff71af",
    "unit_combination_lock_number": null,
    "tenant_name": "Tomeka128 Legros",
    "tenant_id": "a7bdcd49-7b2b-41ac-9f46-8686cca08611",
    "ledger_id": "9252982d-9e35-48c7-958a-ce95b8bf3393",
    "esign_url": null,
    "rate_type": "standard_rate",
    "channel_rate_id": null,
    "discount_plan_ids": [],
    "storage_items": null,
    "storing_vehicle": null,
    "invoice_line_items": [
      {
        "id": "2414e93d-0c60-47a3-a367-323c4604c715",
        "description": "Rent Unit U117 - 6x5x3",
        "quantity": 1,
        "prorated": true,
        "discount_amount": null,
        "single_item_price": 226.65,
        "subtotal": 226.65,
        "tax_total": 21.31,
        "total": 247.96,
        "current_product_code": "Unit #U117",
        "full_description": "Rent Unit U117 - 6x5x3 (8/20/2020 - 8/31/2020) - Prorated",
        "children_line_items": [
          {
            "id": "1ab45d04-a8ea-4be0-a9c6-d50635a829fa",
            "description": "Xercor Insurance Services LLC - $38,000.00",
            "quantity": 1,
            "prorated": false,
            "discount_amount": null,
            "single_item_price": 25.33,
            "subtotal": 25.33,
            "tax_total": 0,
            "total": 25.33,
            "current_product_code": "XERCOR-1",
            "full_description": "Xercor Insurance Services LLC - $38,000.00 (8/20/2020 - 8/31/2020)",
            "children_line_items": []
          },
          {
            "id": "854b77ed-019e-42a0-9bd2-8f19ad9564cb",
            "description": "Some service item",
            "quantity": 1,
            "prorated": true,
            "discount_amount": null,
            "single_item_price": 6.41,
            "subtotal": 6.41,
            "tax_total": 0,
            "total": 6.41,
            "current_product_code": "S-14",
            "full_description": "Some service item (8/20/2020 - 8/31/2020) - Prorated",
            "children_line_items": []
          },
          {
            "id": "1c09a8f7-6f22-4a85-a998-8f309e909dc5",
            "description": "Some other service item",
            "quantity": 1,
            "prorated": true,
            "discount_amount": null,
            "single_item_price": 7.44,
            "subtotal": 7.44,
            "tax_total": 0,
            "total": 7.44,
            "current_product_code": "S-15",
            "full_description": "Some other service item (8/20/2020 - 8/31/2020) - Prorated",
            "children_line_items": []
          }
        ]
      },
      {
        "id": "1ab45d04-a8ea-4be0-a9c6-d50635a829fa",
        "description": "Xercor Insurance Services LLC - $38,000.00",
        "quantity": 1,
        "prorated": false,
        "discount_amount": null,
        "single_item_price": 25.33,
        "subtotal": 25.33,
        "tax_total": 0,
        "total": 25.33,
        "current_product_code": "XERCOR-1",
        "full_description": "Xercor Insurance Services LLC - $38,000.00 (8/20/2020 - 8/31/2020)",
        "children_line_items": []
      },
      {
        "id": "854b77ed-019e-42a0-9bd2-8f19ad9564cb",
        "description": "Some service item",
        "quantity": 1,
        "prorated": true,
        "discount_amount": null,
        "single_item_price": 6.41,
        "subtotal": 6.41,
        "tax_total": 0,
        "total": 6.41,
        "current_product_code": "S-14",
        "full_description": "Some service item (8/20/2020 - 8/31/2020) - Prorated",
        "children_line_items": []
      },
      {
        "id": "1c09a8f7-6f22-4a85-a998-8f309e909dc5",
        "description": "Some other service item",
        "quantity": 1,
        "prorated": true,
        "discount_amount": null,
        "single_item_price": 7.44,
        "subtotal": 7.44,
        "tax_total": 0,
        "total": 7.44,
        "current_product_code": "S-15",
        "full_description": "Some other service item (8/20/2020 - 8/31/2020) - Prorated",
        "children_line_items": []
      }
    ],
    "successful_payment_events": [
      {
        "id": "ee29e066-c0ae-4903-98f8-952c14ac2123",
        "amount": 287.14,
        "success": true,
        "date": "2020-08-20T08:43:23.711-10:00",
        "payment_method": {
          "id": "6075a14d-f77d-49a7-aed8-c5bf983f86b1",
          "kind": "credit_card",
          "first_name": "John",
          "last_name": "Doe",
          "reuseable": false,
          "card_number": "****0000",
          "card_type": "visa",
          "expiration_date": "10/24",
          "billing_address": {
            "id": "61cd9826-2747-4e4b-a4c7-f94a30d12339",
            "address1": "123 Main",
            "address2": null,
            "city": "Somecity",
            "state": "AL",
            "postal": "12345",
            "country": "US",
            "full_address": "123 Main, Somecity, AL 12345",
            "latitude": null,
            "longitude": null,
            "time_zone_id": "America/Chicago",
            "time_zone_offset": "-05:00",
            "invalid_data": false,
            "label": "Home"
          }
        }
      }
    ]
  },
  "meta": {
    "status_code": 200,
    "status_message": "OK",
    "status_cat": "https://http.cat/200",
    "request_method": "POST",
    "request_id": null,
    "parameters": {
      "move_in": {
        "accepted_documents": [
          {
            "session_document_id": "512a2e25-8041-47c8-9725-a95c4c8f2573"
          }
        ],
        "discount_plans": [
          {
            "discount_plan_id": "2f9ad069-986b-4df6-869a-b66aee14ab33"
          }
        ],
        "gate_access_code": "56763",
        "insurance_id": "0c66b595-cc52-4957-85ab-401cedd9fca6",
        "services": [
          {
            "service_id": "8d2dcd5e-439d-49e7-8074-71010c1a85e6"
          },
          {
            "service_id": "06481bcd-9600-457c-89ea-6d8406c585ef"
          }
        ],
        "session_id": "4a15b92a519a36e7f49450fdb9aa13e2",
        "tenant_id": "a7bdcd49-7b2b-41ac-9f46-8686cca08611",
        "unit_id": "f7db4988-8cf5-493a-87b5-e06630ff71af"
      },
      "payment_method": {
        "billing_address_attributes": {
          "address1": "123 Main",
          "city": "Somecity",
          "country": "US",
          "postal": "12345",
          "state": "AL"
        },
        "card_number": "[FILTERED]",
        "card_type": "visa",
        "expiration_date": "10/24",
        "first_name": "John",
        "kind": "credit_card",
        "last_name": "Doe",
        "security_code": "[FILTERED]"
      },
      "facility_id": "07cb7e64-0bee-4b1c-937f-83aeeef6a343"
    }
  }
}

Params

Param name Description
move_in
required

Value: Must be a Hash
move_in[should_generate_documents]
optional

Defaults to true if not passed. Determines whether documents will be generated along with the review cost call or not. Must be passed as true at least once before the move-in is processed.


Value: Must be one of: <code>true</code>, <code>false</code>.
move_in[lead_id]
optional

Provide an existing lead id if one exists


Value: Must be a String
move_in[unit_id]
required

The desired unit ID


Value: Must be a String
move_in[tenant_id]
optional

A tenant record to associate the move-in with. Required if tenant hash or lead_id are not given.


Value: Must be a String
move_in[tenant]
optional

Value: Must be a Hash
move_in[tenant][first_name]
optional

Value: Must be a String
move_in[tenant][account_number]
optional

Value: Must be a String
move_in[tenant][middle_initial]
optional

Value: Must be a String
move_in[tenant][last_name]
optional

Value: Must be a String
move_in[tenant][drivers_license_number]
optional

Value: Must be a String
move_in[tenant][drivers_license_state]
optional

Value: Must be a String
move_in[tenant][vehicle_license_plate_number]
optional

Value: Must be a String
move_in[tenant][vehicle_license_state]
optional

Value: Must be a String
move_in[tenant][vehicle_description]
optional

Value: Must be a String
move_in[tenant][email]
optional

Value: Must be a String
move_in[tenant][username]
optional

Value: Must be a String
move_in[tenant][password]
optional

Value: Must be a String
move_in[tenant][tax_exempt]
optional

Is the tenant tax exempt?


Value: Must be one of: <code>true</code>, <code>false</code>.
move_in[tenant][is_military]
optional

Is the tenant military?


Value: Must be one of: <code>true</code>, <code>false</code>.
move_in[tenant][is_business]
optional

Is the tenant a business?


Value: Must be one of: <code>true</code>, <code>false</code>.
move_in[tenant][business_name]
optional

Value: Must be a String
move_in[tenant][title]
optional

Value: Must be a String
move_in[tenant][decline_alternate_contact]
optional

Whether or not the tenant declined to provide alternate contact information


Value: Must be one of: <code>true</code>, <code>false</code>.
move_in[tenant][military_information]
optional

A collection of military information (if is_military is true).


Value: Must be a Hash
move_in[tenant][military_information][retired_military]
optional

Is the tenant retired military?


Value: Must be one of: <code>true</code>, <code>false</code>.
move_in[tenant][military_information][no_agent_given]
optional

Is agent information provided?


Value: Must be one of: <code>true</code>, <code>false</code>.
move_in[tenant][military_information][date_entered_service]
optional

Date entered service, Format: YYYY-MM-DD


Value: Must be a Date
move_in[tenant][military_information][military_id]
optional

Value: Must be a String
move_in[tenant][military_information][end_of_active_service_date]
optional

End date of active service, Format: YYYY-MM-DD


Value: Must be a Date
move_in[tenant][military_information][place_of_birth]
optional

Value: Must be a String
move_in[tenant][military_information][last_4_of_ssn]
optional

Must be a 4 digit number


Value: Must be a String
move_in[tenant][military_information][military_email_address]
optional

Must be a valid email address


Value: Must be a String
move_in[tenant][military_information][military_rank]
optional

Value: Must be a String
move_in[tenant][military_information][current_duty_location]
optional

Value: Must be a String
move_in[tenant][military_information][branch_of_service]
optional

Must be Air Force, Army, Coast Guard, Marines, Navy, National Guard, or Other


Value: Must be a String
move_in[tenant][military_information][military_unit]
optional

Value: Must be a String
move_in[tenant][military_information][squadron]
optional

Value: Must be a String
move_in[tenant][military_information][division]
optional

Value: Must be a String
move_in[tenant][military_information][type_of_service]
optional

Must be Active Component or Veteran


Value: Must be a String
move_in[tenant][military_information][agent_first_name]
optional

Value: Must be a String
move_in[tenant][military_information][agent_last_name]
optional

Value: Must be a String
move_in[tenant][military_information][agent_email_address]
optional

Must be a valid email address


Value: Must be a String
move_in[tenant][military_information][agent_phone_number]
optional

Must be a valid phone number


Value: Must be a String
move_in[tenant][military_information][agent_address]
optional

Value: Must be a String
move_in[tenant][military_information][agent_city]
optional

Value: Must be a String
move_in[tenant][military_information][agent_state]
optional

Must be a valid state abbreviation


Value: Must be a String
move_in[tenant][military_information][agent_postal_code]
optional

Must be a valid US postal code


Value: Must be a String
move_in[tenant][military_information][officer_first_name]
optional

Value: Must be a String
move_in[tenant][military_information][officer_last_name]
optional

Value: Must be a String
move_in[tenant][military_information][officer_phone_number]
optional

Must be a valid phone number


Value: Must be a String
move_in[tenant][password_recovery_questions_attributes]
optional

Password recovery questions


Value: Must be an Array of nested elements
move_in[tenant][password_recovery_questions_attributes][question]
required

Value: Must be a String
move_in[tenant][password_recovery_questions_attributes][answer]
required

Value: Must be a String
move_in[tenant][phone_numbers_attributes]
required

A collection of phone numbers.


Value: Must be an Array of nested elements
move_in[tenant][phone_numbers_attributes][number]
optional

Phone number


Value: Must be a String
move_in[tenant][phone_numbers_attributes][extension]
required

Phone number extension


Value: Must be a String
move_in[tenant][phone_numbers_attributes][label]
optional

A label for what the phone number is, such as Home, Work, Mobile, etc.


Value: Must be a String
move_in[tenant][phone_numbers_attributes][primary]
optional

Flag that indicates if this is the primary phone number of the tenant


Value: Must be a String
move_in[tenant][phone_numbers_attributes][sms_opt_in]
optional

Opt the tenant in to SMS (if applicable). Requires a "Mobile" label for SMS to work correctly.


Value: Must be one of: <code>true</code>, <code>false</code>.
move_in[tenant][mailing_address_attributes]
required

A collection of addresses.


Value: Must be a Hash
move_in[tenant][mailing_address_attributes][address1]
required

Value: Must be a String
move_in[tenant][mailing_address_attributes][address2]
optional

Value: Must be a String
move_in[tenant][mailing_address_attributes][city]
required

Value: Must be a String
move_in[tenant][mailing_address_attributes][state]
required

Value: Must be a String
move_in[tenant][mailing_address_attributes][postal]
required

Value: Must be a String
move_in[tenant][contacts_attributes]
optional

A collection of contacts.


Value: Must be an Array of nested elements
move_in[tenant][contacts_attributes][first_name]
optional

Value: Must be a String
move_in[tenant][contacts_attributes][middle_initial]
optional

Value: Must be a String
move_in[tenant][contacts_attributes][last_name]
optional

Value: Must be a String
move_in[tenant][contacts_attributes][email]
optional

Value: Must be a String
move_in[tenant][contacts_attributes][description]
required

Contact description


Value: Must be a String
move_in[tenant][contacts_attributes][primary]
optional

Flag that indicates if this is the primary contact of the tenant


Value: Must be a String
move_in[tenant][contacts_attributes][phone_numbers_attributes]
optional

A collection of phone numbers.


Value: Must be an Array of nested elements
move_in[tenant][contacts_attributes][phone_numbers_attributes][number]
optional

Phone number


Value: Must be a String
move_in[tenant][contacts_attributes][phone_numbers_attributes][extension]
optional

Phone number extension


Value: Must be a String
move_in[tenant][contacts_attributes][phone_numbers_attributes][label]
optional

A label for what the phone number is, such as Home, Work, Mobile, etc.


Value: Must be a String
move_in[tenant][contacts_attributes][phone_numbers_attributes][primary]
optional

Flag that specifies if this is the primary phone number of the contact


Value: Must be a String
move_in[tenant][contacts_attributes][address_attributes]
optional

A collection of addresses.


Value: Must be a Hash
move_in[tenant][contacts_attributes][address_attributes][address1]
optional

Value: Must be a String
move_in[tenant][contacts_attributes][address_attributes][address2]
optional

Value: Must be a String
move_in[tenant][contacts_attributes][address_attributes][city]
optional

Value: Must be a String
move_in[tenant][contacts_attributes][address_attributes][state]
optional

Value: Must be a String
move_in[tenant][contacts_attributes][address_attributes][postal]
optional

Value: Must be a String
move_in[gate_access_code]
optional

The desired gate access code for the unit, required if tenant provided does not have a gate access code from a previous ledger


Value: Must be a String
move_in[invoice_period]
optional

Value: Must be one of: <code>monthly</code>, <code>anniversary</code>.
move_in[insurance_id]
optional

Desired insurance ID


Value: Must be a String
move_in[services]
optional

A collection of service ids


Value: Must be an Array of nested elements
move_in[services][service_id]
optional

Value: Must be a String
move_in[insurance_goods_value]
optional

Estimated value of goods stored for insurance purpose. Must be in range 1-5000 if provided.


Value: Must be a Integer
move_in[invoiceable_items]
optional

A collection of additional invoiceable items purchased with move-in


Value: Must be an Array of nested elements
move_in[invoiceable_items][id]
optional

ID of invoiceable item purchased


Value: Must be a String
move_in[invoiceable_items][quantity]
optional

Quantity of invoiceable items purchased


Value: Must be a Integer
move_in[discount_plans]
optional

A collection of discount plan ids


Value: Must be an Array of nested elements
move_in[discount_plans][discount_plan_id]
optional

Value: Must be a String
move_in[tenant_signature_request_id]
optional

Signature request id


Value: Must be a String
move_in[lien_holders]
optional

A collection of lien holders


Value: Must be an Array of nested elements
move_in[lien_holders][name]
optional

Name of the lien holder


Value: Must be a String
move_in[lien_holders][address_attributes]
optional

The address of the alternate contact


Value: Must be a Hash
move_in[lien_holders][address_attributes][address1]
optional

Value: Must be a String
move_in[lien_holders][address_attributes][address2]
optional

Value: Must be a String
move_in[lien_holders][address_attributes][city]
optional

Value: Must be a String
move_in[lien_holders][address_attributes][state]
optional

Value: Must be a String
move_in[lien_holders][address_attributes][postal]
optional

Value: Must be a String
move_in[session_id]
optional

Provide the session ID returned from review_cost to use the lease reserved lease number.


Value: Must be a String
move_in[accepted_documents]
optional

A collection of documents that were accepted, only required if passing a session_id.


Value: Must be an Array of nested elements
move_in[accepted_documents][session_document_id]
optional

Value: Must be a String
payment_method
required

Can accept a paymentmethodid, or fields for CC or ACH payments


Value: Must be a Hash
payment_method[payment_method_id]
optional

If you want to use an existing payment method, pass in the id


Value: Must be a String
payment_method[first_name]
optional

Required if not using an existing payment method


Value: Must be a String
payment_method[last_name]
optional

Required if not using an existing payment method


Value: Must be a String
payment_method[kind]
optional

Required if not using an existing payment method


Value: Must be one of: <code>ach</code>, <code>credit_card</code>, <code>check</code>, <code>cash</code>, <code>card_swipe</code>.
payment_method[reuseable]
optional

Value: Must be one of: <code>true</code>, <code>false</code>.
payment_method[magnetic_track]
optional

Required if using a card swipe


Value: Must be a String
payment_method[card_number]
optional

Required if using a credit card


Value: Must be a String
payment_method[card_type]
optional

Required if using a credit card


Value: Must be one of: <code>visa</code>, <code>mastercard</code>, <code>american_express</code>, <code>diners</code>, <code>discover</code>, <code>jcb</code>.
payment_method[security_code]
optional

Required if using a credit card


Value: Must be a String
payment_method[expiration_date]
optional

Required if using a credit card. Format: MM/YY


Value: Must be a String
payment_method[account_number]
optional

Required if using ACH


Value: Must be a String
payment_method[account_number_confirmation]
optional

Required if using ACH


Value: Must be a String
payment_method[account_type]
optional

Required if using ACH


Value: Must be a String
payment_method[bank_name]
optional

Required if using ACH


Value: Must be a String
payment_method[routing_number]
optional

Required if using ACH


Value: Must be a String
payment_method[billing_address_attributes]
optional

Required if not using an existing payment method


Value: Must be a Hash
payment_method[billing_address_attributes][company]
optional

Value: Must be a String
payment_method[billing_address_attributes][address1]
optional

Value: Must be a String
payment_method[billing_address_attributes][address2]
optional

Value: Must be a String
payment_method[billing_address_attributes][city]
optional

Value: Must be a String
payment_method[billing_address_attributes][postal]
optional

Value: Must be a String
payment_method[billing_address_attributes][state]
optional

Value: Must be a String
payment_method[check_number]
optional

Required if using Check


Value: Must be a String
payment_method[name_on_check]
optional

Required if using Check


Value: Must be a String
payment_method[check_amount]
optional

Required if using Check


Value: Must be a String
payment_method[reference_number]
optional

Required if using Money Order


Value: Must be a String
payment_method[money_order_amount]
optional

Required if using Money Order


Value: Must be a String
payment_method[amount_tendered]
optional

Required if using Cash


Value: Must be a String
payment_method[autopay_enabled]
optional

Enable autopay with this payment method (reuseable must be true). An autopay_day must also be set


Value: Must be one of: <code>true</code>, <code>false</code>.
payment_method[autopay_day]
optional

When autopay_enabled is set to 'true' you must specify an autopay day of the month between 1 and 31


Value: Must be a Integer
alternate_contact
optional

Contact to be used as the alternate contact for the tenant


Value: Must be a Hash
alternate_contact[id]
optional

The ID of the contact that will be used for the alternate contact


Value: Must be a String
alternate_contact[description]
required

Contact description


Value: Must be a String
alternate_contact[declined]
optional

Decline to use an alternate contact for the tenant


Value: Must be one of: <code>true</code>, <code>false</code>.
alternate_contact[first_name]
optional

Value: Must be a String
alternate_contact[middle_initial]
optional

Value: Must be a String
alternate_contact[last_name]
optional

Value: Must be a String
alternate_contact[email]
optional

Value: Must be a String
alternate_contact[phone_numbers_attributes]
optional

A collection of phone numbers.


Value: Must be an Array of nested elements
alternate_contact[phone_numbers_attributes][number]
optional

Phone number


Value: Must be a String
alternate_contact[phone_numbers_attributes][extension]
optional

Phone number extension


Value: Must be a String
alternate_contact[phone_numbers_attributes][label]
optional

A label for what the phone number is, such as Home, Work, Mobile, etc.


Value: Must be a String
alternate_contact[phone_numbers_attributes][primary]
optional

Flag that specifies if this is the primary phone number of the contact


Value: Must be a String
alternate_contact[address_attributes]
optional

The address of the alternate contact


Value: Must be a Hash
alternate_contact[address_attributes][address1]
optional

Value: Must be a String
alternate_contact[address_attributes][address2]
optional

Value: Must be a String
alternate_contact[address_attributes][city]
optional

Value: Must be a String
alternate_contact[address_attributes][state]
optional

Value: Must be a String
alternate_contact[address_attributes][postal]
optional

Value: Must be a String