Only this pageAll pages
Powered by GitBook
1 of 32

Notify

Loading...

Loading...

Loading...

Loading...

Loading...

Information

Loading...

Loading...

Loading...

Loading...

Loading...

Customers

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Invoices

Loading...

Loading...

Loading...

Loading...

Loading...

Documents

Loading...

Loading...

Loading...

Loading...

Payments

Loading...

Loading...

Notify API Overview

Use the Notify API to send invoice, customer and payment information to the Notify platform. Notify and your app back-end will communicate by sending HTTP requests back and forth.

This page provides an overview of the Notify API. The topics in the chapter deal with a number of specific aspects of the API. We recommend to read these topics entirely.

If you have any questions about integrating our API, please contact us. We are happy to help!

The Notify REST API

The API implements a Representational state transfer (REST) architecture. Sounds technical, but it’s really quite easy. It mainly breaks down to HTTP-methods GET, PATCH, POST and DELETE matching the operations to read, update, create and delete.

REST also implies a nice and clean structure for URLs or endpoints. This means you can reach any part of the Notify API on https://api.notify.cm/v2/ adding the name of the resource you want to interact with.

Security
Authentication
API overview

Security

Maximum safety and usability

How does Notify create an API that’s maximally safe while being as easy to implement for developers as possible? By not giving in to the reflex of stacking equivalent safety measures and by not sending sensitive information when it’s not required.

Secure connection required

Notify uses the API-key as and requires HTTPS connections encrypted via TLS1.2 (or higher) to guarantee security. This means the Notify API can only be accessed through the secure https protocol. All of the API clients we publish use HTTPS.

End-to-end safety on the transport level is guaranteed by the HTTPS-requirement, no need to encrypt the data itself again. We only support TLS 1.2 (or higher). Connection is not possible when using a lower version.

HTTPS mitigates packet sniffing and timing & replay attacks. Thanks to HTTPS, data exchanged between Notify and the client is protected and guaranteed to be authentic. HTTPS implements hashed signatures, nonces and other tried and tested cryptographic safeties.

Man-in-the-middle attacks are prevented by strictly checking the HTTPS-certificate used on https://api.notify.cm/. If the client detects a fake certificate – let’s say because of a hacked DNS-server – no connection will be set up.

Sensitive information

All sensitive information is entered on our platform. No third-party software or databases will be used.

means of authentication

API overview

Customers API

Used for all customer data. Before storing any invoice data the customer should be stored in your administration.

Customers

Invoices API

Used for all invoice data. Send your invoice information to the Notify platform or update any invoice data just with a simple API call. Payment information can be send by an update or with the .

Documents API

Add your invoice documents (PDF) to your invoice data with a simple API call.

Payments API

Retrieved a payment on your Bank account? Just send a simple update to your Notify administration and you're up-to-date again.

Payment API
Invoices
Documents
Payments

Testing

During the process of building your integration, it is important to properly test it. As briefly explained in our authentication guide, you can access the test mode of the Notify API by using the Test API key. Your Test API key always starts with test_.

Any invoice or other resources you create in test mode are completely isolated from your live mode data. Going back and forth between test and live mode is as easy as switching out the API key.

Test mode data

When creating, updating, or listing data in test mode all data will be virtual and no data will be stored. So you're completely save to test with alle the data you want.

Delete customer

Delete a customer from your administration. For the record: Once deleted, you can't undo this action.

Delete customer

DELETE https://api.notify.cm/v2/customers/{customer_id}

Authentication: API keys

Headers

Name
Type
Description

Attention: Only empty customers can be deleted. First delete all invoices before deleting a customer. Deleting a non-empty customer will give an error.

Example

Response

Handling errors

HTTP status codes

Whenever you send a request to the Notify API you will get a response in format. This is a standard for data communication that’s easy to read for humans as well as machines. Alongside the JSON-response an HTTP status code is sent that shows whether the request was successful or not. If it was not, you can tell by the code and the message in the response what went wrong, why it went wrong and whether there is something you can do about it.

Authorization

string

Your test or live API key

HTTP/1.1 204 No Content
HTTP/1.1 400 Bad Request
Content-Type: application/json

{
    "status": 400,
    "title": "Bad Request",
    "detail": "Customer is not empty"
}
HTTP/1.1 404 Not Found
Content-Type: application/json

{
    "status": 404,
    "title": "Not Found",
    "detail": "No customer exists with id I_dont_exist."
}
curl -X DELETE https://api.notify.cm/v2/customers/a0f0660d-6c8d-422b-8114-e363b260521e \
   -H "Authorization: Bearer test_R7HQ9QpXgx8J32rW9X9UyXjgfNk6C7TQ2UD8M5rwf8vVnYxnSETvSuEC6SKFW8Ug" \
HTTP/1.1 204 No Content
A successful request

An HTTP status 200 OK, 201 Created or 204 No Content is issued whenever your request was a success. You see this type of response in our examples like this one below where we successfully retrieve an invoice.

Request

Response

The response types

The first digit of the status code indicates the type or class of the status. Using this first digit you can determine the best approach for dealing with an error. The following classes of codes are relevant to the Notify API:

  • A code in the 2xx range comes with a Notify API response indicating success.

  • A code in the 4xx range is an error code returned from the Notify API where the client (your responsibility) seems to be causing the error. Whenever this happens you can change your code to prevent the error from happening again. The error for this specific request usually will not go away by itself.

  • A code in the 5xx range is an error caused by the server (Our responsibility). So caused by the Notify API or it is infrastructure related. In the rare case you get this type of error, something is wrong with the Notify API. The errors should subside without your mediation.

Examples of error responses

Things will sometimes go wrong. For instance when a request is made with the wrong API key, this error will be the result:

Request

Response

Another error that occurs often, is the well known HTTP status 404 Not Found, which indicates the object you are trying to retrieve or manipulate does not exist:

Request

Response

Sometimes a status HTTP 422 Unprocessable Entity is returned. When it occurs there is extra information in the JSON about what part or field of your request is likely to be causing the error. In these cases you will find the response has the parameter field. In the example below we deliberately used an amount that was too high:

Request

Response

All possible status codes

The Notify API will only ever return a subset of all legal HTTP status codes. Here’s the full list:

Response

Description

200

OK - Your request was succesful

201

Created – The entity was created successfully.

204

No Content – The requested entity was canceled / deleted successfully.

400

Bad Request – The Notify API was unable to understand your request. There might be an error in your syntax.

401

Unauthorized – Your request was not executed due to failed authentication. Check your API key.

JSON (JavaScript Object Notation)

List payments

List payments

GET https://api.notify.cm/v2/payments

Authentication

Getting started

The Notify API offers authentication bases on API keys.

Creating API keys

curl -X GET https://api.notify.cm/v2/invoices/a0f0660d-6c8d-422b-8114-e363b260521e \
   -H "Authorization: Bearer test_R7HQ9QpXgx8J32rW9X9UyXjgfNk6C7TQ2UD8M5rwf8vVnYxnSETvSuEC6SKFW8Ug" \
HTTP/1.1 200 OK
Content-Type: application/hal+json

{
        "resource": "invoice",
        "id": "a0f0660d-6c8d-422b-8114-e363b260521e",
        "status":"open",
        "invoiceNumber":"20210001",
        "invoiceDate":"21-01-2021",
        "invoiceDuedate":"21-02-2021",
        "invoiceTotal":"480.00",
        "invoiceBalance":"330.00",
        "document":"36cf1c0d-53fe-4c73-8a46-f9f40cd99b65.pdf",
        "customer": {
                "id":"36cf1c0d-53fe-4c73-8a46-f9f40cd99b65",
                "number":"10001",
                "name":"Creditpartners B.V."
        }     
}
curl -X GET https://api.notify.cm/v2/invoices \
    -H "Authorization: Bearer test_deliberately_invalid_key"
HTTP/1.1 401 Unauthorized
Content-Type: application/hal+json

{
    "status": 401,
    "title": "Unauthorized Request",
    "details": "Missing authentication, or failed to authenticate"
}
curl -X GET https://api.notify.cm/v2/invoices/I_dont_exist \
    -H "Authorization: Bearer test_4BBB6H4s2jGi3ajsx4E2KqY5sxSXaRV"
HTTP/1.1 404 Not Found
Content-Type: application/json

{
    "status": 404,
    "title": "Not Found",
    "detail": "No invoice exists with id I_dont_exist."
}
curl -X POST https://api.notify.cm/v2/invoices \
   -H "Authorization: Bearer test_dHar4XY7LxsDOtmnkVtjNVWXLSlXsM" \
   -d "customer=a0f0660d-6c8d-422b-8114-e363b260521e" \
   -d "invoiceNumber=10001" \
   -d "InvoiceDate=28-01-2021" \
   -d "InvoiceDuedate=28-02-2021" \
   -d "InvoiceTotal=50000000.00"
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/hal+json

{
    "status": 422,
    "title": "Unprocessable Entity",
    "detail": "The amount is higher than the maximum",
    "field": "invoicetotal"
}

403

Forbidden – You do not have access to the requested resource.

404

Not Found – The object referenced by your URL does not exist.

405

Method Not Allowed – You are trying to use an HTTP method that is not applicable on this URL or resource. Refer to the Allow header to see which methods the endpoint supports.

409

Conflict – You are making a duplicate API call that was probably a mistake (only in v2).

410

Gone – You are trying to access an object, which has previously been deleted (only in v2).

415

Unsupported Media Type – Your request’s encoding is not supported or is incorrectly understood. Please always use JSON.

422

Unprocessable Entity – We could not process your request due to another reason than the ones listed above. The response usually contains a field property to indicate which field is causing the issue.

429

Too Many Requests – Your request has hit a rate limit. Please wait for a bit and retry.

500

Internal Server Error – An internal server error occurred while processing your request. Our developers are notified automatically, but if you have any information on how you triggered the problem, please contact us.

502

Bad Gateway – The service is temporarily unavailable, either due to calamity or (planned) maintenance. Please retry the request at a later time.

503

Service Unavailable – The service is temporarily unavailable, either due to calamity or (planned) maintenance. Please retry the request at a later time.

504

Gateway Timeout – Your request is causing an unusually long process time.

Upload by e-mail

Last, you can also send an e-mail (one per invoice) with the document attached. You can send the e-mail to your personal import mailbox, set in the API section in your Notify dashboard.

There are two ways to connect your files to the right invoices:

  1. Use the unique Notify id in the file name f.e. 0f0660d-6c8d-422b-8114-e363b260521e.pdf

  2. Use your invoice number in the file name f.e. 10001.pdf

Together with your e-mail credentials, we can connect the file to the right invoice.

The first thing you need is a company profile. Each company profile has a Live API key and a Test API key (sandbox). While building and testing your integration, you should use the Test API key. Once you are ready to start processing real data, switch out your test key for the Live API key.

Of course it’s very important to keep any API keys secure. Do not ever share them. However, if a key leaks you can always regenerate it. Do not forget to apply new keys to your code. Until you do your integration will not work.

Authenticating an API call

The API key or token must be sent along with each API request, by providing it in the HTTP call’s Authorization header using the Bearer method. For example: a valid Authorization header is Bearer test_R7HQ9QpXgx8J32rW9X9UyXjgfNk6C7TQ2UD8M5rwf8vVnYxnSETvSuEC6SKFW8Ug.

In the example below we use a Test API key on the GET method of the invoices resource. This method fetches an invoice - in this case the invoice with the fictional invoice ID a0f0660d-6c8d-422b-8114-e363b260521e.

We always provide two API keys:

A Live API key, starting with live_ and a Test API key, starting with test_. You can find more information about testing in the Testing guide.

The response will be JSON.

curl -X GET https://api.notify.cm/v2/invoices/a0f0660d-6c8d-422b-8114-e363b260521e \
    -H "Authorization: Bearer test_R7HQ9QpXgx8J32rW9X9UyXjgfNk6C7TQ2UD8M5rwf8vVnYxnSETvSuEC6SKFW8Ug"
HTTP/1.1 200 OK
Content-Type: application/hal+json

{
        "resource": "invoice",
        "id": "a0f0660d-6c8d-422b-8114-e363b260521e",
        "status":"open",
        "invoiceNumber":"20210001",
        "invoiceDate":"21-01-2021",
        "invoiceDuedate":"21-02-2021",
        "invoiceTotal":"480.00",
        "invoiceBalance":"330.00",
        "document":"36cf1c0d-53fe-4c73-8a46-f9f40cd99b65.pdf",
        "customer": {
                "id":"36cf1c0d-53fe-4c73-8a46-f9f40cd99b65",
                "number":"10001",
                "name":"Creditpartners B.V."
        }     
}
Path Parameters
Name
Type
Description

Authorization

string

Your test or live API key

Query Parameters

Name
Type
Description

Limit

string

The number of payments to return (max 250).

From

string

Used for pagination. Offset the result set to the payment with this ID. The payment with this ID is included in the result as well.

HTTP/1.1 200 OK
Content-Type: application/hal+json

{
   "payments": [
        {
            "resource": "payments",
            "id": "07d125ef-8e59-4629-8ef5-5c82de9979e9",
            "date":"21-01-2021",
            "amount":"100.00",
            "invoice": {
                "id":"a0f0660d-6c8d-422b-8114-e363b260521e",
                "number":"10001",
                "invoiceTotal":"480.00",
                "invoiceBalance":"380.00"
            },
            "customer": {
                "id":"36cf1c0d-53fe-4c73-8a46-f9f40cd99b65",

Example

Response

Create invoice

Create invoice

POST https://api.notify.cm/v2/invoices

Authentication: API keys

Headers

Name
Type
Description

Request Body

Name
Type
Description

Example

Response

Search customer

If you don't have the unique customer id as saved in your Notify administration, you can search it with the customer code form your own administration.

Search customer

GET https://api.notify.cm/v2/customers/search

Authentication: API keys

Languages

The language code allows you to preset the language to be used in e-mail conversations and the hosted invoice pages shown to the customer. Setting a language is highly recommended and will greatly improve your conversion rate. When this parameter is omitted, the default language of the administration wil be used.

Notify currently support the following languages:

curl -X GET https://api.notify.cm/v2/payments \
   -H "Authorization: Bearer test_R7HQ9QpXgx8J32rW9X9UyXjgfNk6C7TQ2UD8M5rwf8vVnYxnSETvSuEC6SKFW8Ug" \
HTTP/1.1 200 OK
Content-Type: application/hal+json

{
   "payments": [
        {
            "resource": "payments",
            "id": "07d125ef-8e59-4629-8ef5-5c82de9979e9",
            "date":"21-01-2021",
            "amount":"100.00",
            "invoice": {
                "id":"a0f0660d-6c8d-422b-8114-e363b260521e",
                "number":"10001",
                "invoiceTotal":"480.00",
                "invoiceBalance":"380.00"
            },
            "customer": {
                "id":"36cf1c0d-53fe-4c73-8a46-f9f40cd99b65",
                "number":"10001",
                "name":"Creditparters B.V."
            }
        }, 
        {},
        {},
        {}
   ],
   "count": 5,
   "links": {
        "previous": null,
        "next": {
            "href": "https://api.notify.cm/v2/payments?from=07d125ef-8e59-4629-8ef5-5c82de9979e9",
            "type": "application/hal+json"
        }
   }
}
"number":"10001",
"name":"Creditparters B.V."
}
},
{},
{},
{}
],
"count": 5,
"links": {
"previous": null,
"next": {
"href": "https://api.notify.cm/v2/payments?from=07d125ef-8e59-4629-8ef5-5c82de9979e9",
"type": "application/hal+json"
}
}
}

Upload by FTP

You can also upload your documents by FTP. For information and credentials go to the API section in your Notify dashboard or contact support.

Username

Username

Generated by notify

Password

Your API key

There are two ways to connect your files to the right invoices:

  1. Use the unique Notify id in the file name f.e. 0f0660d-6c8d-422b-8114-e363b260521e.pdf

  2. Use your invoice number in the filename f.e. 10001.pdf

Together with your login credentials, we can connect the file to the right invoice.

french

German

german

Italian (not released yet)

italian

Polish (not released yet)

polish

Spanish (not released yet)

spanish

Language

Language code

English

english

Dutch

dutch

French

InvoiceTotal

number

Number format: 1100.00

InvoiceBalance

number

Same format. When empty InvoiceTotal will be used.

InvoiceStatus

string

Statuscode: concept open paid or canceled

Authorization

string

Your test or live API key

Customer

string

Unique Notify customer id

InvoiceNumber

string

Unique invoice number from your administration Max. 100 characters

InvoiceDate

string

European date > 28-01-2021

InvoiceDuedate

string

European date > 28-02-2021

HTTP/1.1 201 Created
Content-Type: application/hal+json

{
        "resource": "invoice",
        "id": "a0f0660d-6c8d-422b-8114-e363b260521e",
        "status":"open",
        "invoiceNumber":"10001",
        "invoiceDate":"28-01-2021",
        "invoiceDuedate":"28-02-2021",
        "invoiceTotal":"500.00",
        "invoiceBalance":"330.00",
        "document":"36cf1c0d-53fe-4c73-8a46-f9f40cd99b65.pdf",
        "customer": {
                "id":"36cf1c0d-53fe-4c73-8a46-f9f40cd99b65",
                "number":"10001",
                "name":"Creditpartners B.V."
        }     
}
HTTP/1.1 400 Bad Request
Content-Type: application/json

{
    "status": 400,
    "title": "Bad Request",
    "detail": "Field invoiceDate in wrong format"
}
Path Parameters
Name
Type
Description

Authorization

string

Your test or live API key

Request Body

Name
Type
Description

Customer

string

Search by your original customerCode

HTTP/1.1 200 OK
Content-Type: application/hal+json

{
        "resource": "customer",
        "id": "a0f0660d-6c8d-422b-8114-e363b260521e",
        "customerCode":"10001"
}
HTTP/1.1 404 Not Found
Content-Type: application/json

{
    "status": 404,
    "title": "Not Found",
    "detail": "No customer exists with customerCode 'I_dont_exist'."
}

Example

Response

curl -X POST https://api.notify.cm/v2/invoices \
   -H "Authorization: Bearer test_R7HQ9QpXgx8J32rW9X9UyXjgfNk6C7TQ2UD8M5rwf8vVnYxnSETvSuEC6SKFW8Ug" \
   -d "customer=36cf1c0d-53fe-4c73-8a46-f9f40cd99b65" \
   -d "invoiceNumber=10001" \
   -d "InvoiceDate=28-01-2021" \
   -d "InvoiceDuedate=28-02-2021" \
   -d "InvoiceTotal=500.00" \
   -d "invoiceBalance=330.00" \
   -d "invoiceStatus=open"
HTTP/1.1 200 OK
Content-Type: application/hal+json

{
        "resource": "invoice",
        "id": "a0f0660d-6c8d-422b-8114-e363b260521e",
        "status":"open",
        "invoiceNumber":"10001",
        "invoiceDate":"28-01-2021",
        "invoiceDuedate":"28-02-2021",
        "invoiceTotal":"500.00",
        "invoiceBalance":"330.00",
        "document":"36cf1c0d-53fe-4c73-8a46-f9f40cd99b65.pdf",
        "customer": {
                "id":"36cf1c0d-53fe-4c73-8a46-f9f40cd99b65",
                "number":"10001",
                "name":"Creditpartners B.V."
        }     
}
curl -X GET https://api.notify.cm/v2/customers/search \
   -H "Authorization: Bearer test_R7HQ9QpXgx8J32rW9X9UyXjgfNk6C7TQ2UD8M5rwf8vVnYxnSETvSuEC6SKFW8Ug" \
   -d "customer=10001"
HTTP/1.1 200 OK
Content-Type: application/hal+json

{
        "resource": "customer",
        "id": "a0f0660d-6c8d-422b-8114-e363b260521e",
        "customerCode":"10001"
}

Get invoice

Get invoice

GET https://api.notify.cm/v2/invoices/{invoice_id}

Authentication: API keys

Headers

Name
Type
Description

Example

Response

Delete document

Delete document

DELETE https://api.notify.cm/v2/documents/{document_id}

Delete invoice

Delete invoice

DELETE https://api.notify.cm/v2/invoices/{invoice_id}

Authentication: API keys

Authorization

string

Your test or live API key

HTTP/1.1 200 OK
Content-Type: application/hal+json

{
        "resource": "invoice",
        "id": "a0f0660d-6c8d-422b-8114-e363b260521e",
        "status":"open",
        "invoiceNumber":"20210001",
        "invoiceDate":"21-01-2021",
        "invoiceDuedate":"21-02-2021",
        "invoiceTotal":"480.00",
        "invoiceBalance":"330.00",
        "customer": {
                "id":"36cf1c0d-53fe-4c73-8a46-f9f40cd99b65",
                "number":"10001",
                "name":"Creditpartners B.V."
        }     
}
HTTP/1.1 404 Not Found
Content-Type: application/json

{
    "status": 404,
    "title": "Not Found",
    "detail": "No invoice exists with id I_dont_exist."
}
Headers
Name
Type
Description

Authorization

string

Your test or live API key

HTTP/1.1 204 No Content
HTTP/1.1 404 Not Found
Content-Type: application/hal+json

{
    "status": 404,
    "title": "Not Found",
    "detail": "No document exists with id I_dont_exist."
}

Example

Response

Headers
Name
Type
Description

Authorization

string

Your test or live API key

HTTP/1.1 204 No Content
HTTP/1.1 404 Not Found
Content-Type: application/json

{
    "status": 404,
    "title": "Not Found",
    "detail": "No invoice exists with id I_dont_exist."
}

Example

Response

curl -X GET https://api.notify.cm/v2/invoices/a0f0660d-6c8d-422b-8114-e363b260521e \
   -H "Authorization: Bearer test_R7HQ9QpXgx8J32rW9X9UyXjgfNk6C7TQ2UD8M5rwf8vVnYxnSETvSuEC6SKFW8Ug" \
HTTP/1.1 200 OK
Content-Type: application/hal+json

{
        "resource": "invoice",
        "id": "a0f0660d-6c8d-422b-8114-e363b260521e",
        "status":"open",
        "invoiceNumber":"20210001",
        "invoiceDate":"21-01-2021",
        "invoiceDuedate":"21-02-2021",
        "invoiceTotal":"480.00",
        "invoiceBalance":"330.00",
        "document":"36cf1c0d-53fe-4c73-8a46-f9f40cd99b65.pdf",
        "customer": {
                "id":"36cf1c0d-53fe-4c73-8a46-f9f40cd99b65",
                "number":"10001",
                "name":"Creditpartners B.V."
        }     
}
curl -X DELETE https://api.notify.cm/v2/documents/ \
   -H "Authorization: Bearer test_R7HQ9QpXgx8J32rW9X9UyXjgfNk6C7TQ2UD8M5rwf8vVnYxnSETvSuEC6SKFW8Ug" \
HTTP/1.1 204 No Content
curl -X DELETE https://api.notify.cm/v2/invoices/a0f0660d-6c8d-422b-8114-e363b260521e \
   -H "Authorization: Bearer test_R7HQ9QpXgx8J32rW9X9UyXjgfNk6C7TQ2UD8M5rwf8vVnYxnSETvSuEC6SKFW8Ug" \
HTTP/1.1 204 No Content

List customers

Retrieve all invoices created with the current administration, ordered from newest to oldest.The results are paginated. See pagination for more information.

List customers

GET https://api.notify.cm/v2/customers

Authentication: API keys

Update invoice

Update invoice

PATCH https://api.notify.cm/v2/invoices/{invoice_id}

Authentication: API keys With this API you can update your invoice information.

Get customer

Retrieve a single customer from your Notify administration.

Get customer

GET https://api.notify.cm/v2/customers/{customer_id}

Authentication: API keys

Query Parameters
Name
Type
Description

Limit

number

The number of customers to return (with a maximum of 250).

From

string

Used for pagination. Offset the result set to the invoice with this ID. The invoice with this ID is included in the result as well.

Headers

Name
Type
Description

Authorization

string

Your test or live API key

HTTP/1.1 200 OK
Content-Type: application/hal+json

{
   "customers": [
        {
            "resource": "customer",
            "customerCode": "a0f0660d-6c8d-422b-8114-e363b260521e",
            "number":"10001",
            "name":"Creditpartners B.V.",
            "address": {
                "address":"Canadalaan 4",
                "postalcode":"7316 BX",
                "city":"Apeldoorn",
                "country":"NL",
             },
             "contact":"Jan Post",
             "phone":"0882441100",

Example

Example with limit and from set.

Response

Headers
Name
Type
Description

Authorization

string

Your test of live API key

Request Body

Name
Type
Description

InvoiceDate

string

European date: 28-01-2021

InvoiceDuedate

string

European date: 28-02-2021

InvoiceTotal

number

Number format: 1100.00

InvoiceBalance

number

Number format: 1100.00

HTTP/1.1 200 OK
Content-Type: application/hal+json

{
        "resource": "invoice",
        "id": "a0f0660d-6c8d-422b-8114-e363b260521e",
        "status":"open",
        "invoiceNumber":"10001",
        "invoiceDate":"28-01-2021",
        "invoiceDuedate":"28-02-2021",
        "invoiceTotal":"500.00",
        "invoiceBalance":"330.00",
        "document":"36cf1c0d-53fe-4c73-8a46-f9f40cd99b65.pdf",
        "customer": {
                "id":"36cf1c0d-53fe-4c73-8a46-f9f40cd99b65",
                "number":"10001",
                "name":"Creditpartners B.V."
        }     
HTTP/1.1 400 Bad Request
Content-Type: application/json

{
    "status": 400,
    "title": "Bad Request",
    "detail": "Field invoiceDate in wrong format""
}

Example

Response

Headers
Name
Type
Description

Authorization

string

Your test or live API key

HTTP/1.1 200 OK
Content-Type: application/hal+json

{
        "resource": "customer",
        "id": "a0f0660d-6c8d-422b-8114-e363b260521e",
        "customerCode":"10001",
        "name":"Creditpartners B.V.",
        "address": {
                "address":"Canadalaan 4",
                "postalcode":"7316 BX",
                "city":"Apeldoorn",
                "country":"NL"
        },
        "contact":"Jan Post",
        "phone":"0882441100",
        "mobile":"0612345678",
        "email":"[email protected]",

Example

Response

List invoices

List invoices

GET https://api.notify.cm/v2/invoices

Authentication: API keys

Query Parameters

Name
Type
Description

Headers

Name
Type
Description

Example

Response

Create payment

Create payment

POST https://api.notify.cm/v2/payments

Path Parameters

Name
Type
Description

Request Body

Name
Type
Description

Example

Request

Data details

Customers

curl -X GET https://api.notify.cm/v2/customers \
   -H "Authorization: Bearer test_R7HQ9QpXgx8J32rW9X9UyXjgfNk6C7TQ2UD8M5rwf8vVnYxnSETvSuEC6SKFW8Ug" \
curl -X GET https://api.notify.cm/v2/customers?limit=100&from=a0f0660d-6c8d-422b-8114-e363b260521e \
   -H "Authorization: Bearer test_dHar4XY7LxsDOtmnkVtjNVWXLSlXsM" \
HTTP/1.1 200 OK
Content-Type: application/hal+json

{
   "customers": [
        {
            "resource": "customer",
            "id": "a0f0660d-6c8d-422b-8114-e363b260521e",
            "customerCode":"10001",
            "name":"Creditpartners B.V.",
            "address": {
                "address":"Canadalaan 4",
                "postalcode":"7316 BX",
                "city":"Apeldoorn",
                "country":"NL"
             },
             "contact":"Jan Post",
             "phone":"0882441100",
             "mobile":"0612345678",
             "email":"[email protected]",
             "invoiceEmail":"[email protected]",
             "registrationNumber":"123456",
             "language":"dutch"
        },
        {},
        {},
        {},
        {}
   ],
   "count": 5,
   "links": {
        "previous": null,
        "next": {
            "href": "https://api.notify.cm/v2/customers?from=a0f0660d-6c8d-422b-8114-e363b260521e&limit=250",
            "type": "application/hal+json"
        }
   }
}
HTTP/1.1 404 Not Found
Content-Type: application/json

{
    "status": 404,
    "title": "Not Found",
    "detail": "No invoice exists with id I_dont_exist."
}
curl -X PATCH https://api.notify.cm/v2/invoices/a0f0660d-6c8d-422b-8114-e363b260521e \
   -H "Authorization: Bearer test_R7HQ9QpXgx8J32rW9X9UyXjgfNk6C7TQ2UD8M5rwf8vVnYxnSETvSuEC6SKFW8Ug" \
   -d "invoiceBalance=0.00" \
   -d "invoiceStatus=paid"
HTTP/1.1 200 OK
Content-Type: application/hal+json

{
        "resource": "invoice",
        "id": "a0f0660d-6c8d-422b-8114-e363b260521e",
        "status":"paid",
        "invoiceNumber":"10001",
        "invoiceDate":"28-01-2021",
        "invoiceDuedate":"28-02-2021",
        "invoiceTotal":"500.00",
        "invoiceBalance":"0.00",
        "document":"36cf1c0d-53fe-4c73-8a46-f9f40cd99b65.pdf",
        "customer": {
                "id":"36cf1c0d-53fe-4c73-8a46-f9f40cd99b65",
                "number":"10001",
                "name":"Creditpartners B.V."
        }     
}
HTTP/1.1 404 Not Found
Content-Type: application/json

{
    "status": 404,
    "title": "Not Found",
    "detail": "No customer exists with id I_dont_exist."
}
curl -X GET https://api.notify.cm/v2/customers/a0f0660d-6c8d-422b-8114-e363b260521e \
   -H "Authorization: Bearer test_R7HQ9QpXgx8J32rW9X9UyXjgfNk6C7TQ2UD8M5rwf8vVnYxnSETvSuEC6SKFW8Ug" \
HTTP/1.1 200 OK
Content-Type: application/hal+json

{
        "resource": "customer",
        "id": "a0f0660d-6c8d-422b-8114-e363b260521e",
        "customerCode":"10001",
        "name":"Creditpartners B.V.",
        "address": {
                "address":"Canadalaan 4",
                "postalcode":"7316 BX",
                "city":"Apeldoorn",
                "country":"NL"
        },
        "contact":"Jan Post",
        "phone":"0882441100",
        "mobile":"0612345678",
        "email":"[email protected]",
        "invoiceEmail":"[email protected]",
        "registrationNumber":"123456",
        "language":"dutch"  
}
"mobile":"0612345678",
"email":"[email protected]",
"invoiceEmail":"[email protected]",
"registrationNumber":"123456",
"language":"dutch"
},
{},
{},
{},
{}
],
"count": 5,
"links": {
"previous": null,
"next": {
"href": "https://api.notify.cm/v2/customers?from=a0f0660d-6c8d-422b-8114-e363b260521e&limit=5",
"type": "application/hal+json"
}
}
}
"invoiceEmail":"[email protected]",
"registrationNumber":"123456",
"language":"dutch"
}
}

InvoiceStatus

string

Statuscode: concept open paid or cancelled

Limit

number

The number of invoices to return (max 250).

From

number

Used for pagination. Offset the result set to the invoice with this ID. The invoice with this ID is included in the result as well.

Authorization

string

Your test or live API key

HTTP/1.1 200 OK
Content-Type: application/hal+json

{
   "invoices": [
        {
            "resource": "customer",
            "id": "a0f0660d-6c8d-422b-8114-e363b260521e",
            "status":"open",
            "invoiceNumber":"20210001",
            "invoiceDate":"21-01-2021",
            "invoiceDuedate":"21-02-2021",
            "invoiceTotal":"480.00",
            "invoiceBalance":"330.00",
            "document":"36cf1c0d-53fe-4c73-8a46-f9f40cd99b65.pdf",
            "customer": {
                "id":"36cf1c0d-53fe-4c73-8a46-f9f40cd99b65",
                "number":"10001",
                "name":"Creditparters B.V."
            }
        }, 
        {},
        {},
        {}
   ],
   "count": 5,
   "links": {
        "previous": null,
        "next": {
            "href": "https://api.notify.cm/v2/invoices?from=a0f0660d-6c8d-422b-8114-e363b260521e&limit=5",
            "type": "application/hal+json"
        }
   }
}

Authorization

string

Your test or live API key

Invoice

string

The unique Notify invoice id

Date

string

European format: 28-01-2021

Amount

string

Number format: 1100.00

Method

string

Payment method code. See documentation

HTTP/1.1 200 OK
Content-Type: application/hal+json

{
    "resource": "payment",
    "id": "07d125ef-8e59-4629-8ef5-5c82de9979e9",
    "invoice":"a0f0660d-6c8d-422b-8114-e363b260521e",
    "date":"21-01-2021",
    "amount":"100.00",
    "invoiceTotal":"480.00",
    "invoiceBalance":"380.00"
}
HTTP/1.1 400 Bad Request
Content-Type: application/json

{
    "status": 400,
    "title": "Bad Request",
    "detail": "Field date in wrong format"
}
HTTP/1.1 404 Not Found
Content-Type: application/json

{
    "status": 404,
    "title": "Not Found",
    "detail": "No invoice exists with id I_dont_exist."
}
curl -X GET https://api.notify.cm/v2/invoices \
   -H "Authorization: Bearer test_R7HQ9QpXgx8J32rW9X9UyXjgfNk6C7TQ2UD8M5rwf8vVnYxnSETvSuEC6SKFW8Ug" \
HTTP/1.1 200 OK
Content-Type: application/hal+json

{
   "invoices": [
        {
            "resource": "customer",
            "id": "a0f0660d-6c8d-422b-8114-e363b260521e",
            "status":"open",
            "invoiceNumber":"20210001",
            "invoiceDate":"21-01-2021",
            "invoiceDuedate":"21-02-2021",
            "invoiceTotal":"480.00",
            "invoiceBalance":"330.00",
            "document":"36cf1c0d-53fe-4c73-8a46-f9f40cd99b65.pdf",
            "customer": {
                "id":"36cf1c0d-53fe-4c73-8a46-f9f40cd99b65",
                "number":"10001",
                "name":"Creditparters B.V."
            }
        }, 
        {},
        {},
        {}
   ],
   "count": 5,
   "links": {
        "previous": null,
        "next": {
            "href": "https://api.notify.cm/v2/invoices?from=a0f0660d-6c8d-422b-8114-e363b260521e&limit=250",
            "type": "application/hal+json"
        }
   }
}
curl -X POST https://api.notify.cm/v2/payments \
   -H "Authorization: Bearer test_R7HQ9QpXgx8J32rW9X9UyXjgfNk6C7TQ2UD8M5rwf8vVnYxnSETvSuEC6SKFW8Ug" \
   -d "invoice=a0f0660d-6c8d-422b-8114-e363b260521e" \
   -d "date=21-01-2021" \
   -d "amount=100.00" \
   -d "method=banktransfer"
HTTP/1.1 201 Created
Content-Type: application/hal+json

{
    "resource": "payment",
    "id": "07d125ef-8e59-4629-8ef5-5c82de9979e9",
    "invoice":"a0f0660d-6c8d-422b-8114-e363b260521e",
    "date":"21-01-2021",
    "amount":"100.00",
    "invoiceTotal":"480.00",
    "invoiceBalance":"380.00"
}

See details below

Name

string

250

Address

string

250

Postalcode

string

10

City

string

250

Country

string

2

See details below

Contact

string

250

Phone

string

20

See details below

Mobile

string

20

See details below

Email

string

250

InvoiceEmail

string

250

RegistrationNumber

string

10

See details below

Language

string

10

See details below

CustomerCode

The unique customer identifier (code) as it is stored in your administration.

Country

Customer countries can be stored with the two-digit country code. Please use these codes if you want to save the customer country. This parameter is optional. When it is omitted, we'll use the Netherlands as basic country. See complete list of country codes.

Phone / Mobile

You can use these fields the way you want, so you can use +31 612345678 , 06 - 12345678 or 0612345678 as well.

RegistrationNumber

The company registration number as registered by the Chamber of Commerce.

Language

Allows you to preset the language to be used in the communication to the consumer. When this parameter is not provided, the default language will be used instead. More information.

Possible values: dutch english german french

Invoices

Field

Type

Max value length

Information

Customer

string

36

See details below

InvoiceNumber

string

100

InvoiceDate

Customer

The unique id form your Notify administration. You can find this id with the Search customer API.

InvoiceStatus

The status of the invoice in your administration. Use concept open paid or cancelled. Important: When an invoice gets the status paid or cancelled, no further actions will been made.

InvoiceTotal / InvoiceBalance

Always use two decimals, for example 1100.00 and 0.00.

InvoiceBalance is optional. When it is omitted, InvoiceTotal will be copied.

Documents

Field

Type

Max value length

Information

Invoice

string

36

See details below

Filename

string

250

See details below

Mediatype

Invoice

Use the unique id of the invoice you want the document to attach. How to find the invoice id.

Filename

Complete original file name including file extension. For example: invoice-200001.pdf

Content

PDF file content in Base64 format. See https://base64.guru/converter/encode/pdf for more information.

Payments

Field

Type

Max value length

Informayion

Invoice

string

36

Date

date

10

Example: 28-01-2021

Amount

Method

The method used for the payment. Use banktransfer ideal bancontact sepa or creditcard. When it is omitted, we'll use the banktransfer as basic method.

Field

Type

Max value length

Information

Customercode

string

250

Create customer

Customer creation is elemental to the Notify API: this is where most invoice implementations start off. Once you have created a customer, you can create invoices for the customer. without a customer id, you can't create invoices. So always start with the customer API first or search for the customer id. In both responses you'll find the unique customer id you can use for your invoices.

Create customer

POST https://api.notify.cm/v2/customers

Authentication: API keys

Query Parameters

Name
Type
Description

Headers

Name
Type
Description

Request Body

Name
Type
Description

Example

Response

date

10

Use dDD-MM-YYYY format

InvoiceDuedate

date

10

Use dDD-MM-YYYY format

InvoiceTotal

amount

10

Example: 1100.00

InvoiceBalance

amount

10

Example: 1100.00

InvoiceStatus

string

10

See details below

string

50

Example: application/pdf

Content

string

5.242.880 (5 MB)

See details below

amount

10

Example: 1100.00

Method

string

10

See details below

City

string

Max. 250 characters

Country

string

Two characters country code, see documentation

Contact

string

The full name of the contact. Max 250 characters

Phone

string

Max. 20 characters

Mobile

string

Max. 20 characters

Email

string

Max. 250 characters

InvoiceEmail

string

Address for invoices only. Max. 250 characters

RegistrationNumber

string

Chamber of Commerce Registration number

Language

string

Language code. See documentation

Overwrite

boolean

Optional if you want to overwrite information when a customer with the same CustomerCode already exists. we advise to use the update API instead.

Authorization

string

Your test or live API key

CustomerCode

string

Your unique customer code. Max. 250 characters

Name

string

The name of the customer. Max 250 characters

Address

string

Max. 250 characters

Postalcode

string

Max. 10 characters

HTTP/1.1 201 Created
Content-Type: application/hal+json

{
        "resource": "customer",
        "id": "a0f0660d-6c8d-422b-8114-e363b260521e",
        "customerCode":"10001",
        "name":"Creditpartners B.V.",
        "address": {
                "address":"",
                "postalcode":"",
                "city":"",
                "country":"NL"
        },
        "contact":"",
        "phone":"",
        "mobile":"",
        "email":"[email protected]",
        "invoiceEmail":"",
        "registrationNumber":"",
        "language":"dutch"
}
HTTP/1.1 400 Bad Request
Content-Type: application/json

{
    "status": 405,
    "title": "Bad Request",
    "detail": "Field email in wrong format"
}
curl -X POST https://api.notify.cm/v2/customers \
   -H "Authorization: Bearer test_R7HQ9QpXgx8J32rW9X9UyXjgfNk6C7TQ2UD8M5rwf8vVnYxnSETvSuEC6SKFW8Ug" \
   -d "number=10001" \
   -d "name=Creditpartners B.V." \
   -d "[email protected]"
HTTP/1.1 201 Created
Content-Type: application/hal+json

{
        "resource": "customer",
        "id": "a0f0660d-6c8d-422b-8114-e363b260521e",
        "customerCode":"10001",
        "name":"Creditpartners B.V.",
        "address": {
                "address":"",
                "postalcode":"",
                "city":"",
                "country":"NL"
        },
        "contact":"",
        "phone":"",
        "mobile":"",
        "email":"[email protected]",
        "invoiceEmail":"",
        "registrationNumber":"",
        "language":"dutch"
}

Update customer

Updating customer information is easy with the update API. All you need is the customer id to update the necessary information.

Attention: With the , customer information will not be updated by default. We advise to use this Update customer API to update existing information.

Update customer

PATCH https://api.notify.cm/v2/customers/{customer_id}

Authentication: API keys

Headers

Name
Type
Description

Authorization

string

Your test or live API key

Request Body

Name
Type
Description

Name

string

The name of the customer. Max. 250 characters

Address

string

Max. 250 characters

Postalcode

string

Max 10 characters

City

string

Max 250 characters

Example

Response

Create customer API
HTTP/1.1 200 OK
Content-Type: application/hal+json

{
        "resource": "customer",
        "id": "a0f0660d-6c8d-422b-8114-e363b260521e",
        "customerCode":"10001",
        "name":"Creditpartners B.V.",
        "address": {
                "address":"",
                "postalcode":"",
                "city":"",
                "country":"NL"
        },
        "contact":"",
        "phone":"",
        "mobile":"",
        "email":"[email protected]",
        "invoiceEmail":"",
        "registrationNumber":"",
        "language":"dutch"
}
HTTP/1.1 400 Bad Request
Content-Type: application/hal+json

{
    "status": 400,
    "title": "Bad Request",
    "detail": "Field email in wrong format"
}
HTTP/1.1 404 Not Found
Content-Type: application/hal+json

{
    "status": 404,
    "title": "Not Found",
    "detail": "No customer exists with id I_dont_exist."
}
curl -X PATCH https://api.notify.cm/v2/customers/a0f0660d-6c8d-422b-8114-e363b260521e \
   -H "Authorization: Bearer test_R7HQ9QpXgx8J32rW9X9UyXjgfNk6C7TQ2UD8M5rwf8vVnYxnSETvSuEC6SKFW8Ug" \
   -d "name=Creditpartners B.V." \
   -d "[email protected]"
HTTP/1.1 200 OK
Content-Type: application/hal+json

{
        "resource": "customer",
        "id": "a0f0660d-6c8d-422b-8114-e363b260521e",
        "customerCode":"10001",
        "name":"Creditpartners B.V.",
        "address": {
                "address":"",
                "postalcode":"",
                "city":"",
                "country":"NL"
        },
        "contact":"",
        "phone":"",
        "mobile":"",
        "email":"[email protected]",
        "invoiceEmail":"",
        "registrationNumber":"",
        "language":"dutch"
}

Country

string

Two characters country code. See documentation

Contact

string

The full name of the contact. Max 250 characters

Phone

string

Max 20 caharacters

Mobile

string

Max 20 characters

Email

string

Max 250 characters

InvoiceEmail

string

Address for invoices only. Max 250 characters

RegistrationNumber

string

Chamber of Commerce Registration number

Language

string

Language code. See documentation

Create document

Upload by API call

Invoice document

POST https://api.notify.cm/v2/documents/{invoice_id}

Authentication: API keys With the Document API you can upload your document data to Notify and connect it to the right invoice data. Just send the PDF data in Base64 format together with the right file information. Update your file Each time you send a new file to Notify for a specific invoice, the document will be updated. There's no specific update function.

Headers

Name
Type
Description

Request Body

Name
Type
Description

Example

Response

Authorization

string

Your test or live API key

Invoice

string

The unique Notify invoice id

Filename

string

The complete original file name. Max 250 characters

Mediatype

string

Should be application/pdf

Content

string

The PDF file content in Base64 format

HTTP/1.1 201 Created
Content-Type: application/hal+json

{
    "resource": "document",
    "invoice": "a0f0660d-6c8d-422b-8114-e363b260521e",
    "filename": "test.pdf"
}
HTTP/1.1 400 Bad Request
Content-Type: application/json

{
    "status": 400,
    "title": "Bad Request",
    "detail": "Error in PDF file content"
}
HTTP/1.1 404 Not Found
Content-Type: application/json

{
    "status": 404,
    "title": "Not Found",
    "detail": "No invoice exists with id I_dont_exist."
}
curl -X POST https://api.notify.cm/v2/documents \
   -H "Authorization: Bearer test_R7HQ9QpXgx8J32rW9X9UyXjgfNk6C7TQ2UD8M5rwf8vVnYxnSETvSuEC6SKFW8Ug" \
   -d "invoice=a0f0660d-6c8d-422b-8114-e363b260521e" \
   -d "filename=test.pdf" \
   -d "mediatype=application/pdf" \
   -d "content=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bmcgKFVDUykgL1N1cHBsZW1lbnQgMCA+PiBkZWYKL0NNYXBOYW1lIC9BZG9iZS1JZGVudGl0eS1VQ1MgZGVmCi9DTWFwVHlwZSAyIGRlZgoxIGJlZ2luY29kZXNwYWNlcmFuZ2UKPDAwMDA+IDxGRkZGPgplbmRjb2Rlc3BhY2VyYW5nZQoyIGJlZ2luYmZyYW5nZQo8MDAwMD4gPDAwMDA+IDwwMDAwPgo8MDAwMT4gPDAwMkY+IFs8MDA0RD4gPDAwNjk+IDwwMDY0PiA8MDA2NT4gPDAwNkM+IDwwMDYxPiA8MDA2RT4gPDAwMzc+IDwwMDMzPiA8MDAzMT4gPDAwMzQ+IDwwMDIwPiA8MDA0Nz4gPDAwNDM+IDwwMDQxPiA8MDA3MD4gPDAwNkY+IDwwMDcyPiA8MDA1MD4gPDAwNzQ+IDwwMDY3PiA8MDAzMj4gPDAwNDI+IDwwMDc2PiA8MDA2Mj4gPDAwNDA+IDwwMDYzPiA8MDA3Mz4gPDAwMkU+IDwwMDc3PiA8MDAzNT4gPDAwMzA+IDwwMDM2PiA8MDA1ND4gPDAwNEY+IDwwMDZEPiA8MDA2OD4gPDAwNkE+IDwwMDQ2PiA8MDA3NT4gPDAwNEI+IDwwMDRDPiA8MDAyNT4gPDAwMkM+IDwwMDc4PiA8MjBBQz4gPDAwNDQ+IF0KZW5kYmZyYW5nZQplbmRjbWFwCkNNYXBOYW1lIGN1cnJlbnRkaWN0IC9DTWFwIGRlZmluZXJlc291cmNlIHBvcAplbmQKZW5kCgplbmRzdHJlYW0KZW5kb2JqCjggMCBvYmoKPDwgL1R5cGUgL0ZvbnQKL1N1YnR5cGUgL1R5cGUwCi9CYXNlRm9udCAvU2Vnb2VVSVJlZ3VsYXIKL0VuY29kaW5nIC9JZGVudGl0eS1ICi9EZXNjZW5kYW50Rm9udHMgWzE3IDAgUl0KL1RvVW5pY29kZSAxOCAwIFI+PgplbmRvYmoKMjAgMCBvYmoKPDwgL1R5cGUgL0ZvbnREZXNjcmlwdG9yCi9Gb250TmFtZSAvUVVBQUFBK1NlZ29lVUlCb2xkCi9GbGFncyA0IAovRm9udEJCb3ggWy0zNTkuODYzMjgxIC0zMjMuNzMwNDY4IDE1NDguODI4MTIgODcyLjA3MDMxMiBdCi9JdGFsaWNBbmdsZSAwIAovQXNj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IC9TdXBwbGVtZW50IDAgPj4KL0ZvbnREZXNjcmlwdG9yIDIwIDAgUgovQ0lEVG9HSURNYXAgL0lkZW50aXR5Ci9XIFswIFs0ODEgMzg4IDQwMiAzNTggMjkwIDQ1MSAyOTcgNDc4IDQwMyA2ODMgMjA2IDU3MiA0NTYgMjEyIDQ2MiAyMTIgNDUxIDQ2MiAyMDIgNDk3IDIzNiAzMjggNDg0IDQwNCA0MjkgNDI5IDQyOSAyMDIgNDI5IDQyOSA0MjkgMzAyIDQyOSA0MjkgNDM3IDQ2MyA1NjYgNDQ5IDIxMiA1MjUgNDU4IF0KXQo+PgplbmRvYmoKMjMgMCBvYmoKPDwgL0xlbmd0aCA2NDQgPj4Kc3RyZWFtCi9DSURJbml0IC9Qcm9jU2V0IGZpbmRyZXNvdXJjZSBiZWdpbgoxMiBkaWN0IGJlZ2luCmJlZ2luY21hcAovQ0lEU3lzdGVtSW5mbyA8PCAvUmVnaXN0cnkgKEFkb2JlKSAvT3JkZXJpbmcgKFVDUykgL1N1cHBsZW1lbnQgMCA+PiBkZWYKL0NNYXBOYW1lIC9BZG9iZS1JZGVudGl0eS1VQ1MgZGVmCi9DTWFwVHlwZSAyIGRlZgoxIGJlZ2luY29kZXNwYWNlcmFuZ2UKPDAwMDA+IDxGRkZGPgplbmRjb2Rlc3BhY2VyYW5nZQoyIGJlZ2luYmZyYW5nZQo8MDAwMD4gPDAwMDA+IDwwMDAwPgo8MDAwMT4gPDAwMjg+IFs8MDA0Nj4gPDAwNjE+IDwwMDYzPiA8MDA3ND4gPDAwNzU+IDwwMDcyPiA8MDA0Mj4gPDAwNjU+IDwwMDZEPiA8MDAyMD4gPDAwNDg+IDwwMDZGPiA8MDA2Qz4gPDAwNjQ+IDwwMDY5PiA8MDA2RT4gPDAwNjc+IDwwMDJFPiA8MDA1Nj4gPDAwNDk+IDwwMDczPiA8MDA0Qj4gPDAwNzY+IDwyMEFDPiA8MDAzMT4gPDAwMzg+IDwwMDJDPiA8MDAzNT4gPDAwMzA+IDwwMDMzPiA8MDAyRD4gPDAwMzI+IDwwMDM0PiA8MDA1ND4gPDAwNjI+IDwwMDRGPiA8MDA2OD4gPDAwNkE+IDwwMDQxPiA8MDA1MD4gXQplbmRiZnJhbmdlCmVuZGNtYXAKQ01hcE5hbWUgY3VycmVudGRpY3QgL0NNYXAg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69F1tpNGe5VlU9i2QzWXWKc/6w0pZ06J1XH92bNnW2vnjF5GqvDMky9pDJNjSK3to1mRSLOo4me/OayU70zlAlbxWVObyis5bOCb2G9qV8tp7H+SJ9B+kVTJBZcwJAwIh4QuoXOvbpV08n98O6rkpH27ghf36lZJPwUlkmNdcGnfeKvlI7jzBuvf/WJQSP8LMsfBbwplbmRzdHJlYW0KZW5kb2JqCjI5IDAgb2JqCjIzMzYKZW5kb2JqCjI3IDAgb2JqCjw8IC9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9DSURGb250VHlwZTIKL0Jhc2VGb250IC9TZWdvZVVJSXRhbGljCi9DSURTeXN0ZW1JbmZvIDw8IC9SZWdpc3RyeSAoQWRvYmUpIC9PcmRlcmluZyAoSWRlbnRpdHkpIC9TdXBwbGVtZW50IDAgPj4KL0ZvbnREZXNjcmlwdG9yIDI1IDAgUgovQ0lEVG9HSURNYXAgL0lkZW50aXR5Ci9XIFswIFs0ODEgMjI3IDM1MyAzOTkgMjY1IDIwNSA0MDIgNDAyIDI5OCA0MDIgNDAyIDIyNyBdCl0KPj4KZW5kb2JqCjI4IDAgb2JqCjw8IC9MZW5ndGggNDQxID4+CnN0cmVhbQovQ0lESW5pdCAvUHJvY1NldCBmaW5kcmVzb3VyY2UgYmVnaW4KMTIgZGljdCBiZWdpbgpiZWdpbmNtYXAKL0NJRFN5c3RlbUluZm8gPDwgL1JlZ2lzdHJ5IChBZG9iZSkgL09yZGVyaW5nIChVQ1MpIC9TdXBwbGVtZW50IDAgPj4gZGVmCi9DTWFwTmFtZSAvQWRvYmUtSWRlbnRpdHktVUNTIGRlZgovQ01hcFR5cGUgMiBkZWYKMSBiZWdpbmNvZGVzcGFjZXJhbmdlCjwwMDAwPiA8RkZGRj4KZW5kY29kZXNwYWNlcmFuZ2UKMiBiZWdpbmJmcmFuZ2UKPDAwMDA+IDwwMDAwPiA8MDAwMD4KPDAwMDE+IDwwMDBCPiBbPDAwMjg+IDwwMDc2PiA8MDA2Rj4gPDAwNzI+IDwwMDIwPiA8MDAzMj4gPDAwMzc+IDwwMDJEPiA8MDAzMD4gPDAwMzM+IDwwMDI5PiBdCmVuZGJmcmFuZ2UKZW5kY21hcApDTWFwTmFtZSBjdXJyZW50ZGljdCAvQ01hcCBkZWZpbmVyZXNvdXJjZSBwb3AKZW5kCmVuZAoKZW5kc3RyZWFtCmVuZG9iago5IDAgb2JqCjw8IC9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UeXBlMAovQmFzZUZvbnQgL1NlZ29lVUlJdGFsaWMKL0VuY29kaW5nIC9JZGVudGl0eS1ICi9EZXNjZW5kYW50Rm9udHMgWzI3IDAgUl0KL1RvVW5pY29kZSAyOCAwIFI+PgplbmRvYmoKMiAwIG9iago8PAovVHlwZSAvUGFnZXMKL0tpZHMgClsKNSAwIFIKXQovQ291bnQgMQovUHJvY1NldCBbL1BERiAvVGV4dCAvSW1hZ2VCIC9JbWFnZUNdCj4+CmVuZG9iagp4cmVmCjAgMzAKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDA5IDAwMDAwIG4gCjAwMDAwMjE3ODAgMDAwMDAgbiAKMDAwMDAwMDE1NyAwMDAwMCBuIAowMDAwMDAwMjUyIDAwMDAwIG4gCjAwMDAwMDAzODQgMDAwMDAgbiAKMDAwMDAwMDI4OSAwMDAwMCBuIAowMDAwMDE4MDQ1IDAwMDAwIG4gCjAwMDAwMTE0MDcgMDAwMDAgbiAKMDAwMDAyMTY0MSAwMDAwMCBuIAowMDAwMDAwMzM0IDAwMDAwIG4gCjAwMDAwMDA3MjYgMDAwMDAgbiAKMDAwMDAwNDE3NCAwMDAwMCBuIAowMDAwMDAwNTA1IDAwMDAwIG4gCjAwMDAwMDA3MDYgMDAwMDAgbiAKMDAwMDAwNDE5NSAwMDAwMCBuIAowMDAwMDA0NDUwIDAwMDAwIG4gCjAwMDAwMTAyNTYgMDAwMDAgbiAKMDAwMDAxMDY2MiAwMDAwMCBuIAowMDAwMDEwMjM1IDAwMDAwIG4gCjAwMDAwMTE1NDcgMDAwMDAgbiAKMDAwMDAxMTc5OSAwMDAwMCBuIAowMDAwMDE2OTc0IDAwMDAwIG4gCjAwMDAwMTczNDkgMDAwMDAgbiAKMDAwMDAxNjk1MyAwMDAwMCBuIAowMDAwMDE4MTgyIDAwMDAwIG4gCjAwMDAwMTg0MzkgMDAwMDAgbiAKMDAwMDAyMDg4NyAwMDAwMCBuIAowMDAwMDIxMTQ4IDAwMDAwIG4gCjAwMDAwMjA4NjYgMDAwMDAgbiAKdHJhaWxlcgo8PAovU2l6ZSAzMAovSW5mbyAxIDAgUgovUm9vdCAxMCAwIFIKPj4Kc3RhcnR4cmVmCjIxODc4CiUlRU9GCg=="
HTTP/1.1 201 Created
Content-Type: application/hal+json

{
    "resource": "document",
    "invoice": "a0f0660d-6c8d-422b-8114-e363b260521e",
    "filename": "test.pdf"
}

Country codes

Country codes

Customer countries (country) can be stored with the two-digit country code. Please use these codes if you want to save the customer country. This parameter is optional. When it is omitted, we'll use the Netherlands as basic country.

Country

Country code

Afghanistan

AF

Albania

AL

Algeria

DZ

American Samoa

AS

Andorra

AD

Angola

AO

Anguilla

AI

Antarctica

AQ

Antigua and Barbuda

AG

Argentina

AR

Armenia

AM

Aruba

AW

Australia

AU

Austria

AT

Azerbaijan

AZ

Bahamas

BS

Bahrain

BH

Bangladesh

BD

Barbados

BB

Belarus

BY

Belgium

BE

Belize

BZ

Benin

BJ

Bermuda

BM

Bhutan

BT

Bolivia

BO

Bonaire, Sint Eustatius and Saba

BQ

Bosnia and Herzegovina

BA

Botswana

BW

Bouvet Island

BV

Brazil

BR

British Indian Ocean Territory

IO

Brunei Darussalam

BN

Bulgaria

BG

Burkina Faso

BF

Burundi

BI

Cabo Verde

CV

Cambodia

KH

Cameroon

CM

Canada

CA

Cayman Islands

KY

Central African Republic

CF

Chad

TD

Chile

CL

China

CN

Christmas Island

CX

Cocos Islands

CC

Colombia

CO

Comoros

KM

Congo

CD

Congo

CG

Cook Islands

CK

Costa Rica

CR

Croatia

HR

Cuba

CU

Curaçao

CW

Cyprus

CY

Czechia

CZ

Côte d'Ivoire

CI

Denmark

DK

Djibouti

DJ

Dominica

DM

Dominican Republic

DO

Ecuador

EC

Egypt

EG

El Salvador

SV

Equatorial Guinea

GQ

Eritrea

ER

Estonia

EE

Eswatini

SZ

Ethiopia

ET

Falkland Islands

FK

Faroe Islands

FO

Fiji

FJ

Finland

FI

France

FR

French Guiana

GF

French Polynesia

PF

French Southern Territories

TF

Gabon

GA

Gambia (the)

GM

Georgia

GE

Germany

DE

Ghana

GH

Gibraltar

GI

Greece

GR

Greenland

GL

Grenada

GD

Guadeloupe

GP

Guam

GU

Guatemala

GT

Guernsey

GG

Guinea

GN

Guinea-Bissau

GW

Guyana

GY

Haiti

HT

Heard Island and McDonald Islands

HM

Holy See

VA

Honduras

HN

Hong Kong

HK

Hungary

HU

Iceland

IS

India

IN

Indonesia

ID

Iran

IR

Iraq

IQ

Ireland

IE

Isle of Man

IM

Israel

IL

Italy

IT

Jamaica

JM

Japan

JP

Jersey

JE

Jordan

JO

Kazakhstan

KZ

Kenya

KE

Kiribati

KI

Korea (the Democratic People's Republic of)

KP

Korea (the Republic of)

KR

Kuwait

KW

Kyrgyzstan

KG

Lao People's Democratic Republic

LA

Latvia

LV

Lebanon

LB

Lesotho

LS

Liberia

LR

Libya

LY

Liechtenstein

LI

Lithuania

LT

Luxembourg

LU

Macao

MO

Madagascar

MG

Malawi

MW

Malaysia

MY

Maldives

MV

Mali

ML

Malta

MT

Marshall Islands

MH

Martinique

MQ

Mauritania

MR

Mauritius

MU

Mayotte

YT

Mexico

MX

Micronesia

FM

Moldova

MD

Monaco

MC

Mongolia

MN

Montenegro

ME

Montserrat

MS

Morocco

MA

Mozambique

MZ

Myanmar

MM

Namibia

NA

Nauru

NR

Nepal

NP

Netherlands

NL

New Caledonia

NC

New Zealand

NZ

Nicaragua

NI

Niger (the)

NE

Nigeria

NG

Niue

NU

Norfolk Island

NF

Northern Mariana Islands

MP

Norway

NO

Oman

OM

Pakistan

PK

Palau

PW

Palestine

PS

Panama

PA

Papua New Guinea

PG

Paraguay

PY

Peru

PE

Philippines

PH

Pitcairn

PN

Poland

PL

Portugal

PT

Puerto Rico

PR

Qatar

QA

Republic of North Macedonia

MK

Romania

RO

Russian Federation

RU

Rwanda

RW

Réunion

RE

Saint Barthélemy

BL

Saint Helena, Ascension and Tristan da Cunha

SH

Saint Kitts and Nevis

KN

Saint Lucia

LC

Saint Martin

MF

Saint Pierre and Miquelon

PM

Saint Vincent and the Grenadines

VC

Samoa

WS

San Marino

SM

Sao Tome and Principe

ST

Saudi Arabia

SA

Senegal

SN

Serbia

RS

Seychelles

SC

Sierra Leone

SL

Singapore

SG

Sint Maarten

SX

Slovakia

SK

Slovenia

SI

Solomon Islands

SB

Somalia

SO

South Africa

ZA

South Georgia and the South Sandwich Islands

GS

South Sudan

SS

Spain

ES

Sri Lanka

LK

Sudan

SD

Suriname

SR

Svalbard and Jan Mayen

SJ

Sweden

SE

Switzerland

CH

Syrian Arab Republic

SY

Taiwan

TW

Tajikistan

TJ

Tanzania, United Republic of

TZ

Thailand

TH

Timor-Leste

TL

Togo

TG

Tokelau

TK

Tonga

TO

Trinidad and Tobago

TT

Tunisia

TN

Turkey

TR

Turkmenistan

TM

Turks and Caicos Islands

TC

Tuvalu

TV

Uganda

UG

Ukraine

UA

United Arab Emirates

AE

United Kingdom

GB

United States Minor Outlying Islands

UM

United States of America

US

Uruguay

UY

Uzbekistan

UZ

Vanuatu

VU

Venezuela

VE

Viet Nam

VN

Virgin Islands

VG

Virgin Islands (U.S.)

VI

Wallis and Futuna

WF

Western Sahara

EH

Yemen

YE

Zambia

ZM

Zimbabwe

ZW

Åland Islands

AX

Pagination

Fetching all objects of a resource can be convenient. At the same time, returning too many objects at once can be unpractical from a performance perspective. Doing so might be too much work for the Notify API to generate, or for your website to process. The maximum number of objects returned is 250.

For this reason the Notify API only returns a subset of the requested set of objects. In other words, the Notify API chops the result of a certain API method call into pages you are able to programmatically scroll through.

Pagination in v2 API endpoints

The v2 API endpoints use the so-called cursor pagination method. In short, this ensures the objects in a page do not get shifted when a new object is created with the same account in the meantime, by paginating by object ID rather than by page number.

You can get the next page of objects by following the next link.