Skip to main content

Technical integration guide: processing payments with the Invoice API

This guide explains how to use the Qondor Invoice API to validate and process payments in your finance system.

Martin Moen avatar
Written by Martin Moen
Updated yesterday

Overview

When a project manager issues a payment in Qondor — whether an invoice specification, credit card payment, or credit note — it enters a processing queue. Your integration retrieves payments from this queue, validates them against your finance system, and reports the result back to Qondor.

Your integration handles:

  • Fetching unprocessed payments from the queue

  • Validating content (article codes, VAT rates, customer data, account mappings)

  • Creating invoices in your finance system

  • Reporting success or failure back to Qondor

Qondor handles:

  • Notifying project managers when processing fails

  • Displaying processing status and error messages

  • Allowing deletion of failed payments so corrected ones can be created

Flowchart:


Payment states

State

Description

Next actions

Unprocessed

Ready for your integration to pick up

Validate → SetAsProcessed or SetAsFailed

Processed

Successfully transferred to finance system

SetAsPaid (when paid)

Failed

Validation failed (final state)

Delete in Qondor, create new payment

Paid

Payment received


API endpoints

Method

Endpoint

Description

GET

Invoice/GetAllUnprocessedInvoices

Get payments ready for processing

GET

Invoice/{id}

Get full details of a payment

PUT

Invoice/SetAsProcessed

Mark as successfully processed

PUT

Invoice/SetAsFailed

Mark as failed (final state)

PUT

Invoice/SetAsPaid

Mark as paid


Step 1: Fetch unprocessed payments

GET /Invoicing/v1/Invoice/GetAllUnprocessedInvoices
Host: qondor.azure-api.net
Ocp-Apim-Subscription-Key: your-api-key
This returns all payments ready for processing, including:
  • Invoice specifications

  • Credit card payments

  • Credit notes (cancellations)

Note: Failed payments do not appear in this queue. Only unprocessed payments are returned.


Step 2: Validate and process

For each payment, validate the content against your finance system:

  • Article codes: Do product references exist in your system?

  • Customer data: Is the customer reference valid?


Step 3: Report the result

Success: SetAsProcessed

When the payment is successfully processed in your finance system:

PUT /Invoicing/v1/Invoice/SetAsProcessed
Host: qondor.azure-api.net
Ocp-Apim-Subscription-Key: your-api-key
Content-Type: application/json
{
"invoiceId": 12345,
"externalReference": "FIN-2024-00789"
}

Field

Required

Description

invoiceId

Yes

The Qondor payment ID

externalReference

No

Reference from your finance system (recommended)


Failure: SetAsFailed

When validation fails and the payment cannot be processed:
PUT /Invoicing/v1/Invoice/SetAsFailed
Host: qondor.azure-api.net
Ocp-Apim-Subscription-Key: your-api-key
Content-Type: application/json
{
"invoiceId": 12345,
"failureMessage": "Article code 'CONF-ROOM-DLX' not found in finance system"
}

Field

Required

Description

invoiceId

Yes

The Qondor payment ID

failureMessage

Yes

Clear description of why validation failed

What happens when you call SetAsFailed:

  1. The payment is marked as failed (final state)

  2. It is removed from the unprocessed queue

  3. An email notification is sent to the project manager with your failure message

  4. The failure message is displayed in Qondor with an error indicator

  5. For invoice payments: the project manager can delete the failed payment and create a new, corrected one

  6. For credit card payments: the payment cannot be deleted or edited — see FAQ below

Important: SetAsFailed is a final state. The payment cannot be reprocessed. If the underlying data needs to be corrected, the project manager must delete the failed payment in Qondor and create a new one.

Write clear failure messages — they help project managers understand exactly what needs to be fixed:

Good

Bad

"Article code 'ROOM-DLX' not found in finance system"

"Invalid article"

"Customer 'Acme Corp' (ref: CUST-999) not found"

"Customer error"

"VAT rate 12% not configured for product category 'Accommodation'"

"VAT error"


Step 4: Mark as paid

Once payment is received:

PUT /Invoicing/v1/Invoice/SetAsPaid
Host: qondor.azure-api.net
Ocp-Apim-Subscription-Key: your-api-key
Content-Type: application/json
{
"invoiceId": 12345,
"paidDate": "2024-02-10"
}

Edge case: SetAsUnprocessed

Note: This endpoint is for exceptional circumstances only, such as when your integration incorrectly marked a payment as processed.

PUT /Invoicing/v1/Invoice/SetAsUnprocessed
Host: qondor.azure-api.net
Ocp-Apim-Subscription-Key: your-api-key
Content-Type: application/json
{
"invoiceId": 12345
}

This returns a processed payment to the unprocessed queue. Use this only when:

  • Your integration made an error and marked something as processed when it shouldn't have been

  • A human administrator needs to trigger reprocessing

Restrictions:

  • Only works on processed payments (not failed ones)

  • Credit notes cannot be set back to unprocessed once processed


Invoice API Business rules summary

Action

Restriction

SetAsProcessed

Must not be already paid or failed

SetAsFailed

Must not be already processed or paid

SetAsUnprocessed

Only for processed payments; credit notes cannot be reverted

SetAsPaid

Must be processed; credit card payments cannot be manually set as paid

FAQ

What happens if a credit card payment is set to failed?

Credit card payments have already collected money before entering the processing queue. When set to failed:

  • The payment cannot be deleted (money has been collected)

  • The payment cannot be edited in Qondor

Recovery depends on where the error originated:

Error source

Can recover?

Action

Integration/finance system

Yes

Call SetAsUnprocessed to return to queue, then reprocess

Qondor data

No

Contact Qondor support for consulting options

When should I use SetAsUnprocessed?

Only use SetAsUnprocessed when your integration made an error - for example:

  • A bug in your validation logic incorrectly rejected the payment

  • A temporary issue in your finance system

  • Configuration was missing but has now been added

Do not use it to recover from data errors in Qondor, as the payment will fail again with the same error.

Did this answer your question?