Skip to content

Quickstart

Phone numbers

from cedikit import phone

phone.normalise("024 412 3456")  # '+233244123456'
phone.format("+233244123456", "pretty")  # '024 412 3456'
phone.is_valid("02441234")  # False
phone.likely_network("0244123456").network  # 'MTN' (likely - numbers can be ported)
phone.mask("0244123456")  # '024****456'

report = phone.clean_column(["0244123456", "+233 50 123 4567", "12345"])
print(report)  # 3 numbers: 0 valid, 2 fixed, 1 invalid

Money

from cedikit import money, Cedi

money.parse("GH₵1.2k")  # Decimal('1200.00')
money.format("1200.5")  # 'GH₵ 1,200.50'
money.to_words("1200.50")  # 'One thousand two hundred Ghana cedis and fifty pesewas'
money.format(1200.5)  # CediTypeError: floats can't represent pesewas exactly

sum([Cedi("1.10"), Cedi("2.20")])  # Cedi('3.30') - exact

MoMo SMS → ledger

from cedikit import sms
from cedikit.ledger import Ledger

result = sms.parse(message_text, sender="MobileMoney")
if result.ok:
    tx = result.transaction
    print(tx.type, tx.amount, tx.counterparty, tx.balance, tx.confidence)

ledger = Ledger.from_messages(inbox_messages, sender="MobileMoney").categorise()
print(ledger.summary())
ledger.cash_flow("week")
ledger.top_counterparties(5, by="value")
ledger.balance_gaps()  # places where a message is probably missing
ledger.export("september.xlsx")  # Transactions, Summary, Cash flow, Categories
ledger.plot(path="cash_flow.png")

Fake payment alerts

from cedikit import fraud

report = fraud.check(message_text, sender="+233591234567", history=ledger.transactions)
print(report)
# Risk: HIGH (score 0.99)
# Reasons:
#   - Sent from a personal phone number (+233 59 123 4567), not an official sender ID ...

Always pass the sender when you have it: it is the strongest single signal.

Fees

from datetime import date
from cedikit import fees

print(fees.estimate("TELECEL", "send_other_network", "40.00", date(2026, 9, 25)))

Command line

cedikit phone clean customers.csv --column phone
cedikit sms parse inbox.txt --sender MobileMoney --export xlsx
cedikit fraud check "Cash receive for 200.00 ..." --sender 0551234567

See Command line for everything.