See the White Paper for discussion about inclusion in the Bitcoin transaction and expected changes to this specification.
This specification is written in the FlatBuffers schema language.
// On-Chain Invoicing Message Specification
// cf. https://oci.cash
// contact: Bill McGonigle bill@bfccomputing.com
// Version 1 – DRAFT 1 – 20210118
// This specification is expected to change before release!
namespace OCI.flatbuffers;
table PaymentSpec {
date:uint32;
repetitions:uint16;
frequency:Frequency;
amount:uint64; // satoshis
recipients:[Recipient];
}
table Recipient {
address:[ubyte];
percentage:uint16; // basis points – 55.25% = 5525
}
struct Frequency {
value:uint8; // 0 means no repeating
unit:uint8; // 0 minutes, 1 hours, 2 days, 3 weeks, 4 months, 5 years
}
table Invoice {
id:uint16;
denomination:uint8;
payment_specs:[PaymentSpec];
}
table Message {
version:uint8;
action:uint8; // 0 noop, 1 SUBSCRIBE, 2 PROPOSE, 3 CONFIRM, 4 INVOICE, 5 MESSAGE, 6 VOID
memo:[ubyte];
pubkey:[ubyte];
invoice:Invoice;
}
root_type Message;