Payment Upon Signature

Author: Accord Project

payment-upon-signature@1.0.1 Contract ^2.0.0 5d92a8d4dd37ec40251bf1bab73eb561d3ee330bde5a95bac2569c697534b9e4

This is a generic payment clause applicable to any type of contract that requires some payment at the time of signature.

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

Payment Upon Signature

This is a generic payment clause applicable to any type of contract that requires some payment at the time of signature.

Template Text

Upon the signing of this Agreement, "Dave" shall pay 50 USD to "Dan".

Upon the signing of this Agreement, "Dave" shall pay 50 USD to "Dan".
Upon the signing of this Agreement, {{buyer}} shall pay {{amount}} to {{seller}}.
{
  "$class": "org.accordproject.paymentuponssignature@0.2.0.TemplateModel",
  "buyer": "resource:org.accordproject.party@0.2.0.Party#Dave",
  "seller": "resource:org.accordproject.party@0.2.0.Party#Dan",
  "amount": {
    "$class": "org.accordproject.money@0.3.0.MonetaryAmount",
    "doubleValue": 50,
    "currencyCode": "USD"
  },
  "$identifier": "86070b3c-23db-4091-9bc5-704148c12668",
  "contractId": "86070b3c-23db-4091-9bc5-704148c12668"
}

Template Model

namespace org.accordproject.paymentuponssignature@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

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

// Triggered when contract is signed
transaction ContractSigned extends Request {
}

transaction ContractSignedResponse 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 PaymentUponSignatureState 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.paymentuponssignature@0.2.0.PaymentUponSignatureState
{
    "$class": "org.accordproject.paymentuponssignature@0.2.0.PaymentUponSignatureState",
    "status": "INITIALIZED",
    "$identifier": "4f9f9511-97d6-11f1-9df3-81e11c024ca9"
}
org.accordproject.runtime@0.2.0.State
{
    "$class": "org.accordproject.runtime@0.2.0.State",
    "$identifier": "4f9f9510-97d6-11f1-9df3-81e11c024ca9"
}

Request Types

Type Sample JSON
org.accordproject.paymentuponssignature@0.2.0.ContractSigned
{
    "$class": "org.accordproject.paymentuponssignature@0.2.0.ContractSigned",
    "$timestamp": "2026-08-14T11:50:13.985Z"
}
org.accordproject.paymentuponssignature@0.2.0.PaymentReceived
{
    "$class": "org.accordproject.paymentuponssignature@0.2.0.PaymentReceived",
    "$timestamp": "2026-08-14T11:50:13.985Z"
}
org.accordproject.runtime@0.2.0.Request
{
    "$class": "org.accordproject.runtime@0.2.0.Request",
    "$timestamp": "2026-08-14T11:50:13.984Z"
}

Response Types

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

Events Types

Type Sample JSON
org.accordproject.paymentuponssignature@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.