Payment Processing
Connect zahls.ch and accept payments for paid tickets
Paid tickets require a connected zahls.ch account. cowtic does not add its own platform commission on top of zahls.ch payment fees.
When you need payments
Connect zahls.ch when you sell tickets above CHF 0. Free-only events do not require payment setup.
Connect zahls.ch
- Create a zahls.ch account — Sign up at zahls.ch and complete their verification process.
- Open Payments in cowtic — In the dashboard sidebar, go to Payments.
- Enter your credentials — Paste your zahls.ch API Key and Instance ID, click Save, then use Test connection to verify.
- Configure the webhook in zahls.ch — Copy the webhook URL from the Payments page and add it in your zahls.ch dashboard (Webhooks → add URL → subscribe to transaction confirmed → save).
Without the webhook, orders can stay Pending after the customer pays. Always configure the webhook before going live.
How checkout works
When a customer buys paid tickets:
- They complete checkout on your event page
- cowtic creates an order with status Pending
- The customer is redirected to zahls.ch to pay
- zahls.ch processes the payment
- zahls.ch notifies cowtic via webhook
- The order moves to Completed and tickets are issued
Free tickets skip zahls.ch. The order completes immediately and tickets are sent by email.
Order statuses
| Status | Meaning |
|---|---|
| Pending | Awaiting payment or confirmation |
| Completed | Paid and tickets issued |
| Cancelled | Cancelled by you; tickets invalidated |
| Expired | Payment window ended; reserved tickets released |
Pending orders expire after a reservation timeout if payment is not completed. The exact duration depends on your environment configuration.
Currency
Set the currency when you create an event. Supported values are CHF and EUR. All ticket types in one event share the same currency. You cannot change currency after sales have started.
Refunds and cancellations
To cancel a paid order and refund the customer:
- Go to Orders in the dashboard
- Open the order actions menu
- Click Cancel order
The order is marked Cancelled, tickets are invalidated, and the refund is processed through zahls.ch. Refund timing depends on the customer's bank.
You define your own refund policy for customers. State it clearly on your event page.
Manual payment actions
For pending orders you can also:
- Confirm order — mark as completed when payment was received outside the normal flow
- Mark as paid — for invoice or waiting-payment orders
See Orders for details.
Security
- Card data is entered on zahls.ch, not on cowtic
- cowtic never stores card numbers
- Keep your zahls.ch API Key and Instance ID private
- Only enter credentials on the Payments page
Troubleshooting
"Payment credentials required" when publishing
Open Payments, save valid zahls.ch credentials, and try again.
Orders stuck on Pending
- Confirm the webhook URL in zahls.ch matches the URL on your Payments page
- Run Test connection on the Payments page
- Place a small test order
Customer reports a failed payment
Ask them to verify card details, try another card, or contact their bank. Payment processing errors come from zahls.ch or the card issuer.
Payouts
Ticket revenue is paid out according to your zahls.ch payout schedule. Check your zahls.ch dashboard for balance, payout history, and bank details.