Installment Sale

Author: Accord Project

installment-sale@5.2.0 Clause ^0.26.0 8b52e7c6cbd426f8275bc20fb7afc1ccabfce1cc65926f1ce0c32ff2b6e0dd9d

This is a clause for a simple installment sale.

Download Archive Download Compiled Archive Open in Template Playground Open in VSCode Web

Installment Sale

A simple clause for a sale paid in installments.

Template Text

"Dan" agrees to pay to "Ned" the total sum 10,000.00 EUR, in the manner following:

500.00 EUR is to be paid at closing, and the remaining balance of 9,500.00 EUR shall be paid as follows:

500.00 EUR or more per month on the first day of each and every month, and continuing until the entire balance, including both principal and interest, shall be paid in full -- provided, however, that the entire balance due plus accrued interest and any other amounts due here-under shall be paid in full on or before 24 months.

Monthly payments, which shall start on month 3, include both principal and interest with interest at the rate of 1.5%, computed monthly on the remaining balance from time to time unpaid.

"Dan" agrees to pay to "Ned" the total sum 10,000.00 EUR, in the manner following:

500.00 EUR is to be paid at closing, and the remaining balance of 9,500.00 EUR shall be paid as follows:

500.00 EUR or more per month on the first day of each and every month, and continuing until the entire balance, including both principal and interest, shall be paid in full -- provided, however, that the entire balance due plus accrued interest and any other amounts due here-under shall be paid in full on or before 24 months.

Monthly payments, which shall start on month 3, include both principal and interest with interest at the rate of 1.5%, computed monthly on the remaining balance from time to time unpaid.
{{BUYER}} agrees to pay to {{SELLER}} the total sum {{INITIAL_DUE as "0,0.00 CCC"}}, in the manner following:

{{DUE_AT_CLOSING as "0,0.00 CCC"}} is to be paid at closing, and the remaining balance of {{TOTAL_DUE_BEFORE_CLOSING as "0,0.00 CCC"}} shall be paid as follows:

{{MIN_PAYMENT as "0,0.00 CCC"}} or more per month on the first day of each and every month, and continuing until the entire balance, including both principal and interest, shall be paid in full -- provided, however, that the entire balance due plus accrued interest and any other amounts due here-under shall be paid in full on or before 24 months.

Monthly payments, which shall start on month {{FIRST_MONTH}}, include both principal and interest with interest at the rate of {{INTEREST_RATE}}%, computed monthly on the remaining balance from time to time unpaid.
{
  "$class": "org.accordproject.installmentsale@0.2.0.TemplateModel",
  "BUYER": "resource:org.accordproject.party.Party#Dan",
  "SELLER": "resource:org.accordproject.party.Party#Ned",
  "INITIAL_DUE": {
    "$class": "org.accordproject.money@0.3.0.MonetaryAmount",
    "doubleValue": 10000,
    "currencyCode": "EUR"
  },
  "INTEREST_RATE": 1.5,
  "TOTAL_DUE_BEFORE_CLOSING": {
    "$class": "org.accordproject.money@0.3.0.MonetaryAmount",
    "doubleValue": 9500,
    "currencyCode": "EUR"
  },
  "MIN_PAYMENT": {
    "$class": "org.accordproject.money@0.3.0.MonetaryAmount",
    "doubleValue": 500,
    "currencyCode": "EUR"
  },
  "DUE_AT_CLOSING": {
    "$class": "org.accordproject.money@0.3.0.MonetaryAmount",
    "doubleValue": 500,
    "currencyCode": "EUR"
  },
  "FIRST_MONTH": 3,
  "$identifier": "ae1b4bc2-e558-47d2-9694-39ce42819783",
  "clauseId": "ae1b4bc2-e558-47d2-9694-39ce42819783"
}

Template Model

namespace org.accordproject.installmentsale@0.2.0

import org.accordproject.contract@0.2.0.Clause from https://models.accordproject.org/accordproject/contract@0.2.0.cto
import org.accordproject.runtime@0.2.0.{Request,Response} from https://models.accordproject.org/accordproject/runtime@0.2.0.cto
import org.accordproject.money@0.3.0.MonetaryAmount from https://models.accordproject.org/money@0.3.0.cto

transaction Installment extends Request {
  o MonetaryAmount amount
}

transaction ClosingPayment extends Request {
  o MonetaryAmount amount
}

transaction Balance extends Response {
  o MonetaryAmount balance
  o String balanceCurrency
  o MonetaryAmount total_paid
  o String totalPaidCurrency
}

enum ContractStatus {
  o WaitingForFirstDayOfNextMonth
  o Fulfilled
}

concept InstallmentSaleState identified {
  o ContractStatus status
  o MonetaryAmount balance_remaining
  o Integer next_payment_month
  o MonetaryAmount total_paid
}

event InstallmentSalePaymentEvent {
  o MonetaryAmount amount
  o String description
}

/**
 * The template model
 */
@template
asset TemplateModel extends Clause {
  o String BUYER
  o String SELLER
  o Double INITIAL_DUE
  o String CURRENCY_CODE
  o Double INTEREST_RATE
  o MonetaryAmount TOTAL_DUE_BEFORE_CLOSING
  o MonetaryAmount MIN_PAYMENT
  o Double DUE_AT_CLOSING
  o Integer FIRST_MONTH
}

Model Dependencies

Template Logic

Find the full logic for this template on on GitHub.

State Types

Type Sample JSON
org.accordproject.runtime@0.2.0.State
{
    "$class": "org.accordproject.runtime@0.2.0.State",
    "$identifier": "842b2690-5150-11f1-8345-a1a01b4d26b5"
}

Request Types

Type Sample JSON
org.accordproject.installmentsale@0.2.0.ClosingPayment
{
    "$class": "org.accordproject.installmentsale@0.2.0.ClosingPayment",
    "amount": {
        "$class": "org.accordproject.money@0.3.0.MonetaryAmount",
        "doubleValue": 149.887,
        "currencyCode": "CDF"
    },
    "$timestamp": "2026-05-16T18:56:08.171+01:00"
}
org.accordproject.installmentsale@0.2.0.Installment
{
    "$class": "org.accordproject.installmentsale@0.2.0.Installment",
    "amount": {
        "$class": "org.accordproject.money@0.3.0.MonetaryAmount",
        "doubleValue": 63.178,
        "currencyCode": "CUP"
    },
    "$timestamp": "2026-05-16T18:56:08.169+01:00"
}
org.accordproject.runtime@0.2.0.Request
{
    "$class": "org.accordproject.runtime@0.2.0.Request",
    "$timestamp": "2026-05-16T18:56:08.165+01:00"
}

Response Types

Type Sample JSON
org.accordproject.installmentsale@0.2.0.Balance
{
    "$class": "org.accordproject.installmentsale@0.2.0.Balance",
    "balance": {
        "$class": "org.accordproject.money@0.3.0.MonetaryAmount",
        "doubleValue": 93.895,
        "currencyCode": "KYD"
    },
    "balanceCurrency": "Lorem mollit id nulla.",
    "total_paid": {
        "$class": "org.accordproject.money@0.3.0.MonetaryAmount",
        "doubleValue": 41.52,
        "currencyCode": "TJS"
    },
    "totalPaidCurrency": "Amet do.",
    "$timestamp": "2026-05-16T18:56:08.180+01:00"
}
org.accordproject.runtime@0.2.0.Response
{
    "$class": "org.accordproject.runtime@0.2.0.Response",
    "$timestamp": "2026-05-16T18:56:08.173+01:00"
}

Events Types

Type Sample JSON

Technical Integration

Please refer to the Accord Project documentation for how to use a template or integrate it within your application.

View the Latest code for this template on GitHub.