If you need to change a billed or completed transaction, you can create an adjustment. Adjustments let you refund or credit a transaction after it's been billed or completed.
Adjustments sit alongside transactions. The existing transaction entity remains on your system unchanged for recordkeeping purposes.
How it works
Billed and completed transactions are financial records, so they can't be deleted or changed. This is especially important when working with manually-collected transactions because they're considered issued invoices. Paddle assigns them an invoice number and sends them to customers, so any financial adjustments must be correctly recorded.
Use adjustments to refund or credit all or part of a transaction and its items. A transaction may have multiple adjustments where you've refunded or credited different items.
Paddle automatically sends a credit note to customers as a PDF so they have a record of a refund or credit. You can also download credit notes from the Paddle dashboard or generate a URL to them using the API.
Refunds
Refunds let you return some or the total a transaction amount to customers. The money is returned to the original payment method that the customer used.
To keep the platform safe for everyone, most refunds for live accounts require approval from Paddle. They're created with the status of pending_approval, before moving to approved or rejected once reviewed.
For live accounts, Paddle automatically approves refunds when:
- Your account has been through Paddle account verification and is active.
- The refund amount is less than or equal to 400
USD, or equivalent in another currency. - The refund amount is less than your balance.
- The customer paid using a payment method other than bank transfer.
For sandbox accounts, Paddle automatically approves all refunds every ten minutes.
Credits
Credits let you give customers some or the total of a transaction amount as a credit. You can create credits for manually-collected transactions (invoices) to reduce the amount due on issued invoices.
For example, if you create and issue an invoice then want to remove an item, you can create an adjustment for the item you want to remove. Paddle automatically applies the credit to the issued invoice, reducing the amount the customer owes.
When you credit the full value of a transaction, it's marked as completed. It's no longer due.
Credits don't need approval from Paddle.
Credits in Paddle are always related to existing transactions. They adjust an amount that's been paid, or an amount that's due on an issued invoice. They're not promotional credits, which are credits given to customers for things like referral schemes or promotions.
Chargebacks
When paying by card and some other kinds of payment methods, customers may dispute a charge with their payment method issuer. Issuers investigate disputes and may choose to reverse a charge. This is called a chargeback.
Paddle automatically creates adjustments for chargeback events for you:
- For some kinds of chargebacks, we get an early warning and create an adjustment with the type
chargeback_warningfor the disputed amount. The amount is refunded. - For chargebacks where we don't get an early warning, we create an adjustment with the type
chargebackfor the disputed amount. The amount is refunded. - The Paddle team contests chargebacks for you. Where a chargeback is contested successfully, Paddle creates an adjustment with the type
chargeback_reverseto return the amount held.
Revise customer information
Revising customer information for a transaction is another way you can describe updates to a transaction after it's been billed or completed. However, revising a transaction is for updating customer, address, and business information against a transaction.
When you revise customer information for a transaction, Paddle may create an adjustment if there are financial changes. For example, if you add a valid tax or VAT number, Paddle automatically creates an adjustment to refund any tax where applicable.
Revise a transaction
Describes customer information updates to a billed or completed transaction.
For example, adding extra address details or adding a tax number.
Revises customer, address, and business entities for the transaction.
Customer receives a revised invoice PDF.
Learn more: Revise a transaction
Create an adjustment
Describes financial updates to a billed or completed transaction.
For example, refunding or crediting some or all line items for a transaction.
Creates a new, separate adjustment entity related to the transaction.
Customer receives a credit note PDF.
Learn more: Refund or credit a transaction
In both cases, the existing transaction entity remains on your system unchanged for recordkeeping purposes.
Before you begin
To create an adjustment, you'll need to get the transaction ID for the transaction you want to refund or credit.
You can use the status query parameter when listing with the value completed to get a list of completed transactions for refunds, or billed,past_due to get billed and past due transactions for credits.
Create a refund
Create an adjustment with the action of refund to return some or the total a transaction amount to customers.
- Go to Paddle > Transactions.
- Use the search box and the Filter by drop-down to find the transaction you want to create a credit for.
- Click into the transaction, then click Refund
- Choose a reason for the refund from the drop-down. To pass your own value, use the API instead.
- Review the items list and enter the amount to refund for each item in the Refund amount box, then click Continue
- Review your refund, then click Request refund to confirm.
Create a refund using the API in three steps:
- Get a transaction and extract items Optional
Get the transaction you want to refund and extract line item IDs for partial refunds. - Create adjustment
Send a request to create the refund adjustment. - Handle refund status change Optional
If you present refunds to customers in your app, handle refund approval or rejection.
You can't create an adjustment for a transaction while it has an existing adjustment that's pending approval. Wait for the adjustment to become approved or rejected, then create your adjustment.
Get a transaction and extract items Optional
Send a GET request to the /transactions/{transaction_id} endpoint to get the transaction you want to refund.
Adjustments are for transaction items. You can refund the total for a transaction, or just some of its line items. If you only want to refund some of the transaction items, extract the line item details from the transaction first.
Transactions must be completed to create a refund for them. You can get completed transactions using the list transactions operation, passing completed as a value to the status query parameter.
For each item in transaction.details.line_items[], extract id and totals.total — you'll need these when building a partial refund request.
{ "data": { "id": "txn_01j1f27bnwg90nggkgkf52hy34", "status": "completed", "customer_id": "ctm_01j1f28efp7j4p1ae0hqnd144s", "address_id": "add_01j1f28egce2412sjnzp4pxdqg", "business_id": null, "custom_data": null, "origin": "web", "collection_mode": "automatic", "subscription_id": "sub_01j1f28ywb5hn78y2y5tym9y4k", "invoice_id": "inv_01j1f28yyr4abcmbf94g66p9ht", "invoice_number": "325-11071", "billing_details": null, "billing_period": { "starts_at": "2024-06-28T09:19:26.694403Z", "ends_at": "2024-07-28T09:19:26.694403Z" }, "currency_code": "USD", "discount_id": null, "created_at": "2024-06-28T09:18:35.302514Z", "updated_at": "2024-06-28T09:19:28.520054Z", "billed_at": "2024-06-28T09:19:27.273799Z", "items": [ { "price": { "id": "pri_01gsz8x8sawmvhz1pv30nge1ke", "description": "Monthly", "type": "standard", "name": "Monthly (per seat)", "product_id": "pro_01gsz4t5hdjse780zja8vvr7jg", "billing_cycle": { "interval": "month", "frequency": 1 }, "trial_period": null, "tax_mode": "account_setting", "unit_price": { "amount": "3000", "currency_code": "USD" }, "unit_price_overrides": [], "custom_data": null, "quantity": { "minimum": 1, "maximum": 999 }, "status": "active", "created_at": "2023-02-23T13:55:22.538367Z", "updated_at": "2024-04-11T13:54:52.254748Z" }, "quantity": 10 }, { "price": { "id": "pri_01h1vjfevh5etwq3rb416a23h2", "description": "Monthly", "type": "standard", "name": "Monthly (recurring addon)", "product_id": "pro_01h1vjes1y163xfj1rh1tkfb65", "billing_cycle": { "interval": "month", "frequency": 1 }, "trial_period": null, "tax_mode": "account_setting", "unit_price": { "amount": "10000", "currency_code": "USD" }, "unit_price_overrides": [], "custom_data": null, "quantity": { "minimum": 1, "maximum": 100 }, "status": "active", "created_at": "2023-06-01T13:31:12.625056Z", "updated_at": "2024-04-12T10:42:45.476453Z" }, "quantity": 1 }, { "price": { "id": "pri_01gsz98e27ak2tyhexptwc58yk", "description": "One-time addon", "type": "standard", "name": "One-time addon", "product_id": "pro_01gsz97mq9pa4fkyy0wqenepkz", "billing_cycle": null, "trial_period": null, "tax_mode": "account_setting", "unit_price": { "amount": "19900", "currency_code": "USD" }, "unit_price_overrides": [], "custom_data": null, "quantity": { "minimum": 1, "maximum": 1 }, "status": "active", "created_at": "2023-02-23T14:01:28.391712Z", "updated_at": "2024-04-09T07:23:10.921392Z" }, "quantity": 1 } ], "details": { "tax_rates_used": [ { "tax_rate": "0.08875", "totals": { "subtotal": "59900", "discount": "0", "tax": "5315", "total": "65215" } } ], "totals": { "subtotal": "59900", "tax": "5315", "discount": "0", "total": "65215", "grand_total": "65215", "fee": "3311", "credit": "0", "credit_to_balance": "0", "balance": "0", "earnings": "56589", "currency_code": "USD" }, "adjusted_totals": { "subtotal": "59900", "tax": "5315", "total": "65215", "grand_total": "65215", "fee": "3311", "earnings": "56589", "currency_code": "USD" }, "payout_totals": { "subtotal": "59900", "tax": "5315", "discount": "0", "total": "65215", "credit": "0", "credit_to_balance": "0", "balance": "0", "grand_total": "65215", "fee": "3311", "earnings": "56589", "currency_code": "USD" }, "adjusted_payout_totals": { "subtotal": "59900", "tax": "5315", "total": "65215", "fee": "3311", "chargeback_fee": { "amount": "0", "original": null }, "earnings": "56589", "currency_code": "USD" }, "line_items": [ { "id": "txnitm_01j1f28f89k9wfjwns16b1yqww", "price_id": "pri_01gsz8x8sawmvhz1pv30nge1ke", "quantity": 10, "totals": { "subtotal": "30000", "tax": "2662", "discount": "0", "total": "32662" }, "product": { "id": "pro_01gsz4t5hdjse780zja8vvr7jg", "name": "AeroEdit Pro", "description": "Designed for professional pilots, including all features plus in Basic plus compliance monitoring, route optimization, and third-party integrations.", "type": "standard", "tax_category": "standard", "image_url": "https://paddle.s3.amazonaws.com/user/165798/bT1XUOJAQhOUxGs83cbk_pro.png", "custom_data": { "features": { "aircraft_performance": true, "compliance_monitoring": true, "flight_log_management": true, "payment_by_invoice": false, "route_planning": true, "sso": false }, "suggested_addons": [ "pro_01h1vjes1y163xfj1rh1tkfb65", "pro_01gsz97mq9pa4fkyy0wqenepkz" ], "upgrade_description": "Move from Basic to Pro to take advantage of aircraft performance, advanced route planning, and compliance monitoring." }, "status": "active", "created_at": "2023-02-23T12:43:46.605Z", "updated_at": "2024-04-05T15:53:44.687Z" }, "tax_rate": "0.08875", "unit_totals": { "subtotal": "3000", "tax": "266", "discount": "0", "total": "3266" } }, { "id": "txnitm_01j1f28f89k9wfjwns1csjh996", "price_id": "pri_01h1vjfevh5etwq3rb416a23h2", "quantity": 1, "totals": { "subtotal": "10000", "tax": "887", "discount": "0", "total": "10887" }, "product": { "id": "pro_01h1vjes1y163xfj1rh1tkfb65", "name": "Analytics addon", "description": "Unlock advanced insights into your flight data with enhanced analytics and reporting features. Includes customizable reporting templates and trend analysis across flights.", "type": "standard", "tax_category": "standard", "image_url": "https://paddle.s3.amazonaws.com/user/165798/97dRpA6SXzcE6ekK9CAr_analytics.png", "custom_data": null, "status": "active", "created_at": "2023-06-01T13:30:50.302Z", "updated_at": "2024-04-05T15:47:17.163Z" }, "tax_rate": "0.08875", "unit_totals": { "subtotal": "10000", "tax": "887", "discount": "0", "total": "10887" } }, { "id": "txnitm_01j1f28f89k9wfjwns1htt8bpw", "price_id": "pri_01gsz98e27ak2tyhexptwc58yk", "quantity": 1, "totals": { "subtotal": "19900", "tax": "1766", "discount": "0", "total": "21666" }, "product": { "id": "pro_01gsz97mq9pa4fkyy0wqenepkz", "name": "Custom domains", "description": "Make AeroEdit truly your own with custom domains. Custom domains reinforce your brand identity and make it easy for your team to access your account.", "type": "standard", "tax_category": "standard", "image_url": "https://paddle.s3.amazonaws.com/user/165798/XIG7UXoJQHmlIAiKcnkA_custom-domains.png", "custom_data": null, "status": "active", "created_at": "2023-02-23T14:01:02.441Z", "updated_at": "2024-04-05T15:43:28.971Z" }, "tax_rate": "0.08875", "unit_totals": { "subtotal": "19900", "tax": "1766", "discount": "0", "total": "21666" } } ] }, "payments": [ { "payment_attempt_id": "e525fb4b-198f-4c50-9ef8-abdba320baa4", "stored_payment_method_id": "c39eb66d-b1a6-4d1f-b352-ed82442b06bb", "payment_method_id": "paymtd_01j1f28vewjjgjhpkwh90r2fqw", "amount": "65215", "status": "captured", "error_code": null, "method_details": { "type": "card", "korea_local": null, "card": { "type": "visa", "last4": "4242", "expiry_month": 10, "expiry_year": 2025, "cardholder_name": "Sam Miller" } }, "created_at": "2024-06-28T09:19:24.150496Z", "captured_at": "2024-06-28T09:19:26.694403Z" } ], "checkout": { "url": "https://magnificent-entremet-7ae0c6.netlify.app/default/overlay?_ptxn=txn_01j1f27bnwg90nggkgkf52hy34" }, "receipt_data": null }, "meta": { "request_id": "ea6e5746-0e88-48ed-b6d4-6d78acce5d1e" }}Create adjustment
Send a POST request to the /adjustments endpoint to create the refund adjustment.
In your request, include:
type:fullto refund the complete transaction total, orpartialto refund specific items.transaction_id: Paddle ID for the transaction to refund.action: refundto return the amount to the original payment method.reason: why you're refunding — shown in the Paddle dashboard and kept for recordkeeping.
For partial refunds, include an items array with item_id and type per item. For each item, use type: full to refund the whole item, or type: partial with an amount for a partial item refund.
By default, items[].amount is inclusive of tax. Include tax_mode: external to say that amounts are exclusive of tax.
{ "action": "refund", "type": "partial", "transaction_id": "txn_01j1f27bnwg90nggkgkf52hy34", "reason": "goodwill gesture", "items": [ { "item_id": "txnitm_01j1f28f89k9wfjwns1htt8bpw", "type": "full" }, { "item_id": "txnitm_01j1f28f89k9wfjwns1csjh996", "type": "partial", "amount": "5000" } ]}{ "data": { "id": "adj_01j1f9cx0g7skrg9kwsxmgxg5p", "action": "refund", "type": "partial", "transaction_id": "txn_01j1f27bnwg90nggkgkf52hy34", "subscription_id": "sub_01j1f28ywb5hn78y2y5tym9y4k", "customer_id": "ctm_01j1f28efp7j4p1ae0hqnd144s", "reason": "goodwill gesture", "currency_code": "USD", "status": "pending_approval", "items": [ { "id": "adjitm_01j1f9cx0g7skrg9kwszsbbxs2", "item_id": "txnitm_01j1f28f89k9wfjwns1htt8bpw", "type": "full", "amount": "21666", "proration": null, "totals": { "subtotal": "19900", "tax": "1766", "total": "21666" } }, { "id": "adjitm_01j1f9cx0g7skrg9kwt0gy6ftn", "item_id": "txnitm_01j1f28f89k9wfjwns1csjh996", "type": "partial", "amount": "5000", "proration": null, "totals": { "subtotal": "4592", "tax": "408", "total": "5000" } } ], "totals": { "subtotal": "24492", "tax": "2174", "total": "26666", "fee": "1354", "earnings": "23138", "currency_code": "USD" }, "payout_totals": { "subtotal": "24492", "tax": "2174", "total": "26666", "fee": "1354", "earnings": "23138", "currency_code": "USD" }, "created_at": "2024-06-28T11:23:56.842159Z", "updated_at": "2024-06-28T11:23:56.842159Z" }, "meta": { "request_id": "b1a5ec3f-a134-4c0f-9601-2ae5ff7af6a8" }}Handle refund status change Optional
Most refunds for live accounts are created with the status of pending_approval until reviewed by Paddle, but some are automatically approved. For sandbox accounts, Paddle automatically approves refunds every ten minutes.
From pending_approval, adjustments move to either:
approved
Refund approved by Paddle. The amount is refunded to the original payment method that the customer used. This may take a few days to process.rejected
Refund rejected by the Paddle team. Contact the Paddle seller support team if you'd like to understand more about why a refund was rejected.
The adjustment.updated event occurs when the status of an adjustment changes. Subscribe to this event to get notified when adjustments are approved or rejected. If you've built a billing information page in your app, you might like to update the status of the refund on this page.
Create a credit
Create an adjustment with the action of credit to give customers some or the total of a manually-collected transaction (invoice) amount as a credit.
Create a credit using the API in two steps:
- Get a transaction and extract items Optional
Get the transaction you want to credit and extract line item IDs for partial credits. - Create adjustment
Send a request to create the credit adjustment.
You can only create credits for manually-collected transactions (invoices). You can't create credits for automatically-collected transactions.
Get a transaction and extract items Optional
Send a GET request to the /transactions/{transaction_id} endpoint to get the transaction you want to credit.
Adjustments are for transaction items. You can credit the total for a transaction, or just some of its line items. If you only want to credit some of the transaction items, extract the line item details from the transaction first.
Transactions must be billed or past_due to create a credit for them. You can get billed and past due transactions using the list transactions operation, passing billed,past_due as a value to the status query parameter.
For each item in transaction.details.line_items[], extract id and totals.total — you'll need these when building a partial credit request.
{ "data": { "id": "txn_01j1fcdrmgxnp2vw6qxtpr44mf", "status": "billed", "customer_id": "ctm_01hv6y1jedq4p1n0yqn5ba3ky4", "address_id": "add_01hv8gq3318ktkfengj2r75gfx", "business_id": null, "custom_data": null, "origin": "api", "collection_mode": "manual", "subscription_id": "sub_01j1fcex1ygrbc34pxvkz58tw5", "invoice_id": "inv_01j1fcdsd9jj41dehanc2n7s5e", "invoice_number": "325-11075", "billing_details": { "enable_checkout": false, "payment_terms": { "interval": "day", "frequency": 14 }, "purchase_order_number": "PO-123", "additional_information": null }, "billing_period": { "starts_at": "2024-04-12T00:00:00Z", "ends_at": "2025-04-11T23:59:00Z" }, "currency_code": "USD", "discount_id": null, "created_at": "2024-06-28T12:16:51.341605Z", "updated_at": "2024-06-28T12:17:29.828052Z", "billed_at": "2024-06-28T12:17:27.293391Z", "items": [ { "price": { "id": "pri_01gsz91wy9k1yn7kx82aafwvea", "description": "Annual", "type": "standard", "name": "Annual (per seat)", "product_id": "pro_01gsz4vmqbjk3x4vvtafffd540", "billing_cycle": { "interval": "year", "frequency": 1 }, "trial_period": null, "tax_mode": "account_setting", "unit_price": { "amount": "50000", "currency_code": "USD" }, "unit_price_overrides": [], "custom_data": null, "quantity": { "minimum": 1, "maximum": 100 }, "status": "active", "created_at": "2023-02-23T13:57:54.249913Z", "updated_at": "2024-04-05T14:32:00.471447Z" }, "quantity": 20 }, { "price": { "id": "pri_01gsz96z29d88jrmsf2ztbfgjg", "description": "Annual (recurring addon)", "type": "standard", "name": "Annual (recurring addon)", "product_id": "pro_01gsz92krfzy3hcx5h5rtgnfwz", "billing_cycle": { "interval": "year", "frequency": 1 }, "trial_period": null, "tax_mode": "account_setting", "unit_price": { "amount": "300000", "currency_code": "USD" }, "unit_price_overrides": [], "custom_data": null, "quantity": { "minimum": 1, "maximum": 1 }, "status": "active", "created_at": "2023-02-23T14:00:40.265185Z", "updated_at": "2024-03-25T14:31:18.587603Z" }, "quantity": 1 }, { "price": { "id": "pri_01gsz98e27ak2tyhexptwc58yk", "description": "One-time addon", "type": "standard", "name": "One-time addon", "product_id": "pro_01gsz97mq9pa4fkyy0wqenepkz", "billing_cycle": null, "trial_period": null, "tax_mode": "account_setting", "unit_price": { "amount": "19900", "currency_code": "USD" }, "unit_price_overrides": [], "custom_data": null, "quantity": { "minimum": 1, "maximum": 1 }, "status": "active", "created_at": "2023-02-23T14:01:28.391712Z", "updated_at": "2024-04-09T07:23:10.921392Z" }, "quantity": 1 } ], "details": { "tax_rates_used": [ { "tax_rate": "0.08875", "totals": { "subtotal": "1319900", "discount": "0", "tax": "117141", "total": "1437041" } } ], "totals": { "subtotal": "1319900", "tax": "117141", "discount": "0", "total": "1437041", "grand_total": "1437041", "fee": null, "credit": "0", "credit_to_balance": "0", "balance": "1437041", "earnings": null, "currency_code": "USD" }, "adjusted_totals": { "subtotal": "1319900", "tax": "117141", "total": "1437041", "grand_total": "1437041", "fee": "0", "earnings": "0", "currency_code": "USD" }, "payout_totals": null, "adjusted_payout_totals": null, "line_items": [ { "id": "txnitm_01j1fcds3vh4rma21djdw6pd2f", "price_id": "pri_01gsz91wy9k1yn7kx82aafwvea", "quantity": 20, "totals": { "subtotal": "1000000", "tax": "88750", "discount": "0", "total": "1088750" }, "product": { "id": "pro_01gsz4vmqbjk3x4vvtafffd540", "name": "AeroEdit Enterprise", "description": "The ultimate solution for organizations, featuring all Pro capabilities plus multi-user support, advanced data storage capabilities, plus personalized onboarding, dedicated account management, and the ability to pay via invoice.", "type": "standard", "tax_category": "standard", "image_url": "https://paddle.s3.amazonaws.com/user/165798/Ws808ziTS76a6YbnMkiK_enterprise.png", "custom_data": { "features": { "aircraft_performance": true, "compliance_monitoring": true, "flight_log_management": true, "payment_by_invoice": true, "route_planning": true, "sso": true }, "suggested_addons": [], "upgrade_description": "Ready to reach new heights? Upgrade to enterprise to unlock single sign-on, payment by invoice, and dedicated account management." }, "status": "active", "created_at": "2023-02-23T12:44:34.923Z", "updated_at": "2024-04-05T15:58:28.309Z" }, "tax_rate": "0.08875", "unit_totals": { "subtotal": "50000", "tax": "4437", "discount": "0", "total": "54437" } }, { "id": "txnitm_01j1fcds3vh4rma21djm79vf9e", "price_id": "pri_01gsz96z29d88jrmsf2ztbfgjg", "quantity": 1, "totals": { "subtotal": "300000", "tax": "26625", "discount": "0", "total": "326625" }, "product": { "id": "pro_01gsz92krfzy3hcx5h5rtgnfwz", "name": "Reporting module", "description": "Get access to comprehensive reports and customizable analytics dashboards.", "type": "standard", "tax_category": "standard", "image_url": "https://paddle.s3.amazonaws.com/user/165798/qgyipKJwRtq98YNboipo_vip-support.png", "custom_data": null, "status": "active", "created_at": "2023-02-23T13:58:17.615Z", "updated_at": "2024-04-05T15:44:02.893Z" }, "tax_rate": "0.08875", "unit_totals": { "subtotal": "300000", "tax": "26625", "discount": "0", "total": "326625" } }, { "id": "txnitm_01j1fcds3vh4rma21djq3pd3e7", "price_id": "pri_01gsz98e27ak2tyhexptwc58yk", "quantity": 1, "totals": { "subtotal": "19900", "tax": "1766", "discount": "0", "total": "21666" }, "product": { "id": "pro_01gsz97mq9pa4fkyy0wqenepkz", "name": "Custom domains", "description": "Make AeroEdit truly your own with custom domains. Custom domains reinforce your brand identity and make it easy for your team to access your account.", "type": "standard", "tax_category": "standard", "image_url": "https://paddle.s3.amazonaws.com/user/165798/XIG7UXoJQHmlIAiKcnkA_custom-domains.png", "custom_data": null, "status": "active", "created_at": "2023-02-23T14:01:02.441Z", "updated_at": "2024-04-05T15:43:28.971Z" }, "tax_rate": "0.08875", "unit_totals": { "subtotal": "19900", "tax": "1766", "discount": "0", "total": "21666" } } ] }, "payments": [], "checkout": { "url": null }, "receipt_data": null }, "meta": { "request_id": "cf64444f-9f31-4ed1-8a28-5752cea52723" }}Create adjustment
Send a POST request to the /adjustments endpoint to create the credit adjustment.
In your request, include:
type:fullto credit the complete transaction total, orpartialto credit specific items.transaction_id: Paddle ID for the transaction to credit.action: creditto give the amount as a credit to the customer.reason: why you're crediting this amount. This is shown in the Paddle dashboard and kept for recordkeeping.
For partial credits, include an items array with item_id and type per item. For each item, use type: full to credit the whole item, or type: partial with an amount for a partial item credit.
{ "action": "credit", "transaction_id": "txn_01j1fcdrmgxnp2vw6qxtpr44mf", "type": "partial", "reason": "error", "items": [ { "item_id": "txnitm_01j1fcds3vh4rma21djq3pd3e7", "type": "full" }, { "item_id": "txnitm_01j1fcds3vh4rma21djm79vf9e", "type": "partial", "amount": "100000" } ]}{ "data": { "id": "adj_01j1fcvs6wpjbk0ymqbqcj7k2g", "action": "credit", "type": "partial", "credit_applied_to_balance": false, "transaction_id": "txn_01j1fcdrmgxnp2vw6qxtpr44mf", "subscription_id": "sub_01j1fcex1ygrbc34pxvkz58tw5", "customer_id": "ctm_01hv6y1jedq4p1n0yqn5ba3ky4", "reason": "error", "currency_code": "USD", "status": "approved", "items": [ { "id": "adjitm_01j1fcvs6wpjbk0ymqbqgdf6pg", "item_id": "txnitm_01j1fcds3vh4rma21djq3pd3e7", "type": "full", "amount": "21666", "proration": null, "totals": { "subtotal": "19900", "tax": "1766", "total": "21666" } }, { "id": "adjitm_01j1fcvs6wpjbk0ymqbvcz2945", "item_id": "txnitm_01j1fcds3vh4rma21djm79vf9e", "type": "partial", "amount": "100000", "proration": null, "totals": { "subtotal": "91848", "tax": "8152", "total": "100000" } } ], "totals": { "subtotal": "111748", "tax": "9918", "total": "121666", "fee": "0", "earnings": "111748", "currency_code": "USD" }, "payout_totals": null, "created_at": "2024-06-28T12:24:30.191798Z", "updated_at": "2024-06-28T12:24:30.191798Z" }, "meta": { "request_id": "c78e0f33-6b88-466e-aafc-0789ee305201" }}Generate a credit note document
Generate a credit note document as a PDF to give to a customer as a record of a refund or credit.
- Go to Paddle > Transactions.
- Use the search box and the Filter by drop-down to find a transaction with an adjustment that you'd like to download a credit note for.
- Click into the transaction, then scroll to the credit section of the transaction page.
- Click View credit note to open a PDF of the credit note.
Send a GET request to the /adjustments/{adjustment_id}/credit-note endpoint to generate a URL to a credit note PDF for an adjustment.
{ "data": { "url": "https://paddle-production-invoice-service-pdfs.s3.amazonaws.com/credit_notes/15839/crdnt_01j4scmgpbtbxap16573dtck9n/credit_notes_296-10016_Paddle-com.pdf" }, "meta": { "request_id": "e34d4a9c-2088-447d-a3a1-1da5ce74f507" }}Events
adjustment.created | Occurs when an adjustment is created. |
adjustment.updated | Occurs when an adjustment is updated. |
Common errors
adjustment_transaction_invalid_status_for_credit |
| The transaction being adjusted (credit) has a non supported status. |
adjustment_transaction_invalid_status_for_refund |
| The transaction being adjusted (refund) has a non supported status. |
adjustment_pending_refund_request |
| You are attempting to create an adjustment but there is a pending refund request open |