Finance: Statement Images & Account Summaries
Financial statement images and account summary graphics turn your app's data into shareable, visual content that users actually want to post. Think Spotify Wrapped, but for money.
Every December, millions of people share their Spotify listening stats. It's free marketing at a scale money can't buy. Fintech apps are sitting on data that's just as personal and just as shareable. But most finance apps present spending breakdowns and investment returns as tables buried in a dashboard. Nobody screenshots a table.
I've helped three fintech startups build year-in-review campaigns and monthly summary cards. The approach is always the same: turn raw numbers into templated images that users share. Here's how we do it.
Types of financial statement imagesTypes of Financial Statement Images
Monthly account summariesMonthly Account Summaries
A visual snapshot of the month's financial activity.
What to include:
- Total income and spending
- Net savings (income minus spending)
- Top 3-5 spending categories with percentages
- Comparison to previous month (up/down arrows)
- Account balance (masked or omitted for privacy)
Spending category breakdownsSpending Category Breakdowns
Visual pie chart or bar chart showing where money went.
- Category names and percentages
- Color-coded segments
- Most notable category highlighted
- Comparison to national average (optional but engaging)
Year in review wrapped styleYear-in-Review ("Wrapped" Style)
The big annual content play. According to Plaid's Fintech Effect Report, 80% of Americans now use fintech apps, and they want to share their financial wins.
- Total transactions processed
- Total amount saved
- Biggest spending category
- Longest streak of staying under budget
- Fun stats ("You bought coffee 247 times")
- Financial personality type ("The Saver," "The Investor," "The Spontaneous Spender")
Investment portfolio snapshotsInvestment Portfolio Snapshots
For investment and trading apps:
- Portfolio total return (percentage and dollar amount)
- Top performing holding
- Asset allocation breakdown
- Comparison to benchmark (S&P 500, etc.)
Savings goal progressSavings Goal Progress
- Goal name ("Emergency Fund," "Vacation," "New Car")
- Progress bar with percentage
- Amount saved vs. target
- Estimated completion date
Transaction receiptsTransaction Receipts
Individual transaction confirmations as branded images:
- Transaction amount and type
- Merchant name
- Date and time
- Running balance (optional)
Privacy first designPrivacy-First Design
Financial data is sensitive. Every image you generate needs to be designed with privacy in mind.
Rules:
| Data Type | In-App Image | Shareable Image |
|---|---|---|
| Account balance | Last 4 digits only | Never show |
| Transaction amounts | Show full | Show percentages only |
| Income | Show if user opts in | Never show |
| Spending categories | Show amounts | Show percentages only |
| Account numbers | Never show full | Never show |
| Personal name | Show | Show first name only |
Two template variants for each image type:
- Private version: full details, for the user's eyes only (in-app dashboard, email)
- Shareable version: percentages and categories only, no dollar amounts (social media)
This is a critical design decision. Users want to share their financial personality ("I spent 40% on food!") without revealing their salary.
Generating financial summary imagesGenerating Financial Summary Images
Monthly summaryMonthly Summary
curl -X POST 'https://render.imejis.io/v1/MONTHLY_SUMMARY_TEMPLATE' \
-H 'dma-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"user_name": {
"text": "Alex"
},
"month": {
"text": "March 2026"
},
"total_spent": {
"text": "$3,247"
},
"total_income": {
"text": "$5,800"
},
"net_saved": {
"text": "+$2,553"
},
"top_category": {
"text": "Housing (35%)"
},
"category_2": {
"text": "Food & Dining (22%)"
},
"category_3": {
"text": "Transportation (12%)"
},
"vs_last_month": {
"text": "↓ 8% less spending"
}
}'Shareable version no dollar amountsShareable Version (No Dollar Amounts)
{
"user_name": { "text": "Alex" },
"month": { "text": "March 2026" },
"headline": { "text": "I saved 44% of my income this month" },
"category_1": { "text": "Housing – 35%" },
"category_2": { "text": "Food – 22%" },
"category_3": { "text": "Transport – 12%" },
"category_4": { "text": "Entertainment – 8%" },
"category_5": { "text": "Other – 23%" },
"app_branding": { "text": "Tracked with YourApp" }
}Building a year in review campaignBuilding a Year-in-Review Campaign
Year-in-review is your biggest content marketing opportunity. Here's how to execute it.
Step 1 aggregate user dataStep 1: Aggregate User Data
In November, start computing annual stats for each user:
def compute_year_stats(user_id, year=2026):
transactions = get_transactions(user_id, year)
return {
'total_transactions': len(transactions),
'total_spent': sum(t['amount'] for t in transactions if t['type'] == 'debit'),
'total_saved': compute_savings(user_id, year),
'top_category': get_top_category(transactions),
'top_merchant': get_top_merchant(transactions),
'coffee_count': count_merchant_type(transactions, 'coffee'),
'longest_budget_streak': get_budget_streak(user_id, year),
'personality_type': assign_personality(transactions),
}Step 2 design multi slide templatesStep 2: Design Multi-Slide Templates
Year-in-review works best as a series of images (like Instagram carousel or Stories):
| Slide | Content |
|---|---|
| 1 | "Your 2026 in Review" with name and branding |
| 2 | Total transactions and spending overview |
| 3 | Top spending category with fun visual |
| 4 | Savings highlight and biggest achievement |
| 5 | Fun stats ("You ordered takeout 89 times") |
| 6 | Financial personality type |
| 7 | CTA: "Share your stats" |
Create a template for each slide in Imejis.io.
Step 3 generate for all usersStep 3: Generate for All Users
async function generateYearInReview(userId) {
const stats = await computeYearStats(userId, 2026)
const slides = [
{ template: "YIR_INTRO", data: { user_name: { text: stats.firstName } } },
{
template: "YIR_OVERVIEW",
data: {
transactions: { text: stats.totalTransactions.toLocaleString() },
total_spent: { text: `$${stats.totalSpent.toLocaleString()}` },
},
},
{
template: "YIR_TOP_CATEGORY",
data: {
category: { text: stats.topCategory.name },
percentage: { text: `${stats.topCategory.pct}%` },
},
},
{
template: "YIR_SAVINGS",
data: {
saved: { text: `$${stats.totalSaved.toLocaleString()}` },
streak: { text: `${stats.longestBudgetStreak} days` },
},
},
{
template: "YIR_FUN_STATS",
data: {
coffee: { text: `${stats.coffeeCount} coffees` },
top_merchant: { text: stats.topMerchant },
},
},
{
template: "YIR_PERSONALITY",
data: { type: { text: stats.personalityType } },
},
]
const images = []
for (const slide of slides) {
const image = await generateImage(slide.template, slide.data)
images.push(image)
}
await saveYearInReview(userId, images)
await sendPushNotification(userId, "Your 2026 Year in Review is ready!")
}Step 4 make it shareableStep 4: Make It Shareable
Add "Share to Instagram Stories" and "Share to Twitter" buttons. Pre-generate the shareable (privacy-safe) versions alongside the full versions.
The goal: users share at least one slide. Each shared image has your app's branding. Their friends see it, get curious, download your app.
For social sharing best practices, check our social media image automation guide.
Savings goal progress cardsSavings Goal Progress Cards
These are small but high-impact. When a user hits a savings milestone, celebrate it:
{
"user_name": { "text": "Alex" },
"goal_name": { "text": "Emergency Fund" },
"progress_pct": { "text": "75%" },
"amount_saved": { "text": "$7,500" },
"target_amount": { "text": "$10,000" },
"eta": { "text": "Est. completion: July 2026" }
}These milestone images are push notification content gold. "You're 75% to your Emergency Fund goal!" with a personalized image gets opened at 3-4x the rate of a text-only notification.
Security considerationsSecurity Considerations
Financial images require extra care:
- Use HTTPS for all API calls: never send financial data over unencrypted connections
- Mask sensitive data before sending: the API doesn't need full account numbers
- Don't cache shareable images with private data: separate private and shareable templates
- Comply with your regulator's guidelines: PCI DSS for payment data, SOC 2 for general security
- Log image generation requests: audit trail for compliance
For more on API security in general, read our API security best practices guide.
Cost at scaleCost at Scale
| Fintech Type | Monthly Images | Plan | Cost |
|---|---|---|---|
| Early-stage app (1K users) | ~1,000 | Starter | $14.99/month |
| Growing app (10K users) | ~10,000 | Pro | $24.99/month |
| Year-in-review campaign (100K users × 6 slides) | 600,000 (one-time) | Enterprise | Custom |
The year-in-review campaign is a spike. Plan for it in advance with Enterprise pricing if you have a large user base. Monthly summaries are steady-state and predictable. As of September 2026, plan prices are on the pricing page.
Check our pricing for current tier details.
Your users data deserves better than a spreadsheetYour Users' Data Deserves Better Than a Spreadsheet
Every fintech app sits on rich, personal data. Most of it lives in dashboards that users check once and forget.
Turn that data into images people want to save, share, and celebrate. Monthly summaries that feel like a magazine. Year-in-review content that goes viral. Savings milestones that make users proud.
The data already exists. The templates are the easy part.