AWS Marketplace Agreement Service

2026/03/31 - AWS Marketplace Agreement Service - 8 new api methods

Changes  This release adds 8 new APIs for AWS Marketplace sellers. 4 APIs for Cancellations (Send, List, Get, Cancel action on AgreementCancellationRequest), 3 APIs for Billing Adjustments (BatchCreate, List, Get action on BillingAdjustmentRequest), and 1 API to List Invoices (ListAgreementInvoiceLineItems)

ListBillingAdjustmentRequests (new) Link ¶

Lists billing adjustment requests for a specific agreement. Sellers (proposers) can use this operation to view all billing adjustment requests associated with an agreement.

See also: AWS API Documentation

Request Syntax

client.list_billing_adjustment_requests(
    agreementId='string',
    status='PENDING'|'VALIDATION_FAILED'|'COMPLETED',
    createdAfter=datetime(2015, 1, 1),
    createdBefore=datetime(2015, 1, 1),
    maxResults=123,
    catalog='string',
    agreementType='string',
    nextToken='string'
)
type agreementId:

string

param agreementId:

The unique identifier of the agreement to list billing adjustment requests for.

type status:

string

param status:

An optional filter to return billing adjustment requests with the specified status.

type createdAfter:

datetime

param createdAfter:

An optional filter to return billing adjustment requests created after the specified POSIX timestamp (Unix epoch seconds).

type createdBefore:

datetime

param createdBefore:

An optional filter to return billing adjustment requests created before the specified POSIX timestamp (Unix epoch seconds).

type maxResults:

integer

param maxResults:

The maximum number of billing adjustment requests to return in the response.

type catalog:

string

param catalog:

An optional filter to return billing adjustment requests by catalog (e.g., AWSMarketplace).

type agreementType:

string

param agreementType:

An optional filter to return billing adjustment requests by agreement type (e.g., PurchaseAgreement).

type nextToken:

string

param nextToken:

A token to specify where to start pagination. Use the nextToken value from a previous response to retrieve the next page of results.

rtype:

dict

returns:

Response Syntax

{
    'nextToken': 'string',
    'items': [
        {
            'billingAdjustmentRequestId': 'string',
            'originalInvoiceId': 'string',
            'adjustmentAmount': 'string',
            'currencyCode': 'string',
            'status': 'PENDING'|'VALIDATION_FAILED'|'COMPLETED',
            'agreementId': 'string',
            'createdAt': datetime(2015, 1, 1),
            'updatedAt': datetime(2015, 1, 1),
            'agreementType': 'string',
            'catalog': 'string'
        },
    ]
}

Response Structure

  • (dict) --

    • nextToken (string) --

      A token to retrieve the next page of results. If null, there are no more results to retrieve.

    • items (list) --

      An array of BillingAdjustmentSummary objects containing summary information about each billing adjustment request.

      • (dict) --

        Summary view of a billing adjustment request.

        • billingAdjustmentRequestId (string) --

          The unique identifier of the billing adjustment request.

        • originalInvoiceId (string) --

          The identifier of the original invoice being adjusted.

        • adjustmentAmount (string) --

          The adjustment amount as a string representation of a decimal number.

        • currencyCode (string) --

          The currency code for the adjustment amount.

        • status (string) --

          The current status of the billing adjustment request.

        • agreementId (string) --

          The unique identifier of the agreement associated with this billing adjustment request.

        • createdAt (datetime) --

          The date and time when the billing adjustment request was created, as a POSIX timestamp (Unix epoch seconds).

        • updatedAt (datetime) --

          The date and time when the billing adjustment request was last updated, as a POSIX timestamp (Unix epoch seconds).

        • agreementType (string) --

          The type of agreement.

        • catalog (string) --

          The catalog in which the agreement was created.

ListAgreementCancellationRequests (new) Link ¶

Lists agreement cancellation requests available to you as a seller or buyer. Both sellers (proposers) and buyers (acceptors) can use this operation to find cancellation requests by specifying their party type and applying optional filters.

See also: AWS API Documentation

Request Syntax

client.list_agreement_cancellation_requests(
    partyType='string',
    agreementId='string',
    status='PENDING_APPROVAL'|'APPROVED'|'REJECTED'|'CANCELLED'|'VALIDATION_FAILED',
    agreementType='string',
    catalog='string',
    maxResults=123,
    nextToken='string'
)
type partyType:

string

param partyType:

[REQUIRED]

The party type for the cancellation requests. Required parameter. Use Proposer to list cancellation requests where you are the seller, or Acceptor to list cancellation requests where you are the buyer.

type agreementId:

string

param agreementId:

An optional parameter to filter cancellation requests for a specific agreement.

type status:

string

param status:

An optional parameter to filter cancellation requests by status. Valid values include PENDING_APPROVAL, APPROVED, REJECTED, CANCELLED, and VALIDATION_FAILED.

type agreementType:

string

param agreementType:

An optional parameter to filter cancellation requests by agreement type (e.g., PurchaseAgreement).

type catalog:

string

param catalog:

An optional parameter to filter cancellation requests by catalog (e.g., AWSMarketplace).

type maxResults:

integer

param maxResults:

The maximum number of cancellation requests to return in the response.

type nextToken:

string

param nextToken:

A token to specify where to start pagination. Use the nextToken value from a previous response to retrieve the next page of results.

rtype:

dict

returns:

Response Syntax

{
    'nextToken': 'string',
    'items': [
        {
            'agreementCancellationRequestId': 'string',
            'agreementId': 'string',
            'status': 'PENDING_APPROVAL'|'APPROVED'|'REJECTED'|'CANCELLED'|'VALIDATION_FAILED',
            'reasonCode': 'INCORRECT_TERMS_ACCEPTED'|'REPLACING_AGREEMENT'|'TEST_AGREEMENT'|'ALTERNATIVE_PROCUREMENT_CHANNEL'|'PRODUCT_DISCONTINUED'|'UNINTENDED_RENEWAL'|'BUYER_DISSATISFACTION'|'OTHER',
            'agreementType': 'string',
            'catalog': 'string',
            'createdAt': datetime(2015, 1, 1),
            'updatedAt': datetime(2015, 1, 1)
        },
    ]
}

Response Structure

  • (dict) --

    • nextToken (string) --

      A token to retrieve the next page of results. If null, there are no more results to retrieve.

    • items (list) --

      An array of AgreementCancellationRequestSummary objects containing summary information about each cancellation request.

      • (dict) --

        Summary view of an agreement cancellation request.

        • agreementCancellationRequestId (string) --

          The unique identifier of the cancellation request.

        • agreementId (string) --

          The unique identifier of the agreement associated with this cancellation request.

        • status (string) --

          The current status of the cancellation request. Possible values include PENDING_APPROVAL, APPROVED, REJECTED, CANCELLED, and VALIDATION_FAILED.

        • reasonCode (string) --

          The reason code provided for the cancellation.

        • agreementType (string) --

          The type of agreement.

        • catalog (string) --

          The catalog in which the agreement was created.

        • createdAt (datetime) --

          The date and time when the cancellation request was created, as a POSIX timestamp (Unix epoch seconds).

        • updatedAt (datetime) --

          The date and time when the cancellation request was last updated, as a POSIX timestamp (Unix epoch seconds).

GetBillingAdjustmentRequest (new) Link ¶

Retrieves detailed information about a specific billing adjustment request. Sellers (proposers) can use this operation to view the status and details of a billing adjustment request they submitted.

See also: AWS API Documentation

Request Syntax

client.get_billing_adjustment_request(
    agreementId='string',
    billingAdjustmentRequestId='string'
)
type agreementId:

string

param agreementId:

[REQUIRED]

The unique identifier of the agreement associated with the billing adjustment request.

type billingAdjustmentRequestId:

string

param billingAdjustmentRequestId:

[REQUIRED]

The unique identifier of the billing adjustment request.

rtype:

dict

returns:

Response Syntax

{
    'billingAdjustmentRequestId': 'string',
    'agreementId': 'string',
    'adjustmentReasonCode': 'INCORRECT_TERMS_ACCEPTED'|'INCORRECT_METERING'|'TEST_ENVIRONMENT_CHARGES'|'ALTERNATIVE_PROCUREMENT_CHANNEL'|'UNINTENDED_RENEWAL'|'BUYER_DISSATISFACTION'|'OTHER',
    'description': 'string',
    'originalInvoiceId': 'string',
    'adjustmentAmount': 'string',
    'currencyCode': 'string',
    'status': 'PENDING'|'VALIDATION_FAILED'|'COMPLETED',
    'statusMessage': 'string',
    'createdAt': datetime(2015, 1, 1),
    'updatedAt': datetime(2015, 1, 1)
}

Response Structure

  • (dict) --

    • billingAdjustmentRequestId (string) --

      The unique identifier of the billing adjustment request.

    • agreementId (string) --

      The unique identifier of the agreement associated with this billing adjustment request.

    • adjustmentReasonCode (string) --

      The reason code for the billing adjustment.

    • description (string) --

      The detailed description of the billing adjustment reason, if provided.

    • originalInvoiceId (string) --

      The identifier of the original invoice being adjusted.

    • adjustmentAmount (string) --

      The adjustment amount as a string representation of a decimal number.

    • currencyCode (string) --

      The currency code for the adjustment amount (e.g., USD).

    • status (string) --

      The current status of the billing adjustment request.

    • statusMessage (string) --

      A message providing additional context about the billing adjustment request status. This field is populated only when the status is VALIDATION_FAILED.

    • createdAt (datetime) --

      The date and time when the billing adjustment request was created, as a POSIX timestamp (Unix epoch seconds).

    • updatedAt (datetime) --

      The date and time when the billing adjustment request was last updated, as a POSIX timestamp (Unix epoch seconds).

ListAgreementInvoiceLineItems (new) Link ¶

Allows sellers (proposers) to retrieve aggregated billing data from AWS Marketplace agreements using flexible grouping. Supports invoice-level aggregation with filtering by billing period, invoice type, and issued date.

See also: AWS API Documentation

Request Syntax

client.list_agreement_invoice_line_items(
    agreementId='string',
    groupBy='INVOICE_ID',
    invoiceId='string',
    invoiceType='INVOICE'|'CREDIT_MEMO',
    invoiceBillingPeriod={
        'month': 123,
        'year': 123
    },
    beforeIssuedTime=datetime(2015, 1, 1),
    afterIssuedTime=datetime(2015, 1, 1),
    maxResults=123,
    nextToken='string'
)
type agreementId:

string

param agreementId:

[REQUIRED]

The unique identifier of the agreement.

type groupBy:

string

param groupBy:

[REQUIRED]

Specifies a grouping strategy for line items. Currently supports INVOICE_ID.

type invoiceId:

string

param invoiceId:

An optional filter to retrieve invoice information for a specific invoice.

type invoiceType:

string

param invoiceType:

An optional filter for the type of invoice. Valid values are INVOICE and CREDIT_MEMO.

type invoiceBillingPeriod:

dict

param invoiceBillingPeriod:

An optional filter for the billing period associated with the invoice.

  • month (integer) -- [REQUIRED]

    The billing period month. Valid range: 1-12.

  • year (integer) -- [REQUIRED]

    The billing period year.

type beforeIssuedTime:

datetime

param beforeIssuedTime:

An optional filter for invoices issued before the specified timestamp.

type afterIssuedTime:

datetime

param afterIssuedTime:

An optional filter for invoices issued after the specified timestamp.

type maxResults:

integer

param maxResults:

The maximum number of results to return in the response.

type nextToken:

string

param nextToken:

A token to specify where to start pagination.

rtype:

dict

returns:

Response Syntax

{
    'agreementInvoiceLineItemGroupSummaries': [
        {
            'agreementId': 'string',
            'invoiceId': 'string',
            'pricingCurrencyAmount': {
                'amount': 'string',
                'maxAdjustmentAmount': 'string',
                'currencyCode': 'string'
            },
            'invoiceBillingPeriod': {
                'month': 123,
                'year': 123
            },
            'issuedTime': datetime(2015, 1, 1),
            'invoiceType': 'INVOICE'|'CREDIT_MEMO',
            'invoicingEntity': {
                'legalName': 'string',
                'branchName': 'string'
            }
        },
    ],
    'nextToken': 'string'
}

Response Structure

  • (dict) --

    • agreementInvoiceLineItemGroupSummaries (list) --

      A list of grouped billing data objects.

      • (dict) --

        A summary of grouped billing data for an agreement invoice line item.

        • agreementId (string) --

          The unique identifier of the agreement.

        • invoiceId (string) --

          The identifier of the invoice for this group.

        • pricingCurrencyAmount (dict) --

          Monetary amounts for this invoice group.

          • amount (string) --

            The monetary amount before tax.

          • maxAdjustmentAmount (string) --

            The maximum refundable amount as a string representation of a decimal number.

          • currencyCode (string) --

            The 3-letter ISO 4217 currency code (e.g., USD, EUR, JPY).

        • invoiceBillingPeriod (dict) --

          The billing period associated with this group.

          • month (integer) --

            The billing period month. Valid range: 1-12.

          • year (integer) --

            The billing period year.

        • issuedTime (datetime) --

          The timestamp when the invoice containing this group was created.

        • invoiceType (string) --

          The type of invoice. Valid values are INVOICE and CREDIT_MEMO.

        • invoicingEntity (dict) --

          The entity that issues the invoice.

          • legalName (string) --

            The legal name of the invoicing entity.

          • branchName (string) --

            The branch name of the invoicing entity.

    • nextToken (string) --

      A token to retrieve the next page of results. If not present, there are no more results available.

GetAgreementCancellationRequest (new) Link ¶

Retrieves detailed information about a specific agreement cancellation request. Both sellers (proposers) and buyers (acceptors) can use this operation to view cancellation requests associated with their agreements.

See also: AWS API Documentation

Request Syntax

client.get_agreement_cancellation_request(
    agreementCancellationRequestId='string',
    agreementId='string'
)
type agreementCancellationRequestId:

string

param agreementCancellationRequestId:

[REQUIRED]

The unique identifier of the cancellation request.

type agreementId:

string

param agreementId:

[REQUIRED]

The unique identifier of the agreement associated with the cancellation request.

rtype:

dict

returns:

Response Syntax

{
    'agreementCancellationRequestId': 'string',
    'agreementId': 'string',
    'reasonCode': 'INCORRECT_TERMS_ACCEPTED'|'REPLACING_AGREEMENT'|'TEST_AGREEMENT'|'ALTERNATIVE_PROCUREMENT_CHANNEL'|'PRODUCT_DISCONTINUED'|'UNINTENDED_RENEWAL'|'BUYER_DISSATISFACTION'|'OTHER',
    'description': 'string',
    'status': 'PENDING_APPROVAL'|'APPROVED'|'REJECTED'|'CANCELLED'|'VALIDATION_FAILED',
    'statusMessage': 'string',
    'createdAt': datetime(2015, 1, 1),
    'updatedAt': datetime(2015, 1, 1)
}

Response Structure

  • (dict) --

    • agreementCancellationRequestId (string) --

      The unique identifier of the cancellation request.

    • agreementId (string) --

      The unique identifier of the agreement associated with this cancellation request. Use DescribeAgreement to retrieve full agreement details.

    • reasonCode (string) --

      The reason code provided for the cancellation.

    • description (string) --

      The detailed description of the cancellation reason, if provided.

    • status (string) --

      The current status of the cancellation request. Possible values include PENDING_APPROVAL, APPROVED, REJECTED, CANCELLED, and VALIDATION_FAILED.

    • statusMessage (string) --

      A message providing additional context about the cancellation request status.

    • createdAt (datetime) --

      The date and time when the cancellation request was created, as a POSIX timestamp (Unix epoch seconds).

    • updatedAt (datetime) --

      The date and time when the cancellation request was last updated, as a POSIX timestamp (Unix epoch seconds).

BatchCreateBillingAdjustmentRequest (new) Link ¶

Allows sellers (proposers) to submit billing adjustment requests for one or more invoices within an agreement. Each entry in the batch specifies an invoice and the adjustment amount. The operation returns successfully created adjustment request IDs and any errors for entries that failed validation.

See also: AWS API Documentation

Request Syntax

client.batch_create_billing_adjustment_request(
    billingAdjustmentRequestEntries=[
        {
            'agreementId': 'string',
            'originalInvoiceId': 'string',
            'adjustmentAmount': 'string',
            'currencyCode': 'string',
            'adjustmentReasonCode': 'INCORRECT_TERMS_ACCEPTED'|'INCORRECT_METERING'|'TEST_ENVIRONMENT_CHARGES'|'ALTERNATIVE_PROCUREMENT_CHANNEL'|'UNINTENDED_RENEWAL'|'BUYER_DISSATISFACTION'|'OTHER',
            'description': 'string',
            'clientToken': 'string'
        },
    ]
)
type billingAdjustmentRequestEntries:

list

param billingAdjustmentRequestEntries:

[REQUIRED]

A list of billing adjustment request entries. Each entry specifies the invoice and adjustment details.

  • (dict) --

    An individual entry in a batch billing adjustment request, specifying the invoice and adjustment details.

    • agreementId (string) -- [REQUIRED]

      The unique identifier of the agreement associated with the invoice.

    • originalInvoiceId (string) -- [REQUIRED]

      The identifier of the original invoice to adjust.

    • adjustmentAmount (string) -- [REQUIRED]

      The adjustment amount as a string representation of a decimal number in the currency of the invoice.

    • currencyCode (string) -- [REQUIRED]

      The 3-letter ISO 4217 currency code for the adjustment amount (e.g., USD).

    • adjustmentReasonCode (string) -- [REQUIRED]

      The reason code for the billing adjustment. Valid values include INCORRECT_TERMS_ACCEPTED, INCORRECT_METERING, TEST_ENVIRONMENT_CHARGES, ALTERNATIVE_PROCUREMENT_CHANNEL, UNINTENDED_RENEWAL, BUYER_DISSATISFACTION, and OTHER.

    • description (string) --

      An optional detailed description of the adjustment reason.

    • clientToken (string) -- [REQUIRED]

      A unique, case-sensitive identifier that you provide to ensure the idempotency of the request.

rtype:

dict

returns:

Response Syntax

{
    'items': [
        {
            'billingAdjustmentRequestId': 'string',
            'clientToken': 'string'
        },
    ],
    'errors': [
        {
            'code': 'CONFLICT_EXCEPTION'|'VALIDATION_EXCEPTION'|'RESOURCE_NOT_FOUND_EXCEPTION'|'INTERNAL_FAILURE',
            'message': 'string',
            'clientToken': 'string'
        },
    ]
}

Response Structure

  • (dict) --

    • items (list) --

      A list of successfully created billing adjustment items, each containing the billingAdjustmentRequestId and clientToken.

      • (dict) --

        A successfully created billing adjustment request item.

        • billingAdjustmentRequestId (string) --

          The unique identifier of the created billing adjustment request.

        • clientToken (string) --

          The client token provided in the corresponding request entry.

    • errors (list) --

      A list of errors for entries that failed validation, each containing the clientToken, error code, and message.

      • (dict) --

        An error for a billing adjustment request entry that failed validation.

        • code (string) --

          The error code indicating the reason for failure.

        • message (string) --

          A human-readable message describing the error.

        • clientToken (string) --

          The client token of the request entry that failed.

SendAgreementCancellationRequest (new) Link ¶

Allows sellers (proposers) to submit a cancellation request for an active agreement. The cancellation request is created in PENDING_APPROVAL status, at which point the buyer can review it.

See also: AWS API Documentation

Request Syntax

client.send_agreement_cancellation_request(
    agreementId='string',
    reasonCode='INCORRECT_TERMS_ACCEPTED'|'REPLACING_AGREEMENT'|'TEST_AGREEMENT'|'ALTERNATIVE_PROCUREMENT_CHANNEL'|'PRODUCT_DISCONTINUED'|'UNINTENDED_RENEWAL'|'BUYER_DISSATISFACTION'|'OTHER',
    clientToken='string',
    description='string'
)
type agreementId:

string

param agreementId:

[REQUIRED]

The unique identifier of the agreement for which the cancellation request is being submitted.

type reasonCode:

string

param reasonCode:

[REQUIRED]

The reason code for the cancellation request. Valid values include INCORRECT_TERMS_ACCEPTED, REPLACING_AGREEMENT, TEST_AGREEMENT, ALTERNATIVE_PROCUREMENT_CHANNEL, PRODUCT_DISCONTINUED, UNINTENDED_RENEWAL, BUYER_DISSATISFACTION, and OTHER.

type clientToken:

string

param clientToken:

A unique, case-sensitive identifier that you provide to ensure the idempotency of the request.

This field is autopopulated if not provided.

type description:

string

param description:

An optional detailed description of the cancellation reason (1-2000 characters).

rtype:

dict

returns:

Response Syntax

{
    'agreementId': 'string',
    'agreementCancellationRequestId': 'string',
    'status': 'PENDING_APPROVAL'|'APPROVED'|'REJECTED'|'CANCELLED'|'VALIDATION_FAILED',
    'reasonCode': 'INCORRECT_TERMS_ACCEPTED'|'REPLACING_AGREEMENT'|'TEST_AGREEMENT'|'ALTERNATIVE_PROCUREMENT_CHANNEL'|'PRODUCT_DISCONTINUED'|'UNINTENDED_RENEWAL'|'BUYER_DISSATISFACTION'|'OTHER',
    'description': 'string',
    'createdAt': datetime(2015, 1, 1),
    'updatedAt': datetime(2015, 1, 1)
}

Response Structure

  • (dict) --

    • agreementId (string) --

      The unique identifier of the agreement.

    • agreementCancellationRequestId (string) --

      The unique identifier for the created cancellation request.

    • status (string) --

      The current status of the cancellation request. The initial status is PENDING_APPROVAL.

    • reasonCode (string) --

      The reason code provided for the cancellation.

    • description (string) --

      The detailed description of the cancellation reason, if provided.

    • createdAt (datetime) --

      The time when the cancellation request was created, as a POSIX timestamp (Unix epoch seconds).

    • updatedAt (datetime) --

      The time when the cancellation request was last updated, as a POSIX timestamp (Unix epoch seconds).

CancelAgreementCancellationRequest (new) Link ¶

Allows sellers (proposers) to withdraw an existing agreement cancellation request that is in a pending state. Once cancelled, the cancellation request transitions to CANCELLED status and can no longer be approved or rejected by the buyer.

See also: AWS API Documentation

Request Syntax

client.cancel_agreement_cancellation_request(
    agreementId='string',
    agreementCancellationRequestId='string',
    cancellationReason='string'
)
type agreementId:

string

param agreementId:

[REQUIRED]

The unique identifier of the agreement associated with the cancellation request.

type agreementCancellationRequestId:

string

param agreementCancellationRequestId:

[REQUIRED]

The unique identifier of the cancellation request to cancel.

type cancellationReason:

string

param cancellationReason:

[REQUIRED]

A required message explaining why the cancellation request is being withdrawn (1-2000 characters).

rtype:

dict

returns:

Response Syntax

{
    'agreementCancellationRequestId': 'string',
    'agreementId': 'string',
    'reasonCode': 'INCORRECT_TERMS_ACCEPTED'|'REPLACING_AGREEMENT'|'TEST_AGREEMENT'|'ALTERNATIVE_PROCUREMENT_CHANNEL'|'PRODUCT_DISCONTINUED'|'UNINTENDED_RENEWAL'|'BUYER_DISSATISFACTION'|'OTHER',
    'description': 'string',
    'status': 'PENDING_APPROVAL'|'APPROVED'|'REJECTED'|'CANCELLED'|'VALIDATION_FAILED',
    'statusMessage': 'string',
    'createdAt': datetime(2015, 1, 1),
    'updatedAt': datetime(2015, 1, 1)
}

Response Structure

  • (dict) --

    • agreementCancellationRequestId (string) --

      The unique identifier of the cancelled cancellation request.

    • agreementId (string) --

      The unique identifier of the agreement associated with this cancellation request.

    • reasonCode (string) --

      The original reason code provided when the cancellation request was created.

    • description (string) --

      The detailed description of the original cancellation reason, if provided.

    • status (string) --

      The updated status of the cancellation request, which is CANCELLED.

    • statusMessage (string) --

      A message providing additional context about the cancellation request status.

    • createdAt (datetime) --

      The date and time when the cancellation request was originally created, as a POSIX timestamp (Unix epoch seconds).

    • updatedAt (datetime) --

      The date and time when the cancellation request was cancelled, as a POSIX timestamp (Unix epoch seconds).