openapi: 3.1.0
info:
  title: Brand API - Partner Invoices
  description: API for retrieving partner invoices, which are statements of amounts owed to partners that are automatically generated by impact.com.
  version: v14
servers:
- url: https://api.impact.com
security:
- basicAuth: []
paths:
  /Advertisers/{AccountSID}/Invoices:
    get:
      summary: List Invoices
      description: Returns a list of invoices, sorted with the most recent appearing first. The list can be filtered by a creation date range.
      operationId: listInvoices
      tags:
      - Invoices
      parameters:
      - name: AccountSID
        in: path
        required: true
        schema:
          type: string
      - name: StartDate
        in: query
        description: Filters to show invoices created on or after the specified date (ISO 8601).
        schema:
          type: string
          format: date-time
      - name: EndDate
        in: query
        description: Filters to show invoices created on or before the specified date (ISO 8601).
        schema:
          type: string
          format: date-time
      responses:
        '200':
          description: A list of invoice objects.
          content:
            application/json:
              schema:
                type: object
                properties:
                  Invoices:
                    type: array
                    description: The list of invoice objects.
                    items:
                      $ref: '#/components/schemas/Invoice'
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -L \
            --url 'https://api.impact.com/Advertisers/{AccountSID}/Invoices' \
            --user '{AccountSID}:{AuthToken}' \
            --header 'Accept: */*'
  /Advertisers/{AccountSID}/Invoices/{InvoiceId}:
    get:
      summary: Get Invoice Details
      description: Retrieves the details of a single invoice by its unique ID.
      operationId: getInvoiceById
      tags:
      - Invoices
      parameters:
      - name: AccountSID
        in: path
        required: true
        schema:
          type: string
      - name: InvoiceId
        in: path
        required: true
        description: The unique identifier for the invoice.
        schema:
          type: string
      responses:
        '200':
          description: A single invoice object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Invoice'
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -L \
            --url 'https://api.impact.com/Advertisers/{AccountSID}/Invoices/{InvoiceId}' \
            --user '{AccountSID}:{AuthToken}' \
            --header 'Accept: */*'
  /Advertisers/{AccountSID}/Invoices/{InvoiceId}/Download:
    get:
      summary: Download Invoice PDF
      description: Returns the specified invoice as a downloadable PDF file.
      operationId: downloadInvoicePdf
      tags:
      - Invoices
      parameters:
      - name: AccountSID
        in: path
        required: true
        schema:
          type: string
      - name: InvoiceId
        in: path
        required: true
        description: The unique identifier for the invoice.
        schema:
          type: string
      responses:
        '200':
          description: The invoice in PDF format.
          content:
            application/pdf:
              schema:
                type: string
                format: binary
      x-codeSamples:
      - lang: cURL
        source: |-
          curl -L \
            --url 'https://api.impact.com/Advertisers/{AccountSID}/Invoices/{InvoiceId}/Download' \
            --user '{AccountSID}:{AuthToken}' \
            --header 'Accept: */*'
components:
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: Use your AccountSID as the username and AuthToken as the password.
  schemas:
    Invoice:
      type: object
      properties:
        Id:
          type: string
          description: The unique identifier for the invoice.
          example: 1299679-33
        CreatedDate:
          type: string
          format: date-time
          description: The date and time the invoice was created.
          example: '2018-11-02T11:43:30-04:00'
        MediaId:
          type: integer
          description: The unique identifier for the partner the invoice is for.
          example: 1299679
        MediaName:
          type: string
          description: The display name of the partner the invoice is for.
          example: RoadRunner
        Currency:
          type: string
          description: Three-letter ISO 4217 currency code for the invoice amounts.
          example: USD
        TotalAmount:
          type: number
          format: decimal
          description: The total amount owed on the invoice.
          example: 65.00
        TotalVatAmount:
          type: number
          format: decimal
          description: The total VAT amount on the invoice.
          example: 0.00
        LineItems:
          type: array
          description: Summary line items for the invoice grouped by campaign and description.
          items:
            $ref: '#/components/schemas/LineItem'
        DetailedLineItems:
          type: array
          description: Detailed line items for the invoice with program-level breakdown.
          items:
            $ref: '#/components/schemas/DetailedLineItem'
        PDF:
          type: string
          format: uri-reference
          description: The URI to download the PDF for the invoice.
          example: /Advertisers/<AccountSID>/Invoices/1924609-1/Download
        Uri:
          type: string
          format: uri-reference
          description: The unique reference to this invoice in the impact.com API.
          example: /Advertisers/<AccountSID>/Invoices/1924609-1
    LineItem:
      type: object
      properties:
        CampaignId:
          type: integer
          description: The unique identifier of the campaign for this line item.
          example: 1000
        CampaignName:
          type: string
          description: The display name of the campaign.
          example: Acme Online
        Description:
          type: string
          description: The type of charge for this line item.
          enum:
          - MEDIA_PAYOUT
          - BONUS
          example: MEDIA_PAYOUT
        EventMonthYear:
          type: string
          description: The month and year (MYYYY) the events occurred.
          example: '92018'
        Actions:
          type: integer
          description: The number of actions covered by this line item.
          example: 13
        NetItemAmount:
          type: number
          format: decimal
          description: The net amount for this line item before VAT.
          example: 65.00
        VatItemAmount:
          type: number
          format: decimal
          description: The VAT amount for this line item.
          example: 0.00
        TotalItemAmount:
          type: number
          format: decimal
          description: The total amount for this line item (net + VAT).
          example: 65.00
        Status:
          type: string
          description: The payment status of this line item.
          enum:
          - PENDING
          - PAID
          - OVERDUE
          example: PAID
        DueDate:
          type: string
          format: date-time
          description: The date and time payment is due.
          example: '2018-10-16T00:00:00-04:00'
        PaidDate:
          type: string
          format: date-time
          nullable: true
          description: The date and time the line item was paid, if applicable.
          example: '2018-10-16T00:35:47-04:00'
    DetailedLineItem:
      type: object
      properties:
        AccountId:
          type: integer
          description: The unique identifier for the partner account.
          example: 1299679
        Name:
          type: string
          description: The display name of the partner account.
          example: ACME Online
        ProgramId:
          type: integer
          description: The unique identifier of the program.
          example: 1000
        ProgramName:
          type: string
          description: The display name of the program.
          example: ACME Online
        EventMonthYear:
          type: string
          description: The month and year (MYYYY) the events occurred.
          example: '92018'
        ActionAmount:
          type: number
          format: decimal
          description: The amount owed for actions in this period.
          example: 65.00
        OtherAmount:
          type: number
          format: decimal
          nullable: true
          description: Other amounts owed in this period, if any.
          example: 0.0
        TotalAmount:
          type: number
          format: decimal
          description: The total amount for this detailed line item.
          example: 65.00
x-default-client: cURL
