Customers and revenue / BLOCK KIT JSON
Share a successful payment with amount, currency, invoice, and subscription context.
Blank optional fields are omitted. Fallback text updates with your fields.
Approximate Slack rendering. Buttons are visual previews; no actions are sent.
Local validation checks the supported schema. It does not guarantee Slack API acceptance.
Manual editing and validation run in your browser. Opening Slack’s Builder shares the message with Slack.
Payment received · USD 240.00 Fieldwork Studio renewed their Team subscription. The payment was successfully captured. Amount paid: USD 240.00 Invoice: INV-2026-1084 Billing period: 20 Oct – 19 Nov 2026 Plan: Team · 12 seats Payment confirmed · No action needed View invoice: https://example.com/billing/invoices/1084
Download the payload or use this command in your own terminal. Replace the placeholder URL with your Slack incoming webhook. Keep the real URL secret. This tool never sends a Slack message.
curl --request POST \
--header 'Content-Type: application/json' \
--data-binary @- \
'https://hooks.slack.com/services/YOUR/WEBHOOK/URL' <<'SLACK_MESSAGE_JSON'
{
"text": "Payment received · USD 240.00\nFieldwork Studio renewed their Team subscription. The payment was successfully captured.\nAmount paid: USD 240.00\nInvoice: INV-2026-1084\nBilling period: 20 Oct – 19 Nov 2026\nPlan: Team · 12 seats\nPayment confirmed · No action needed\nView invoice: https://example.com/billing/invoices/1084",
"blocks": [
{
"type": "header",
"text": {
"type": "plain_text",
"text": "Payment received · USD 240.00"
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*Fieldwork Studio* renewed their Team subscription. The payment was successfully captured."
}
},
{
"type": "section",
"fields": [
{
"type": "mrkdwn",
"text": "*Amount paid*\nUSD 240.00"
},
{
"type": "mrkdwn",
"text": "*Invoice*\nINV-2026-1084"
},
{
"type": "mrkdwn",
"text": "*Billing period*\n20 Oct – 19 Nov 2026"
},
{
"type": "mrkdwn",
"text": "*Plan*\nTeam · 12 seats"
}
]
},
{
"type": "context",
"elements": [
{
"type": "mrkdwn",
"text": "Payment confirmed · No action needed"
}
]
},
{
"type": "divider"
},
{
"type": "actions",
"elements": [
{
"type": "button",
"text": {
"type": "plain_text",
"text": "View invoice"
},
"action_id": "invoice-url",
"url": "https://example.com/billing/invoices/1084"
}
]
}
]
}
SLACK_MESSAGE_JSONGive revenue and customer teams a concise receipt when a payment succeeds. The amount and currency are prominent, with invoice and billing period details that make the event unambiguous.
Use the settled amount from the payment event, not a projected invoice total. Always include currency. Keep card information out of the message and link to your authenticated billing dashboard.
Send from a verified payment provider webhook and deduplicate by event ID. Posting this message does not create a receipt, fulfill an order, or change a subscription.
To post this JSON, create a Slack app with an incoming webhook for your channel, or use chat.postMessage with the appropriate bot token and permissions. Keep credentials on your server.
For buttons, enable Interactivity and handle Slack’s interaction requests, including URL buttons. Acknowledge requests promptly. This preview does not execute actions, authorize users, or save decisions.
Use the top-level fallback text for notifications and accessibility. Test your final payload in Slack; local validation covers the declared subset, and visual details vary by client.
Slack interaction setup ↗