Skip to content

DRAFT OCI Message Specification

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;