Upload proof of ownership document
curl --request POST \
--url https://api.invopop.com/apps/peppol/v1/entry/{silo_entry_id}/ownership \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"data": "JVBERi0xLjQK..."
}
'import requests
url = "https://api.invopop.com/apps/peppol/v1/entry/{silo_entry_id}/ownership"
payload = { "data": "JVBERi0xLjQK..." }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({data: 'JVBERi0xLjQK...'})
};
fetch('https://api.invopop.com/apps/peppol/v1/entry/{silo_entry_id}/ownership', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.invopop.com/apps/peppol/v1/entry/{silo_entry_id}/ownership",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'data' => 'JVBERi0xLjQK...'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.invopop.com/apps/peppol/v1/entry/{silo_entry_id}/ownership"
payload := strings.NewReader("{\n \"data\": \"JVBERi0xLjQK...\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.invopop.com/apps/peppol/v1/entry/{silo_entry_id}/ownership")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"data\": \"JVBERi0xLjQK...\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.invopop.com/apps/peppol/v1/entry/{silo_entry_id}/ownership")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"data\": \"JVBERi0xLjQK...\"\n}"
response = http.request(request)
puts response.read_body{
"status": "error",
"message": "peppol_id or vat required"
}{
"status": "error",
"message": "unauthorized"
}{
"status": "error",
"message": "ownership file must be a PDF"
}{
"status": "error",
"message": "internal server error"
}Peppol
Upload proof of ownership PDF
Uploads a proof-of-ownership PDF for a company that is being registered in the Peppol network.
The document must be a valid PDF (application/pdf). Once uploaded
the service validates the document and, if accepted, completes the
registration flow for the silo entry.
This endpoint is idempotent: uploading a new document for an entry that has already completed registration replaces the previous one and re-triggers completion.
POST
/
apps
/
peppol
/
v1
/
entry
/
{silo_entry_id}
/
ownership
Upload proof of ownership document
curl --request POST \
--url https://api.invopop.com/apps/peppol/v1/entry/{silo_entry_id}/ownership \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"data": "JVBERi0xLjQK..."
}
'import requests
url = "https://api.invopop.com/apps/peppol/v1/entry/{silo_entry_id}/ownership"
payload = { "data": "JVBERi0xLjQK..." }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({data: 'JVBERi0xLjQK...'})
};
fetch('https://api.invopop.com/apps/peppol/v1/entry/{silo_entry_id}/ownership', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.invopop.com/apps/peppol/v1/entry/{silo_entry_id}/ownership",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'data' => 'JVBERi0xLjQK...'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.invopop.com/apps/peppol/v1/entry/{silo_entry_id}/ownership"
payload := strings.NewReader("{\n \"data\": \"JVBERi0xLjQK...\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.invopop.com/apps/peppol/v1/entry/{silo_entry_id}/ownership")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"data\": \"JVBERi0xLjQK...\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.invopop.com/apps/peppol/v1/entry/{silo_entry_id}/ownership")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"data\": \"JVBERi0xLjQK...\"\n}"
response = http.request(request)
puts response.read_body{
"status": "error",
"message": "peppol_id or vat required"
}{
"status": "error",
"message": "unauthorized"
}{
"status": "error",
"message": "ownership file must be a PDF"
}{
"status": "error",
"message": "internal server error"
}This endpoint allows you to upload a proof of ownership PDF document for Peppol registration. Upload it to Invopop so that it will be stored as an attachment to the silo entry. This document serves as verification of company ownership and is required for Peppol participant registration compliance.
The uploaded PDF will be reviewed by Invopop as part of the validation process, which can take up to 72 hours. The approval status can be monitored through the silo entry’s metadata.
Authorizations
Path Parameters
Body
application/json
Response
Document uploaded and registration completed successfully.
Was this page helpful?