Create user
curl --request POST \
--url https://api.paywise.de/partner/v1/users/ \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"email": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"company": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"id": "<string>",
"notification_channels": [
{
"channel_type": "EMAIL",
"value": "<string>",
"notification_types": []
}
],
"skip_email_verification": false
}
'import requests
url = "https://api.paywise.de/partner/v1/users/"
payload = {
"email": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"company": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"id": "<string>",
"notification_channels": [
{
"channel_type": "EMAIL",
"value": "<string>",
"notification_types": []
}
],
"skip_email_verification": False
}
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({
email: '<string>',
first_name: '<string>',
last_name: '<string>',
company: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
id: '<string>',
notification_channels: [{channel_type: 'EMAIL', value: '<string>', notification_types: []}],
skip_email_verification: false
})
};
fetch('https://api.paywise.de/partner/v1/users/', 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.paywise.de/partner/v1/users/",
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([
'email' => '<string>',
'first_name' => '<string>',
'last_name' => '<string>',
'company' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'id' => '<string>',
'notification_channels' => [
[
'channel_type' => 'EMAIL',
'value' => '<string>',
'notification_types' => [
]
]
],
'skip_email_verification' => false
]),
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.paywise.de/partner/v1/users/"
payload := strings.NewReader("{\n \"email\": \"<string>\",\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"company\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"id\": \"<string>\",\n \"notification_channels\": [\n {\n \"channel_type\": \"EMAIL\",\n \"value\": \"<string>\",\n \"notification_types\": []\n }\n ],\n \"skip_email_verification\": false\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.paywise.de/partner/v1/users/")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"<string>\",\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"company\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"id\": \"<string>\",\n \"notification_channels\": [\n {\n \"channel_type\": \"EMAIL\",\n \"value\": \"<string>\",\n \"notification_types\": []\n }\n ],\n \"skip_email_verification\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.paywise.de/partner/v1/users/")
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 \"email\": \"<string>\",\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"company\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"id\": \"<string>\",\n \"notification_channels\": [\n {\n \"channel_type\": \"EMAIL\",\n \"value\": \"<string>\",\n \"notification_types\": []\n }\n ],\n \"skip_email_verification\": false\n}"
response = http.request(request)
puts response.read_body{
"href": "https://api.paywise.de/partner/v1/users/ab5fc850-7bb3-4c33-9741-d1305dfa41d9/",
"id": "ab5fc850-7bb3-4c33-9741-d1305dfa41d9",
"email": "[email protected]",
"first_name": "Max",
"last_name": "Mustermann",
"company": "6196ba03-83f2-46ea-83e1-a087bd0c5acc",
"email_verified": true,
"notification_channels": [
{
"channel_type": "EMAIL",
"value": "[email protected]",
"notification_types": [
"REQUESTS_TO_CLIENT",
"STATUS_UPDATE",
"STATEMENTS"
]
}
]
}{
"message": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}Users
Create user
Create a User. Only available in Instant Onboarding Mode
POST
/
partner
/
v1
/
users
/
Create user
curl --request POST \
--url https://api.paywise.de/partner/v1/users/ \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"email": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"company": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"id": "<string>",
"notification_channels": [
{
"channel_type": "EMAIL",
"value": "<string>",
"notification_types": []
}
],
"skip_email_verification": false
}
'import requests
url = "https://api.paywise.de/partner/v1/users/"
payload = {
"email": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"company": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"id": "<string>",
"notification_channels": [
{
"channel_type": "EMAIL",
"value": "<string>",
"notification_types": []
}
],
"skip_email_verification": False
}
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({
email: '<string>',
first_name: '<string>',
last_name: '<string>',
company: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
id: '<string>',
notification_channels: [{channel_type: 'EMAIL', value: '<string>', notification_types: []}],
skip_email_verification: false
})
};
fetch('https://api.paywise.de/partner/v1/users/', 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.paywise.de/partner/v1/users/",
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([
'email' => '<string>',
'first_name' => '<string>',
'last_name' => '<string>',
'company' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'id' => '<string>',
'notification_channels' => [
[
'channel_type' => 'EMAIL',
'value' => '<string>',
'notification_types' => [
]
]
],
'skip_email_verification' => false
]),
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.paywise.de/partner/v1/users/"
payload := strings.NewReader("{\n \"email\": \"<string>\",\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"company\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"id\": \"<string>\",\n \"notification_channels\": [\n {\n \"channel_type\": \"EMAIL\",\n \"value\": \"<string>\",\n \"notification_types\": []\n }\n ],\n \"skip_email_verification\": false\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.paywise.de/partner/v1/users/")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"<string>\",\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"company\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"id\": \"<string>\",\n \"notification_channels\": [\n {\n \"channel_type\": \"EMAIL\",\n \"value\": \"<string>\",\n \"notification_types\": []\n }\n ],\n \"skip_email_verification\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.paywise.de/partner/v1/users/")
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 \"email\": \"<string>\",\n \"first_name\": \"<string>\",\n \"last_name\": \"<string>\",\n \"company\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"id\": \"<string>\",\n \"notification_channels\": [\n {\n \"channel_type\": \"EMAIL\",\n \"value\": \"<string>\",\n \"notification_types\": []\n }\n ],\n \"skip_email_verification\": false\n}"
response = http.request(request)
puts response.read_body{
"href": "https://api.paywise.de/partner/v1/users/ab5fc850-7bb3-4c33-9741-d1305dfa41d9/",
"id": "ab5fc850-7bb3-4c33-9741-d1305dfa41d9",
"email": "[email protected]",
"first_name": "Max",
"last_name": "Mustermann",
"company": "6196ba03-83f2-46ea-83e1-a087bd0c5acc",
"email_verified": true,
"notification_channels": [
{
"channel_type": "EMAIL",
"value": "[email protected]",
"notification_types": [
"REQUESTS_TO_CLIENT",
"STATUS_UPDATE",
"STATEMENTS"
]
}
]
}{
"message": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}Note that this endpoint requires the permission API_ONLY_ONBOARDING on your API Key
This endpoint will return a 400 Status Code in case the email address provided is already in use
Since September 02, 2026 the
email field is validated for syntax. A malformed address is
rejected with a 400 Status Code and the field-level error
{"email": ["Invalid email address. Please provide a valid address."]}, and no user, membership,
notification channel or invitation is created.Addresses longer than 128 characters are rejected the same way. The address is copied into
several columns during onboarding, the narrowest of which hold 128 characters; a longer address
previously created a user that could not be completed.Before this change the endpoint accepted any string. A malformed address was stored, the
invitation email silently failed to deliver, and every later claim submitted for that company
failed. If your integration forwards addresses typed by end users, expect a 400 where you
previously received a 201.This endpoint returns a 400 Status Code if the company has been offboarded (permanently closed) on paywise. Offboarded companies no longer accept new users or invitations.
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
application/jsonapplication/x-www-form-urlencodedmultipart/form-data
E-Mail des Benutzers
Minimum string length:
1Vorname des Benutzers
Minimum string length:
1Nachname des Benutzers
Minimum string length:
1UUID of the company that the user is going to be part of
Minimum string length:
1Notification settings for the user
Show child attributes
Show child attributes
Use this flag to indicate that you already validated the user's email address in advance. This way you can start sending claims right away, without waiting for user opt-in
Response
E-Mail des Benutzers
Vorname des Benutzers
Nachname des Benutzers
UUID of the company that the user is going to be part of
Notification settings for the user
Show child attributes
Show child attributes
