Agent skill
x9-template
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/other/other/x9-template
SKILL.md
X9.150 Template Creator
You generate payment request template JSON files for testing the X9.150 specification. Templates are partial PaymentRequest payloads — qr_generator.py adds runtime fields (id, revision, createdAt, timestamps, status, qrCodeContent, paymentNotification).
Instructions
-
Understand the scenario the user wants:
- Restaurant with tips
- Deferred invoice (utility bill, B2B)
- Marketplace with ultimateCreditor
- Multi-currency with blockchain
- Simple immediate payment
- Custom scenario
-
Read an existing template for reference —
templates/01_coffee_shop.jsonis the canonical example -
Generate the template following the exact schema from
spec/openapi.yaml -
Write the file to
templates/with the next available number prefix (e.g.,15_*.json) -
Validate the generated template's structure matches the spec
Template Structure
A template contains only the fields that are known at design time:
{
"creditor": {
"name": "Business Name",
"phone": "+15551234567",
"email": "[email protected]",
"address": {
"line1": "123 Main St",
"city": "City",
"state": "ST",
"postalCode": "12345",
"country": "US"
},
"MCC": "5812"
},
"bill": {
"paymentTiming": "immediate",
"description": "Description of goods/services",
"order": {
"number": "ORD-2026-001",
"date": "2026-01-15"
},
"amountDue": {
"amount": 1500,
"currency": "USD"
},
"tip": {
"allowed": true,
"range": { "min": 100, "max": 300 },
"presets": [150, 200, 250]
}
},
"additionalInformation": [
{ "key": "Item 1", "value": "10.00" },
{ "key": "Item 2", "value": "5.00" }
],
"paymentMethods": [
{
"currency": "USD",
"amount": 1500,
"networks": {
"FedNow": {
"routingNumber": "123456789",
"accountNumber": "9876543210",
"protectionType": "tokenized"
}
}
}
]
}
Scenario-Specific Fields
Restaurant with Tips
"tip": {
"allowed": true,
"range": { "min": 100, "max": 300 },
"presets": [150, 180, 200, 250]
}
- Tip values are percentage × 10 (e.g., 150 = 15.0%)
range.min/max: 0–999presets: 1–10 suggested percentages
Deferred Invoice
"bill": {
"paymentTiming": "deferred",
"invoice": {
"number": "INV-2026-001",
"date": "2026-01-15",
"dueDate": "2026-02-15T23:59:59.000Z",
"invoicee": {
"name": "Customer Corp",
"email": "[email protected]",
"address": {
"city": "New York",
"country": "US"
}
}
},
"amountDue": { "amount": 500000, "currency": "USD" }
}
paymentTiming: "deferred"REQUIRESinvoice.dueDatedueDateuses full Timestamp format with milliseconds
Marketplace with UltimateCreditor
"creditor": {
"name": "Marketplace Platform Inc",
"MCC": "5999",
"address": { "city": "Austin", "state": "TX", "country": "US" },
"ultimateCreditor": {
"name": "Sub-Merchant Store",
"account": {
"id": "seller_12345",
"schemaName": "marketplace_id"
},
"address": { "city": "Portland", "state": "OR", "country": "US" }
}
}
Multi-Currency with Blockchain
"paymentMethods": [
{
"currency": "USD",
"amount": 5000,
"networks": {
"FedNow": {
"routingNumber": "123456789",
"accountNumber": "9876543210",
"protectionType": "tokenized"
}
}
},
{
"currency": "USDC",
"amount": 50000000,
"networks": {
"Solana": {
"address": "emjE6JshbysqU93MiTVFpjUQSo6GHjEhUNCLrSBjuiC"
}
}
}
]
- USDC on Solana has 6 decimals: $50.00 = 50000000 base units
- USD in cents: $50.00 = 5000
Adjustments (Discounts/Surcharges)
"amountDue": {
"amount": 10000,
"currency": "USD",
"adjustments": [
{
"explanation": "Early payment discount (2%)",
"amount": -200,
"validUntil": "2026-02-01T23:59:59.000Z"
},
{
"explanation": "Late fee after due date",
"amount": 500,
"validUntil": "2026-03-01T23:59:59.000Z"
}
]
}
- Negative amounts = discounts
- Positive amounts = surcharges
- Each adjustment has a
validUntilexpiration
Common MCC Codes
| MCC | Business Type |
|---|---|
| 5411 | Grocery Stores |
| 5812 | Restaurants |
| 5814 | Fast Food |
| 5912 | Drug Stores |
| 5999 | Miscellaneous Retail |
| 4900 | Utilities |
| 7011 | Hotels |
| 7230 | Barber/Beauty Shops |
| 8011 | Medical Services |
| 8299 | Schools/Education |
Validation Checklist
Before writing the template, verify:
-
creditor.MCCis exactly 4 digits -
creditor.addresshascityandcountry -
countryis 2 uppercase letters -
amountvalues are integers in minor units - Phone numbers start with
+and digits only - String fields match
^[ -~]*$(printable ASCII) - No field exceeds its
maxLength - If
paymentTiming: "deferred",invoice.dueDateexists - If
tip.allowed: true,tip.rangehasminandmax -
paymentMethodshasvalidUntil— use a placeholder that qr_generator.py will override - File uses 4-space indentation, no trailing whitespace
Naming Convention
Files: templates/NN_descriptive_name.json
NN= 2-digit sequence number (next available)- Use underscores, lowercase
- Descriptive of the scenario (e.g.,
15_hardware_store.json)
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?