Coupa · Capability

Coupa Core API — Invoices

Coupa Core API — Invoices. 8 operations. Lead operation: Coupa List invoices. Self-contained Naftiko capability covering one Coupa business surface.

Run with Naftiko CoupaInvoices

What You Can Do

GET
Listinvoices — Coupa List invoices
/v1/invoices
POST
Createinvoice — Coupa Create an invoice
/v1/invoices
GET
Getinvoice — Coupa Get an invoice
/v1/invoices/{id}
PUT
Updateinvoice — Coupa Update an invoice
/v1/invoices/{id}
PUT
Abandoninvoice — Coupa Abandon an invoice
/v1/invoices/{id}/abandon
PUT
Disputeinvoice — Coupa Dispute an invoice
/v1/invoices/{id}/dispute
PUT
Submitinvoice — Coupa Submit a draft invoice for approval
/v1/invoices/{id}/submit
PUT
Voidinvoice — Coupa Void an approved or pending invoice
/v1/invoices/{id}/void

MCP Tools

coupa-list-invoices

Coupa List invoices

read-only idempotent
coupa-create-invoice

Coupa Create an invoice

coupa-get-invoice

Coupa Get an invoice

read-only idempotent
coupa-update-invoice

Coupa Update an invoice

idempotent
coupa-abandon-invoice

Coupa Abandon an invoice

idempotent
coupa-dispute-invoice

Coupa Dispute an invoice

idempotent
coupa-submit-draft-invoice-approval

Coupa Submit a draft invoice for approval

idempotent
coupa-void-approved-pending-invoice

Coupa Void an approved or pending invoice

idempotent

Capability Spec

core-invoices.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Coupa Core API — Invoices
  description: 'Coupa Core API — Invoices. 8 operations. Lead operation: Coupa List invoices. Self-contained Naftiko capability
    covering one Coupa business surface.'
  tags:
  - Coupa
  - Invoices
  created: '2026-05-19'
  modified: '2026-05-19'
binds:
- namespace: env
  keys:
    COUPA_API_KEY: COUPA_API_KEY
capability:
  consumes:
  - type: http
    namespace: core-invoices
    baseUri: https://{instance}.coupahost.com/api
    description: Coupa Core API — Invoices business capability. Self-contained, no shared references.
    resources:
    - name: invoices
      path: /invoices
      operations:
      - name: listinvoices
        method: GET
        description: Coupa List invoices
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: status
          in: query
          type: string
          description: Filter by invoice status. Full list includes new, draft, pending_approval, approved, pending_receipt,
            processing, payable_adjustment, on_hold, ap_hold, booking_
        - name: invoice-number
          in: query
          type: string
          description: Filter by invoice number
        - name: supplier[name]
          in: query
          type: string
          description: Filter by supplier name
        - name: updated-at[gt]
          in: query
          type: string
          description: Filter for records updated after this datetime
        - name: exported
          in: query
          type: boolean
          description: Filter by export status
      - name: createinvoice
        method: POST
        description: Coupa Create an invoice
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: invoices-id
      path: /invoices/{id}
      operations:
      - name: getinvoice
        method: GET
        description: Coupa Get an invoice
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: updateinvoice
        method: PUT
        description: Coupa Update an invoice
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: invoices-id-abandon
      path: /invoices/{id}/abandon
      operations:
      - name: abandoninvoice
        method: PUT
        description: Coupa Abandon an invoice
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: invoices-id-dispute
      path: /invoices/{id}/dispute
      operations:
      - name: disputeinvoice
        method: PUT
        description: Coupa Dispute an invoice
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: invoices-id-submit
      path: /invoices/{id}/submit
      operations:
      - name: submitinvoice
        method: PUT
        description: Coupa Submit a draft invoice for approval
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: invoices-id-void
      path: /invoices/{id}/void
      operations:
      - name: voidinvoice
        method: PUT
        description: Coupa Void an approved or pending invoice
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    authentication:
      type: bearer
      token: '{{env.COUPA_API_KEY}}'
  exposes:
  - type: rest
    namespace: core-invoices-rest
    port: 8080
    description: REST adapter for Coupa Core API — Invoices. One Spectral-compliant resource per consumed operation, prefixed
      with /v1.
    resources:
    - path: /v1/invoices
      name: invoices
      description: REST surface for invoices.
      operations:
      - method: GET
        name: listinvoices
        description: Coupa List invoices
        call: core-invoices.listinvoices
        with:
          status: rest.status
          invoice-number: rest.invoice-number
          supplier[name]: rest.supplier[name]
          updated-at[gt]: rest.updated-at[gt]
          exported: rest.exported
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: createinvoice
        description: Coupa Create an invoice
        call: core-invoices.createinvoice
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/invoices/{id}
      name: invoices-id
      description: REST surface for invoices-id.
      operations:
      - method: GET
        name: getinvoice
        description: Coupa Get an invoice
        call: core-invoices.getinvoice
        outputParameters:
        - type: object
          mapping: $.
      - method: PUT
        name: updateinvoice
        description: Coupa Update an invoice
        call: core-invoices.updateinvoice
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/invoices/{id}/abandon
      name: invoices-id-abandon
      description: REST surface for invoices-id-abandon.
      operations:
      - method: PUT
        name: abandoninvoice
        description: Coupa Abandon an invoice
        call: core-invoices.abandoninvoice
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/invoices/{id}/dispute
      name: invoices-id-dispute
      description: REST surface for invoices-id-dispute.
      operations:
      - method: PUT
        name: disputeinvoice
        description: Coupa Dispute an invoice
        call: core-invoices.disputeinvoice
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/invoices/{id}/submit
      name: invoices-id-submit
      description: REST surface for invoices-id-submit.
      operations:
      - method: PUT
        name: submitinvoice
        description: Coupa Submit a draft invoice for approval
        call: core-invoices.submitinvoice
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/invoices/{id}/void
      name: invoices-id-void
      description: REST surface for invoices-id-void.
      operations:
      - method: PUT
        name: voidinvoice
        description: Coupa Void an approved or pending invoice
        call: core-invoices.voidinvoice
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: core-invoices-mcp
    port: 9090
    transport: http
    description: MCP adapter for Coupa Core API — Invoices. One tool per consumed operation, routed inline through this capability's
      consumes block.
    tools:
    - name: coupa-list-invoices
      description: Coupa List invoices
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: core-invoices.listinvoices
      with:
        status: tools.status
        invoice-number: tools.invoice-number
        supplier[name]: tools.supplier[name]
        updated-at[gt]: tools.updated-at[gt]
        exported: tools.exported
      outputParameters:
      - type: object
        mapping: $.
    - name: coupa-create-invoice
      description: Coupa Create an invoice
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: core-invoices.createinvoice
      with:
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: coupa-get-invoice
      description: Coupa Get an invoice
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: core-invoices.getinvoice
      outputParameters:
      - type: object
        mapping: $.
    - name: coupa-update-invoice
      description: Coupa Update an invoice
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: core-invoices.updateinvoice
      with:
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: coupa-abandon-invoice
      description: Coupa Abandon an invoice
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: core-invoices.abandoninvoice
      outputParameters:
      - type: object
        mapping: $.
    - name: coupa-dispute-invoice
      description: Coupa Dispute an invoice
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: core-invoices.disputeinvoice
      with:
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: coupa-submit-draft-invoice-approval
      description: Coupa Submit a draft invoice for approval
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: core-invoices.submitinvoice
      outputParameters:
      - type: object
        mapping: $.
    - name: coupa-void-approved-pending-invoice
      description: Coupa Void an approved or pending invoice
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: core-invoices.voidinvoice
      outputParameters:
      - type: object
        mapping: $.