Mayar Payment Integration
Integrate Mayar.id payment platform via MCP (Model Context Protocol) for Indonesian payment processing.
Prerequisites
Mayar.id account - Sign up at https://mayar.id
API Key - Generate from https://web.mayar.id/api-keys
mcporter configured - MCP must be set up in Clawdbot
Setup
1. Store API Credentials
mkdir -p ~/.config/mayar
cat > ~/.config/mayar/credentials << EOF
MAYAR_API_TOKEN="your-jwt-token-here"
EOF
chmod 600 ~/.config/mayar/credentials
2. Configure MCP Server
Add to config/mcporter.json:
{
"mcpServers": {
"mayar": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://mcp.mayar.id/sse",
"--header",
"Authorization:YOUR_API_TOKEN_HERE"
]
}
}
}
Replace YOUR_API_TOKEN_HERE with actual token.
3. Test Connection
mcporter list mayar
Should show 15+ available tools.
Core Workflows
Create Invoice with Payment Link
Most common use case: Generate payment link for customer.
mcporter call mayar.create_invoice \
name="Customer Name" \
email="[email protected]" \
mobile="\"628xxx\"" \
description="Order description" \
redirectURL="https://yoursite.com/thanks" \
expiredAt="2026-12-31T23:59:59+07:00" \
items='[{"quantity":1,"rate":500000,"description":"Product A"}]'
Returns:
{
"id": "uuid",
"transactionId": "uuid",
"link": "https://subdomain.myr.id/invoices/slug",
"expiredAt": 1234567890
}
Key fields:
mobile- MUST be string with quotes:"\"628xxx\""expiredAt- ISO 8601 format with timezoneitems- Array of{quantity, rate, description}redirectURL- Where customer goes after payment
WhatsApp Integration Pattern
// 1. Create invoice
const invoice = /* mcporter call mayar.create_invoice */;
// 2. Format message
const message = `
✅ *Order Confirmed!*
*Items:*
• Product Name
Rp ${amount.toLocaleString('id-ID')}
*TOTAL: Rp ${total.toLocaleString('id-ID')}*
💳 *Pembayaran:*
${invoice.data.link}
⏰ Berlaku sampai: ${expiryDate}
Terima kasih! 🙏
`.trim();
// 3. Send via WhatsApp
message({
action: 'send',
channel: 'whatsapp',
target: customerPhone,
message: message
});
Check Payment Status
# Get latest transactions (check if paid)
mcporter call mayar.get_latest_transactions page:1 pageSize:10
# Get unpaid invoices
mcporter call mayar.get_latest_unpaid_transactions page:1 pageSize:10
Filter by status: "created" (unpaid) → "paid" (success).
Other Operations
# Check account balance
mcporter call mayar.get_balance
# Get customer details
mcporter call mayar.get_customer_detail \
customerName="Name" \
customerEmail="[email protected]" \
page:1 pageSize:10
# Filter by time period
mcporter call mayar.get_transactions_by_time_period \
page:1 pageSize:10 \
period:"this_month" \
sortField:"createdAt" \
sortOrder:"DESC"
Common Patterns
Multi-Item Invoice
items='[
{"quantity":2,"rate":500000,"description":"Product A"},
{"quantity":1,"rate":1000000,"description":"Product B"}
]'
// Total: 2M (2×500K + 1×1M)
Subscription/Recurring
Use membership tools:
mcporter call mayar.get_membership_customer_by_specific_product \
productName:"Premium Membership" \
productLink:"your-product-link" \
productId:"product-uuid" \
page:1 pageSize:10 \
memberStatus:"active"
Payment Confirmation Flow
Option A: Webhook (Real-time)
Register webhook URL with Mayar
Receive instant payment notifications
Best for production
Option B: Polling (Simpler)
Poll
get_latest_transactionsevery 30-60sCheck for new payments
Best for MVP/testing
Troubleshooting
404 on payment link:
Link format:
https://your-subdomain.myr.id/invoices/slugCheck dashboard for correct subdomain
Default may be account name
Invalid mobile number:
Mobile MUST be string:
"\"628xxx\""(with escaped quotes)Format:
628xxxxxxxxxx(no + or spaces)
Expired invoice:
Default expiry is
expiredAttimestampCustomer can't pay after expiration
Create new invoice if needed
Reference Documentation
API Details: See references/api-reference.md
Integration Examples: See references/integration-examples.md
MCP Tools Reference: See references/mcp-tools.md
Production Checklist
[ ] Use production API key (not sandbox)
[ ] Setup webhook for payment notifications
[ ] Error handling for failed invoice creation
[ ] Store invoice IDs for tracking
[ ] Handle payment expiration
[ ] Customer database integration
[ ] Receipt/confirmation automation
Environments
Production:
Dashboard: https://web.mayar.id
API Base:
https://api.mayar.id/hl/v1/
Sandbox (Testing):
Dashboard: https://web.mayar.club
API Base:
https://api.mayar.club/hl/v1/