The core rules come from the NOWPayments Integration Guide, but the logic you apply depends on what you are selling.


⚙️ Core Principles (Apply to Both Scenarios)

Principle Why It Matters
Only act on finished (or partially_paid in scenario 2) Earlier statuses (confirming, confirmed) are not final.
Configure dashboard settings consciously ⇒ go here The “Repeated Payments” and “Wrong‑asset deposits” settings control automation and risk.
Always inspect outcome_amount and outcome_currency These tell you what actually arrived in your wallet after all fees and conversions.
Always set up an IPN secret and validate callbacks It is important to to prevent fraud

📊 Two Integration Scenarios

Scenario 1 – Basic (E‑commerce, Services, Fixed‑price Items)

You sell a specific item for a fixed price.

You must deliver the product or service only when the exact required amount has been received.

Aspect Implementation
Trigger to deliver payment.status === 'finished' only.
Final amount check Mandatory: verify that outcome_amount (in your settlement currency) is the expected price. You can also use payment covering option here
Handling partially_paid Do not deliver unless it fits your model. You can finish this manually.
Dashboard settings Set Repeated Payments DefaultPartially Paid
Set Wrong‑asset deposits statusPartially Paid
(This protects you from underpayments and wrong‑asset risks.)

Scenario 2 – Casino / Balance Top‑ups

You accept deposits to credit a user’s internal balance.

The exact amount is not critical – every satoshi received adds value to the player’s account.

Aspect Implementation
Trigger to credit payment.status === 'finished' or 'partially_paid'.
Final amount check Not needed for comparison. Simply credit the user’s balance with outcome_amount (in outcome_currency).
Handling partially_paid Accept it - you can set up a covering percentage to make most of these finished – credit the amount received. This automatically handles underpayments and wrong‑asset conversions.
Dashboard settings Set Repeated Payments DefaultFinished
Set Wrong‑asset deposits statusFinished
(Automates everything: every incoming deposit is treated as a finished top‑up.)

⚠️ Important Notes