Overview: Settings

View as Markdown

Configure your PaymentKit account settings to customize branding, billing behavior, notifications, and more.

Account settings

Access settings through the dashboard sidebar under Settings.

Brand & Identity

Customize how your business appears to customers:

SettingDescription
Company nameYour business name shown on invoices and checkout
LogoDisplayed on hosted pages, emails, and invoices
Primary colorBrand color used in checkout and portal
Support emailContact email shown to customers
Support URLLink to your help center or support page

Upload a high-resolution logo (at least 512x512px) for best results across all devices and email clients.

Custom domain

Use your own domain for hosted pages:

  1. Navigate to Settings > Custom Domain
  2. Enter your desired subdomain (e.g., pay.yourcompany.com)
  3. Add the provided DNS records to your domain
  4. Wait for verification (usually within an hour)

Once configured, your checkout and portal URLs will use your custom domain instead of paymentkit.com.

Business details

Configure your business information for invoices and tax compliance:

FieldDescription
Business addressYour registered business address
Tax IDVAT, GST, or other tax identification number
Default currencyPrimary currency for new prices
Default timezoneUsed for reports and scheduled operations

Billing settings

Invoice settings

Configure default invoice behavior:

SettingDefaultDescription
Invoice numberingSequentialNumber format (e.g., INV-0001, INV-0002)
Invoice prefixINVPrefix for invoice numbers
Footer textEmptyCustom text shown at bottom of invoices
Payment termsDue immediatelyDefault days until payment is due

Preview an invoice PDF

Generate a sample invoice PDF that uses your account’s real invoice settings and branding (logo, address, tax IDs, footer) but with mock line-item data. Use it to iterate on invoice styling without issuing a real invoice.

$curl -X POST https://app.paymentkit.com/api/accounts/{account_id}/invoice-pdf/preview \
> -H "Authorization: Bearer sk_live_..." \
> --output invoice-preview.pdf

The endpoint takes no request body and returns the PDF bytes directly (Content-Type: application/pdf, served inline as invoice-preview.pdf).

The preview reflects your current invoice settings and brand settings — update those first, then regenerate the preview to see your changes.

This endpoint requires the Settings · View permission.

Dunning behavior

Configure what happens when payments fail:

BehaviorSubscriptionInvoiceDescription
Cancel and mark uncollectibleCancelledUncollectibleDefault - clean break
Cancel and keep openCancelledOpenPursue collection externally
Keep past due and mark uncollectiblePast DueUncollectibleMaintain service, write off debt
Keep past due and keep openPast DueOpenMaintain service, continue collection

Notification settings

Notification settings control the merchant-facing alerts your team receives about payment activity — both via Slack and via email to your own team (distinct from the customer-facing emails below). Configure them under Settings > Notifications or via the API.

Slack notifications

Send real-time alerts to your team’s Slack channels when payments succeed or fail. PaymentKit posts to one or more Slack incoming webhook URLs.

Get notification settings

$curl https://app.paymentkit.com/api/accounts/{account_id}/notification-settings \
> -H "Authorization: Bearer sk_live_..."

Response:

1{
2 "invoice": {
3 "on_finalized": false,
4 "on_paid": false
5 },
6 "dunning": {
7 "failed_payment": false
8 },
9 "slack_enabled": true,
10 "slack_webhook_urls": [
11 "https://hooks.slack.com/services/T***/B***/***"
12 ],
13 "slack_payment_succeeded": true,
14 "slack_payment_failed": true,
15 "email_enabled": true,
16 "emails_to_notify": ["ops@example.com"],
17 "email_payment_succeeded": false,
18 "email_payment_failed": true,
19 "email_config": {
20 "from_email": "billing@example.com",
21 "reply_to_email": "support@example.com",
22 "email_signature_name": "John Smith",
23 "email_signature_title": "Billing Department",
24 "cc_recipients": ["cc1@merchant.com"],
25 "bcc_recipients": ["bcc1@merchant.com"],
26 "primary_color": "#FF5733",
27 "background_color": "#E8E8E8",
28 "text_color": "#333333"
29 }
30}

Slack webhook URLs are secrets. The GET response redacts each stored URL to a masked sentinel (https://hooks.slack.com/services/T***/B***/***) so it never exposes the raw URL. Use it only to display that webhooks are configured — never re-send a masked value back to the API.

Update notification settings

Send only the fields you want to change. Omitted fields are left untouched.

$curl -X PATCH https://app.paymentkit.com/api/accounts/{account_id}/notification-settings \
> -H "Authorization: Bearer sk_live_..." \
> -H "Content-Type: application/json" \
> -d '{
> "slack_enabled": true,
> "slack_webhook_urls": [
> "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX"
> ]
> }'

Settings fields:

FieldTypeDescription
invoiceobjectInvoice notification toggles (on_finalized, on_paid; both boolean)
dunningobjectDunning notification toggles (failed_payment; boolean)
slack_enabledbooleanMaster switch for Slack notifications (default: false)
slack_webhook_urlsstring[]One or more Slack incoming webhook URLs to post to
slack_payment_succeededbooleanPost to Slack when a payment succeeds
slack_payment_failedbooleanPost to Slack when a payment fails
email_enabledbooleanMaster switch for team email notifications (default: false)
emails_to_notifystring[]Team email addresses that receive notifications
email_payment_succeededbooleanEmail your team when a payment succeeds
email_payment_failedbooleanEmail your team when a payment fails
email_configobjectEmail sender, signature, copy-recipient, and color settings (from_email, reply_to_email, email_signature_name, email_signature_title, cc_recipients, bcc_recipients, primary_color, background_color, text_color)

Because GET returns masked webhook URLs, only include slack_webhook_urls in a PATCH when the user has actually entered or edited a URL. To keep existing webhooks unchanged, omit the field entirely. The API rejects any payload containing the redaction marker *** to prevent silently overwriting a real webhook with a masked placeholder.

Reset notification settings

Restore notification settings to their defaults with a DELETE. The response returns the reset (default) settings.

$curl -X DELETE https://app.paymentkit.com/api/accounts/{account_id}/notification-settings \
> -H "Authorization: Bearer sk_live_..."

Email settings

Email notifications

Configure which emails are sent to customers:

EmailDefaultDescription
Invoice createdEnabledWhen a new invoice is generated
Invoice paidEnabledPayment confirmation receipt
Payment failedEnabledNotification when payment fails
Subscription createdEnabledWelcome email for new subscriptions
Subscription cancelledEnabledConfirmation of cancellation
Trial endingEnabledReminder before trial period ends

Email templates

Customize the content of customer emails:

  1. Navigate to Settings > Email Templates
  2. Select the template to customize
  3. Edit the subject line and body content
  4. Preview and save changes

Use template variables like {{customer_name}} and {{invoice_total}} to personalize emails.

Checkout settings

Payment methods

Enable the payment methods available at checkout:

  • Credit/debit cards - Visa, Mastercard, Amex, etc.
  • Digital wallets - Apple Pay, Google Pay
  • Bank payments - ACH, SEPA (where supported)
  • Buy now, pay later - Klarna, Afterpay (where supported)

Available payment methods depend on your connected payment processors and their capabilities.

Checkout options

SettingDescription
Allow promotion codesLet customers enter discount codes
Collect billing addressRequire full billing address
Collect shipping addressRequire shipping address (for physical goods)
Terms and conditions URLLink to your terms (shown at checkout)

Team settings

Team members

Invite team members to access your PaymentKit account:

  1. Navigate to Settings > Team
  2. Click Invite Member
  3. Enter their email and select a role
  4. They’ll receive an invitation email

Roles and permissions

RolePermissions
OwnerFull access, can manage billing and delete account
AdminFull access except account deletion
DeveloperAPI keys, webhooks, and test mode
SupportRead-only access, can issue refunds
ViewerRead-only access

API settings

API keys

Manage your API keys:

  • Create new keys - Generate secret and publishable keys
  • Rotate keys - Create new keys while keeping old ones active
  • Revoke keys - Immediately disable compromised keys

Always use separate API keys for test and production environments. Never share secret keys.

Webhooks

Configure webhook endpoints to receive event notifications:

Test mode

Toggle between test and live modes at the top of the dashboard:

ModeDescription
Test modeUse test API keys, process test payments
Live modeUse live API keys, process real payments

Always test your integration thoroughly in test mode before going live. Test mode data is separate from live data.

Sandbox accounts

Sandbox accounts are isolated child accounts linked to a parent account, used to test integrations without touching live data. Manage them under Settings or via the API.

Creating and archiving sandbox accounts require a signed-in user — these endpoints reject API keys and return 400 with "API keys not supported for this endpoint". Use a user session token (not an sk_live_... API key) in the Authorization header for those two operations. Listing sandbox accounts accepts either a user session token or an API key.

List sandbox accounts

Returns a paginated response. Accepts an API key or a user session token.

$curl https://app.paymentkit.com/api/accounts/{account_id}/sandbox-accounts \
> -H "Authorization: Bearer sk_live_..."

Create a sandbox account

Requires a signed-in user (API keys are rejected). The request body takes a required name and an optional description. Returns the created sandbox account object.

$curl -X POST https://app.paymentkit.com/api/accounts/{account_id}/sandbox-accounts \
> -H "Authorization: Bearer <user_session_token>" \
> -H "Content-Type: application/json" \
> -d '{ "name": "QA sandbox", "description": "Integration testing" }'

Archive a sandbox account

Requires a signed-in user (API keys are rejected). Archiving hides a sandbox from the UI and blocks further access. The underlying data is preserved in the database, not deleted.

$curl -X POST https://app.paymentkit.com/api/accounts/{account_id}/sandbox-accounts/{sandbox_id}/archive \
> -H "Authorization: Bearer <user_session_token>"

A successful archive returns 204 No Content.

Archiving a sandbox account is a one-way operation — the sandbox cannot be un-archived or accessed again afterward.