Steps to test AWS MP Integration

  • Create a separate buyer/test AWS account in your AWS Organization
  • Grant yourself access to it (IAM Identity Center: create/admin-assign a permission set like AdministratorAccess to your user/group for that account).
  • In AWS Marketplace Management Portal (seller account), add the test account ID to the product’s Limited visibility allowlist. This is the magic step. It will allow you to subscribe to the product in a test environment before its visibility is updated to public and thus simulate the flow when a real customer subscribes to your product.
  • From the test account, open the listing (direct URL if needed) → Subscribe → complete the redirect to your /register endpoint → verify ResolveCustomer + entitlements flow.
  • Before/after going Public:
    • Either cancel the test subscription, or
    • In your app, maintain a do-not-meter customer/account list (skip MeterUsage / metering events for that customer), or
    • Create a $0 private offer for the test account (best for ongoing testing on a Public listing).

https://docs.aws.amazon.com/marketplace/latest/userguide/metering-for-usage.html

  • Even if there is no usage to report, you can continue sending metering records every hour and record a quantity of 0 if there is no usage to report for that hour.
  • During publishing, the AWS Marketplace Operations team will test that the SaaS application sends the metering record successfully before allowing the product to be published. Typically, the team will perform a mock sign up of the SaaS and confirm that a metering record is received.
  • If this is a SaaS with the pricing model “Subscription” (not pricing models “Contract” or “Contract with Consumption“), then the buyer can unsubscribe at any time. The other two pricing models have a set duration based on the time of subscription and the buyer cannot unsubscribe during it. They can only turn off autorenewal.
  • Please note that pricing model change is not supported for SaaS products. [1]
  • We deduplicate metering requests on the hour.
  • Requests are deduplicated per product/customer/hour/dimension. i.e., if all 4 are the same the externally metered quantity is not aggregated.
  • You can always retry any request, but if you meter for a different quantity, the original quantity is billed.
  • If you send multiple requests for the same customer/dimension/hour, the records are not aggregated

What really distinguishes the 3 types of SaaS Products – subscription, contract, contract + consumption?

A SaaS product on AWS MP has one or more pricing dimensions associated with it. A pricing dimension can be of two types – Entitled or ExternallyMetered. ExternallyMetered dimensions have to be manually billed by the seller using the BatchMeterUsage endpoint. Think of an electricity meter. Entitled dimensions are billed via contracts – monthly or yearly. AWS automatically takes care of ongoing billing and provides an endpoint that you can call to check if a customer has an entitlement. Think of a Netflix subscription. You can offer multiple entitlements and they can be mutually exclusive but don’t have to. What an entitlement buys a customer is completely up to you and your internal detail. I think of entitlements as tiers – e.g., basic, pro, enterprise versions of the product.

Definitions:

  • A pure subscription or pay-as-you-go (PAYG) product only contains ExternallyMetered pricing dimensions. Customer gets variable bill per month (just like your electricity bill).
  • A pure contract product only contains Entitled pricing dimensions. Customer gets a flat bill per month.
  • A contract + consumption product contains at least one Entitled and at least one ExternallyMetered dimension

Even if you are developing a pure PAYG product (again AWS calls this a SaaS subscription), you might want to list it as a Contract + Consumption when creating the listing on AWS MP Seller Console. Why? For one, you future-proof it if you decide to change the pricing model later on. What I mean here is that you still keep the billing model as contract + consumption but can now simply update the price of the entitlement from zero to non-zero. Secondly, for the contract and contract + consumption models you can call the Entitlement service to check if the customer has an active contract. There is no such service available for PAYG (SaaS subscription). You must maintain the customer’s subscription status in your own database and remember to update it if the customer stops subscribing to your product. What are your thoughts? You can create an entitlement with $0/month or just $1/month and think of that entitlement as providing access to your platform. In short, a contract + consumption can be configured to mimic a pure PAYG or pure contract product but the reverse is not possible.

More

This entry was posted in Computers, Software and tagged . Bookmark the permalink.

Leave a comment