Pay Coupon
{
"name": "pay_coupon",
"desc": "Pay due coupon to an account",
"readonly": false,
"args": [
{
"type": "address",
"name": "holding_address",
"desc": "Account Holding Address"
},
{
"type": "byte[]",
"name": "payment_info",
"desc": "Additional payment information (Optional)"
}
],
"returns": {
"type": "(uint64, uint64, byte[])",
"desc": "Paid coupon amount in denomination asset, Payment timestamp, Payment context"
},
"errors": [
{
"code": "UNAUTHORIZED",
"message": "Not authorized"
},
{
"code": "DEFAULTED",
"message": "Defaulted"
},
{
"code": "SUSPENDED",
"message": "Suspended operations"
},
{
"code": "INVALID_HOLDING_ADDRESS",
"message": "Invalid account holding address"
},
{
"code": "NO_UNITS",
"message": "No D-ASA units"
},
{
"code": "NO_DUE_COUPON",
"message": "No due coupon to pay"
},
{
"code": "PENDING_COUPON_PAYMENT",
"message": "Pending due coupon payment"
}
]
}
A reference implementation SHOULD NOT require an authorized caller.
If the D-ASA has an amortizing principal payment schedule, the call MUST update the Account's unit value.
If the call requires authorization, it MUST fail with the UNAUTHORIZED
error
code if not called by an authorized caller.
The call MUST fail with the DEFAULTED
error code if the asset is defaulted.
The call MUST fail with the SUSPENDED
error code if the asset operations are
suspended.
The call MUST fail with the INVALID_HOLDING_ADDRESS
error code if the Account
does not exist.
The call MUST fail with the NO_UNTIS
error code if the Account has no D-ASA
units.
The call MUST fail with the NO_DUE_COUPON
error code if there is no due
coupon left to pay for the Account.
The call MUST fail with the PENDING_COUPON_PAYMENT
error code if there is
an old due coupon still to be paid to any account.
If the D-ASA has on-chain payment agent, the call MUST fail with the NOT_ENOUGH_FUNDS
error code if funds are not enough for the payment.