Full Payment Upon Demand

Author: Accord Project

full-payment-upon-demand@1.0.1 Contract ^2.0.0 f10523b2de451c570f2f6120fe5472cdd95e75ea1617686acf1aca8e7837ec94

This is a one-time full payment clause applicable on demand.

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

Full Payment upon Demand

Payment made when a single milestone is reached

Template Text

After execution of this Agreement, "Dan" shall pay the full purchase price to "Jerome" in the amount of 3.14 EUR upon demand by "Jerome".

After execution of this Agreement, "Dan" shall pay the full purchase price to "Jerome" in the amount of 3.14 EUR upon demand by "Jerome".
After execution of this Agreement, {{buyer}} shall pay the full purchase price to {{seller}} in the amount of {{amount}} upon demand by {{seller}}.
{
  "$class": "org.accordproject.fullpaymentupondemand@0.2.0.TemplateModel",
  "buyer": "resource:org.accordproject.party@0.2.0.Party#Dan",
  "seller": "resource:org.accordproject.party@0.2.0.Party#Jerome",
  "amount": {
    "$class": "org.accordproject.money@0.3.0.MonetaryAmount",
    "doubleValue": 3.14,
    "currencyCode": "EUR"
  },
  "$identifier": "c8648553-53af-400d-bf8c-f2102a17c28c",
  "contractId": "c8648553-53af-400d-bf8c-f2102a17c28c"
}

Template Model

namespace org.accordproject.fullpaymentupondemand@0.2.0

import org.accordproject.contract@0.2.0.Contract from https://models.accordproject.org/accordproject/contract@0.2.0.cto
import org.accordproject.runtime@0.2.0.{Request,Response,State,Obligation} 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

// Template model
@template
asset TemplateModel extends Contract {
  o String buyer
  o String seller
  o MonetaryAmount amount
}

// Request
transaction PaymentDemand extends Request {
}

// Response
transaction PaymentDemandResponse extends Response {
}

transaction PaymentReceived extends Request {
}

transaction PaymentReceivedResponse extends Response {
}

// Event emitted when a payment obligation is triggered
event PaymentObligationEvent extends Obligation {
  o MonetaryAmount amount
  o String description
}

// State
asset FullPaymentUponDemandState extends State {
  o String status default="INITIALIZED"
}

Model Dependencies

Template Logic

Find the full logic for this template on on GitHub.

State Types

Type Sample JSON
org.accordproject.fullpaymentupondemand@0.2.0.FullPaymentUponDemandState
{
    "$class": "org.accordproject.fullpaymentupondemand@0.2.0.FullPaymentUponDemandState",
    "status": "INITIALIZED",
    "$identifier": "4c498c41-97d6-11f1-9df3-81e11c024ca9"
}
org.accordproject.runtime@0.2.0.State
{
    "$class": "org.accordproject.runtime@0.2.0.State",
    "$identifier": "4c498c40-97d6-11f1-9df3-81e11c024ca9"
}

Request Types

Type Sample JSON
org.accordproject.fullpaymentupondemand@0.2.0.PaymentDemand
{
    "$class": "org.accordproject.fullpaymentupondemand@0.2.0.PaymentDemand",
    "$timestamp": "2026-08-14T11:50:08.388Z"
}
org.accordproject.fullpaymentupondemand@0.2.0.PaymentReceived
{
    "$class": "org.accordproject.fullpaymentupondemand@0.2.0.PaymentReceived",
    "$timestamp": "2026-08-14T11:50:08.388Z"
}
org.accordproject.runtime@0.2.0.Request
{
    "$class": "org.accordproject.runtime@0.2.0.Request",
    "$timestamp": "2026-08-14T11:50:08.387Z"
}

Response Types

Type Sample JSON
org.accordproject.fullpaymentupondemand@0.2.0.PaymentDemandResponse
{
    "$class": "org.accordproject.fullpaymentupondemand@0.2.0.PaymentDemandResponse",
    "$timestamp": "2026-08-14T11:50:08.388Z"
}
org.accordproject.fullpaymentupondemand@0.2.0.PaymentReceivedResponse
{
    "$class": "org.accordproject.fullpaymentupondemand@0.2.0.PaymentReceivedResponse",
    "$timestamp": "2026-08-14T11:50:08.388Z"
}
org.accordproject.runtime@0.2.0.Response
{
    "$class": "org.accordproject.runtime@0.2.0.Response",
    "$timestamp": "2026-08-14T11:50:08.388Z"
}

Events Types

Type Sample JSON
org.accordproject.fullpaymentupondemand@0.2.0.PaymentObligationEvent
// sample generation failed: No concrete extending type for "concerto@1.0.0.Participant".

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.