First MOR receipt in 6 steps
Follow this guided path to create your first MOR-compliant fiscal receipt using sandbox in under 5 minutes.
What you'll need
- A computer with Python 3.8+ or Node.js 18+ installed
- A code editor (VS Code, PyCharm, or similar)
- 5 minutes of your time
Create your account
1 minSign up for a free developer account. No credit card needed.
Head to the Developer Portal and create your account. You'll need:
- A valid email address
- A password (minimum 8 characters)
Get your API key
30 secGenerate a test API key to start building in sandbox mode.
Once logged in, go to your dashboard and create an API key:
- Click API Keys in the sidebar
- Click Create New Key
- Give it a name like "Development"
- Copy your key — you'll need it in the next step
Keep it secret! Your API key is like a password. Never share it or commit it to version control.
Install the SDK
30 secAdd the MOR SDK to your project with your package manager.
Choose your language and install the official SDK:
pip install mor-sdknpm install @mor-api/sdkRegister a device
30 secEvery receipt needs a fiscal device. Register one in sandbox.
Before creating receipts, you need a registered fiscal device. In sandbox, this takes one API call:
# Register a Virtual Fiscal Device (VFD)
device = client.devices.register(
merchant_id="your-merchant-uuid",
device_name="My POS Terminal",
signing_algorithm="ECDSA-P256",
)
# Save the device ID — you'll need it for receipts
device_id = device["id"]
print(f"Device registered: {device_id}")In sandbox mode, devices are auto-approved. In production, devices go through Ministry approval before they can sign receipts.
VFD vs EFD: Most developers start with a Virtual Fiscal Device (cloud signing). For hardware devices (EFDs), see the EFD enrollment guide.
Create your first receipt
2 minMake your first API call and see a real receipt response.
Now the fun part — let's create a receipt:
from mor_sdk import MorClient
# Initialize with your API key
client = MorClient(api_key="sk_test_your_key_here")
# Create a simple receipt
receipt = client.receipts.create(
device_id=device_id, # From step 4
items=[
{
"name": "Coffee",
"quantity": 1,
"unit_price": 80.00,
"tax_category": "STANDARD"
},
{
"name": "Breakfast Special",
"quantity": 1,
"unit_price": 250.00,
"tax_category": "STANDARD"
}
],
payment_method="CASH"
)
# Print the fiscal code
print(f"Success! Fiscal code: {receipt.fiscal_code}")Run this code and you'll see a response like:
View your receipt
30 secCheck your dashboard to see the receipt you just created.
Go back to your dashboard and click Receiptsin the sidebar. You'll see the receipt you just created, complete with:
- Unique fiscal code
- Itemized breakdown with totals
- VAT calculated automatically (for Category A merchants)
- QR code for verification
Congratulations!
You've created your first MOR receipt. You're now ready to build tax-compliant applications for Ethiopian businesses.
What's next?
Stuck? Check out our error codes reference or contact support. We're here to help.