Skip to main content

Make a Payment Using the API

This article explains how to process tenant, lease, and move-in payments using the QuikStor Public API with credit card, ACH, or saved methods through secure Elavon Lightbox integration.

Updated today

Prerequisites

To make a payment for a move-in, lease, or tenant balance, your API credentials must include permissions for the following endpoints:

  • Start Lightbox Session

  • Make Lease Payment

  • Make Tenant Payment

  • Complete Move-In

  • Read Lease Balance Due

  • Read Tenant Balance Due

πŸ’‘ Optional but recommended: Have access to the QMS App for testing the payment flow end-to-end.

Payment Types

1. Tenant Balance Payment

  • Must pay the entire tenant balance.

  • Partial payments are not allowed.


2. Lease Balance Payment

  • Partial payments are allowed, mainly for delinquency purposes.

  • You can choose to pay any portion of the lease balance.

Workflow: Paying a Lease Balance

Step 1 β€” Fetch Lease Balance

Endpoint
​GET /api/v2/companies/{companyCode}/facilities/{facilityCode}/end-users/{endUserId}/leases/{leaseId}/balance-due

Example Request URL

https://public.trial.quikstor.com/api/v2/companies/long/facilities/atx/end-users/afbf2f50-a477-4f84-bec9-b8ce72687689/leases/1641d032-2ae7-4e38-99a4-9f5b3f7f2e21/balance-due

Example Response

{   "balanceDue": 281.50 }

Step 2 β€” Initiate Lease Payment

Endpoint
​POST /api/v2/companies/{companyCode}/facilities/{facilityCode}/end-users/{endUserId}/leases/{leaseId}/payment

Example Request URL

https://public.trial.quikstor.com/api/v2/companies/long/facilities/atx/end-users/afbf2f50-a477-4f84-bec9-b8ce72687689/leases/1641d032-2ae7-4e38-99a4-9f5b3f7f2e21/payment

Depending on the payment method, payments can be made in three ways:

Payment Methods

A. Credit Card (via Elavon Lightbox)

Required fields:

  • amount

  • externalId (Elavon Lightbox transaction ID)

Example

{
"idempotencyKey": "f4b88111-dd1c-b51f-0308-425d52b192ae",
"payment": {
"paymentType": "Lightbox",
"paymentCreditCardLightbox": {
"amount": 281.50,
"externalId": "{{elavon_lightbox_ssl_txn_id}}"
}
}
}

Note: For GDPR compliance, raw credit card details are never stored.
Use the Lightbox payment gateway to securely collect card information and return a transaction token (ssl_txn_id).

See Elavon Lightbox Overview for details.


B. ACH Payment

Required fields:

  • amount

  • Bank Account Info: accountHolderName, accountNumber, routingNumber

  • Billing Info: firstName, lastName, street1, city, state, postalCode, country

Example

{
"idempotencyKey": "f4b88111-dd1c-b51f-0308-425d52b192ae",
"payment": {
"paymentType": "ACH",
"paymentAch": {
"amount": 281.50,
"bankAccount": {
"accountHolderName": "Example",
"accountNumber": "490000018",
"routingNumber": "12345679"
},
"billingInfo": {
"city": "Los Angeles",
"country": "US",
"firstName": "John",
"lastName": "Doe",
"postalCode": "90001",
"street1": "S Western Avenue",
"state": "CA"
}
}
}
}

C. Payment on File

Use when the tenant already has a saved payment method.

Fetch saved methods
​GET /api/v2/companies/{companyCode}/facilities/{facilityCode}/end-users/{endUserId}/leases/{leaseId}/auto-billing

Example Response

{
"creditCardMethodsOnFile": [
{
"id": "6e2f9956-4527-4aa3-82c5-109d8e3bcb9e",
"name": "John Doe VISA",
"firstName": "John",
"lastName": "Doe",
"state": "CA",
"city": "Los Angeles",
"postalCode": "90001",
"street1": "S Western Avenue",
"cardholderName": "John Doe",
"last4CreditCardDigits": "1111",
"creditCardType": "Visa",
"expirationYear": 2030,
"expirationMonth": 12,
"useForAutoBilling": false,
"autoPaymentPriority": 0
}
],
"achEftMethodsOnFile": [
{
"id": "8e48e074-2b1d-47f1-93c5-de0380e5e4c8",
"name": "John Doe Checking",
"firstName": "John",
"lastName": "Doe",
"city": "Los Angeles",
"state": "CA",
"postalCode": "90001",
"street1": "S Western Avenue",
"accountHolderName": "John Doe",
"last4BankAccountDigits": "5679",
"useForAutoBilling": false,
"autoPaymentPriority": 0
}
]
}

Required fields:

  • amount

  • methodOnFileId

  • paymentType: "CreditCardOnFile" or "AchOnFile"

Example

{
"idempotencyKey": "f4b88111-dd1c-b51f-0308-425d52b192ae",
"payment": {
"paymentType": "CreditCardOnFile",
"paymentOnFile": {
"amount": 281.50,
"methodOnFileId": "6e2f9956-4527-4aa3-82c5-109d8e3bcb9e"
}
}
}

Using Elavon Lightbox (Credit Card Tokenization)

To securely collect card data, start a Lightbox session.

Endpoint
​POST /api/v2/companies/{companyCode}/facilities/{facilityCode}/payments/lightbox-sessions

Example Request

https://public.trial.quikstor.com/api/v2/companies/long/facilities/atx/payments/lightbox-sessions

Body

{
"amount": 281.50,
"billingInfo": {
"city": "Los Angeles",
"country": "US",
"firstName": "John",
"lastName": "Doe",
"postalCode": "90001",
"street1": "S Western Avenue",
"state": "CA"
}
}

Example Response

{   "sessionToken": "k302MVRuTuOtG2KTbbvMxgAAAZm/AmfT" }

Testing Lightbox

You can test payments via the QMS Playground:

URL:
​https://app.trial.quikstor.com/{{companyCode}}/api/playground

Steps to test payment using lightbox playground:

  1. Enter your Lightbox session token.

  2. Click Proceed to Payment.

  3. Use the following test credentials:

Field

Value

Card Number

4111 1111 1111 1111

Expiration

12/30

CVV2

any 3–4 digit number (e.g. 123)

When payment completes, a response from lightbox is logged in the console containing:

"ssl_txn_id": "071025C45-F597105F-97B0-43C7-A775-BAC302F3A8F2"

Use this ssl_txn_id as the externalId in your payment request.

⚠️ Important Notice:
Before rendering the Elavon Lightbox payment form, your domain must be whitelisted in our system.

Lightbox sessions can only be initiated and displayed from approved (whitelisted) domains. If your domain is not whitelisted, the payment modal will fail to load due to security restrictions.

Please contact us at [email protected] to have your testing or production domain added to the allowed origin list before proceeding with integration.

External References

Did this answer your question?