Our Payment Intent workflow allows you to offer payment with net terms to your buyers. Our flows are designed to replicate common payment flows such as Stripe, so your team doesn't have to learn yet another payment flow.

The flowchart below provides an overview of the payment flow. To process an order:

  1. Create a Payment Intent
  2. Update the Payment Intent as needed when the order changes
  3. Confirm the Payment Intent


Important Note on Payment Intents

Each Payment Intent is associated with a transaction ID to ensure a one-to-one relationship between transactions and intents. When requesting to modify or confirm an intent, you must pass the transaction ID in the body of the request. Therefore it is crucial that you store the intent ID with the transaction or cart. If the intent is expired or for any reason you need to create a new one, the previous intent associated with the transaction needs to be cancelled first.


To ensure a smooth flow, you need to take into account the following limitations imposed on the API. These limitations are put in place for security and data correctness purposes.

  • At the moment, a buyer has to be approved by NetNow for you to be able to create a Payment Intent for. Reach out to your account manager for the approval process.
  • Each Payment Intent is associated with a transaction on your marketplace. You cannot create multiple Payment Intents for the same transaction. Either update the existing Payment Intent or cancel it before creating a new one.
  • A Payment Intent is only valid on the same day it was created. Payment Intents are considered expired later and you will need to create a new one.
  • You can only update the amount field of a Payment Intent.
  • To modify or confirm a Payment Intent, it should be in the initial state. Payment Intents in cancelled or confirmed states are not modifiable.

Sandbox Usage Guide

When using the Sandbox environment, you will need an approved buyer. Use buyer ID 00000000-0000-0000-0000-000000000000 for all your requests. For example:

curl -X POST \
    -H "Authorization: Bearer {{token}}" \
    -H "Cache-Control: no-cache" \
    -H "Content-Type: application/x-www-form-urlencoded" \
		-d "{'buyerId': '00000000-0000-0000-0000-000000000000', 'transactionId': '1234', 'amount': 10000}" \