# Paddle + Krokul CRM

Yes. Krokul CRM integrates with Paddle Billing. A won deal creates the Paddle customer and a transaction with the agreed prices, and Paddle then reports completed payments, failed charges, subscription changes and refunds back to the deal and the client company in Krokul. Paddle acts as the merchant of record and issues the invoice to the buyer, so Krokul keeps the sale and the payment history without a second invoice. The link runs through the Krokul app in Make and n8n or through the Krokul API and webhooks.

**Status:** Via API and webhooks. **Automation platforms:** Make, n8n.

## What your team gets

### A won deal becomes a Paddle transaction

When a deal is won in the pipeline you mapped to Paddle, Krokul creates the Paddle customer from the client company and a transaction with the price IDs and quantities from the deal lines. The deal UUID travels in custom_data. For a sales-assisted contract the transaction uses manual collection, and Paddle sends its own invoice once the transaction is billed. Self-serve buyers get the checkout link instead.

### transaction.completed records the payment

Paddle sends transaction.completed after it processes the payment. Krokul reads the deal UUID from custom_data, records a payment fact on that deal and stores the Paddle transaction ID as an external key. The client company debt drops, and invoice.paid follows when the plan is covered.

### A failed charge reaches the account manager

A transaction.payment_failed event adds a comment on the deal with the amount and the Paddle transaction ID. When a subscription moves to past due, subscription.past_due creates a task for the owner of the client company. Paddle keeps retrying the card on its side.

### Subscription changes land on the client company

The events subscription.created, subscription.updated, subscription.paused and subscription.canceled update a read-only copy of the Paddle subscription on the client company. The Krokul MRR movements report counts the change with the amount Paddle holds. One billing owner per client keeps a Krokul contract and a Paddle subscription from charging the same company twice.

### Refunds and credits follow the payment

Paddle records refunds and credits as adjustments. On adjustment.created, Krokul finds the payment by the transaction ID and books a refund linked to it. The deal shows the net amount afterwards.

## What moves between Paddle and Krokul

| Paddle | Krokul | Direction | When |
|---|---|---|---|
| Customer (ctm_) | Client company, external key | Krokul → Paddle | First transaction for the client |
| Transaction with price IDs and custom_data | Won deal with its lines | Krokul → Paddle | The deal is won |
| transaction.completed | Payment fact on the deal | Paddle → Krokul | Paddle processes the payment |
| transaction.payment_failed | Comment on the deal | Paddle → Krokul | A charge is declined |
| subscription.created, .updated, .canceled | Read-only subscription and MRR movement | Paddle → Krokul | The subscription changes |
| subscription.past_due | Task for the account manager | Paddle → Krokul | A renewal stays unpaid |
| adjustment.created | Refund linked to the payment | Paddle → Krokul | A refund or credit is approved |

## How to connect today

### Krokul app in Make

1. Connect the Krokul app with a Krokul API key and the Paddle app with a Paddle API key.
2. Start from the Krokul trigger Deal Won, call Get a Customer or Create a Customer, then Create a Transaction with the price IDs from the deal.
3. Save the Paddle customer and transaction IDs on the deal with the Krokul action Set External Key.

### Custom flow through the Krokul API and webhooks

1. Create a Paddle API key and a notification destination for the transaction, subscription and adjustment events. In Krokul, issue an API key scoped to deals, client companies and payments.
2. Subscribe a Krokul webhook to card.won with a pipelineUuid filter, verify x-crm-signature and create the Paddle transaction with the deal UUID in custom_data.
3. Store the Paddle IDs through externalRef/api-upsert so a repeated delivery changes nothing in Paddle.
4. On each Paddle event, verify the Paddle-Signature header, answer 200 within five seconds, then write payment/api-create with the cardUuid from custom_data, payment/api-refund or task/api-create.

**Actions:** Create a Customer; Create a Transaction; Get a Customer; Create a Price; Create a Product; Get a Price.

### For integrators

Paddle signs every webhook with a Paddle-Signature header that holds a timestamp and an HMAC-SHA256 hash of the timestamp joined to the raw body, using the secret of the notification destination. A destination that does not answer 200 within five seconds gets retries, up to 60 within three days on live accounts and three within 15 minutes in the sandbox. On the Krokul side, custom_data carries the deal UUID, externalRef keeps the Paddle IDs, and the delivery log replays a failed step.

[API documentation](https://app.krokul.com/api/v1/docs)

## Questions and answers

### Does Krokul integrate with Paddle?

Yes. Krokul integrates with Paddle Billing through the Krokul app in Make and n8n and through its API and webhooks, for customers, transactions, subscriptions and refunds.

### Who sends the invoice when Paddle is the merchant of record?

Paddle. Paddle sells to the buyer and issues the invoice, and Krokul records the deal, the payment and the subscription for the client company without issuing its own invoice for that sale.

### How does a Paddle payment find its deal in Krokul?

Krokul writes the deal UUID into custom_data of the Paddle transaction. The transaction.completed event returns that value, so Krokul records the payment on the right deal.

### Do Paddle subscriptions count in the Krokul MRR report?

Yes. Paddle subscriptions appear in the MRR movements report with the amounts Paddle holds, next to contracts that Krokul bills itself.

## Limits

Prices, checkout, tax calculation, invoices to buyers and payouts stay in Paddle. Manually collected Paddle transactions accept USD, EUR and GBP only.

## Related services

- [Stripe](https://krokul.com/en/integrations/stripe/index.md)
- [Chargebee](https://krokul.com/en/integrations/chargebee/index.md)
- [Recurly](https://krokul.com/en/integrations/recurly/index.md)
- [Adyen](https://krokul.com/en/integrations/adyen/index.md)
- [PayPal](https://krokul.com/en/integrations/paypal/index.md)
- [Xero](https://krokul.com/en/integrations/xero/index.md)

[Payments and banking](https://krokul.com/en/integrations/category/payments/index.md)

Paddle is a trademark of Paddle.com Market Limited. Krokul is not affiliated with Paddle.

Updated: 2026-10-15

---

App: https://app.krokul.com/ · API: https://app.krokul.com/api/v1/docs
