curl --request POST \
--url https://api.next.orenda.finance/v1/customers/{customerId}/limit-reviews/{reviewId}/submission \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"note": "<string>",
"documents": [
"<string>"
]
}
'import requests
url = "https://api.next.orenda.finance/v1/customers/{customerId}/limit-reviews/{reviewId}/submission"
payload = {
"note": "<string>",
"documents": ["<string>"]
}
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({note: '<string>', documents: ['<string>']})
};
fetch('https://api.next.orenda.finance/v1/customers/{customerId}/limit-reviews/{reviewId}/submission', 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.next.orenda.finance/v1/customers/{customerId}/limit-reviews/{reviewId}/submission",
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([
'note' => '<string>',
'documents' => [
'<string>'
]
]),
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.next.orenda.finance/v1/customers/{customerId}/limit-reviews/{reviewId}/submission"
payload := strings.NewReader("{\n \"note\": \"<string>\",\n \"documents\": [\n \"<string>\"\n ]\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.next.orenda.finance/v1/customers/{customerId}/limit-reviews/{reviewId}/submission")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"note\": \"<string>\",\n \"documents\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.next.orenda.finance/v1/customers/{customerId}/limit-reviews/{reviewId}/submission")
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 \"note\": \"<string>\",\n \"documents\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "<string>",
"data": {
"review": {
"reviewId": "<string>",
"status": "<string>",
"kind": "OUTGOING_PAYMENT",
"direction": "<string>",
"amount": 123,
"currency": "<string>",
"createdAt": "<string>",
"updatedAt": "<string>",
"cutoffAt": "<string>",
"submissions": [
{
"note": "<string>",
"documents": [
"<string>"
],
"at": "<string>",
"downloads": [
{
"document": "<string>",
"url": "<string>",
"expiresAt": "<string>"
}
],
"withPayment": true
}
],
"accountId": "<string>",
"payer": {
"name": "<string>",
"iban": "<string>",
"accountNumber": "<string>"
},
"payee": {
"name": "<string>",
"iban": "<string>",
"accountNumber": "<string>"
},
"reference": "<string>",
"askedAt": "<string>",
"decidedAt": "<string>",
"message": "<string>"
}
}
}{
"success": false,
"code": "<string>",
"message": "<string>",
"data": "<unknown>"
}{
"message": "<string>"
}{
"message": "<string>"
}{
"success": false,
"code": "<string>",
"message": "<string>",
"data": "<unknown>"
}{
"success": false,
"code": "<string>",
"message": "<string>",
"data": "<unknown>"
}{
"success": false,
"code": "<string>",
"message": "<string>",
"data": "<unknown>"
}Explain money held for review
Sends compliance the customer’s reason, once, and supporting documents, once. The reason comes with the payment (limitReview.note, with any limitReview.documents, when re-sending it) or with the first submission here (money arriving, a direct debit, or a scheduled payment held with nobody there to explain it); documents can come with it. A payment re-sent with limitReview.documents (even an empty list) closes the review to anything more: its documents came with it, so nothing is taken here (its submission carries withPayment: true). Otherwise, documents the reason didn’t carry follow in one more submission with documents and no (or an empty) note. Allowed until compliance decides; after the reason and its documents, or once the customer asked for the money to be sent back, nothing else is taken. Back office can do this for the customer too, with ?programId= naming a program its token’s programs claim allows, the customer read within that program only; a custodian (guardian-bound) role only for a customer whose application is bound to it. Anything outside that is the 404, never a 403. The review’s history records who acted, as the customer or as staff with their role (actor).
curl --request POST \
--url https://api.next.orenda.finance/v1/customers/{customerId}/limit-reviews/{reviewId}/submission \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"note": "<string>",
"documents": [
"<string>"
]
}
'import requests
url = "https://api.next.orenda.finance/v1/customers/{customerId}/limit-reviews/{reviewId}/submission"
payload = {
"note": "<string>",
"documents": ["<string>"]
}
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({note: '<string>', documents: ['<string>']})
};
fetch('https://api.next.orenda.finance/v1/customers/{customerId}/limit-reviews/{reviewId}/submission', 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.next.orenda.finance/v1/customers/{customerId}/limit-reviews/{reviewId}/submission",
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([
'note' => '<string>',
'documents' => [
'<string>'
]
]),
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.next.orenda.finance/v1/customers/{customerId}/limit-reviews/{reviewId}/submission"
payload := strings.NewReader("{\n \"note\": \"<string>\",\n \"documents\": [\n \"<string>\"\n ]\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.next.orenda.finance/v1/customers/{customerId}/limit-reviews/{reviewId}/submission")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"note\": \"<string>\",\n \"documents\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.next.orenda.finance/v1/customers/{customerId}/limit-reviews/{reviewId}/submission")
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 \"note\": \"<string>\",\n \"documents\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "<string>",
"data": {
"review": {
"reviewId": "<string>",
"status": "<string>",
"kind": "OUTGOING_PAYMENT",
"direction": "<string>",
"amount": 123,
"currency": "<string>",
"createdAt": "<string>",
"updatedAt": "<string>",
"cutoffAt": "<string>",
"submissions": [
{
"note": "<string>",
"documents": [
"<string>"
],
"at": "<string>",
"downloads": [
{
"document": "<string>",
"url": "<string>",
"expiresAt": "<string>"
}
],
"withPayment": true
}
],
"accountId": "<string>",
"payer": {
"name": "<string>",
"iban": "<string>",
"accountNumber": "<string>"
},
"payee": {
"name": "<string>",
"iban": "<string>",
"accountNumber": "<string>"
},
"reference": "<string>",
"askedAt": "<string>",
"decidedAt": "<string>",
"message": "<string>"
}
}
}{
"success": false,
"code": "<string>",
"message": "<string>",
"data": "<unknown>"
}{
"message": "<string>"
}{
"message": "<string>"
}{
"success": false,
"code": "<string>",
"message": "<string>",
"data": "<unknown>"
}{
"success": false,
"code": "<string>",
"message": "<string>",
"data": "<unknown>"
}{
"success": false,
"code": "<string>",
"message": "<string>",
"data": "<unknown>"
}Authorizations
The user's token from a completed sign-in. The program and environment come from the token.
Path Parameters
The customer
1The review. It must belong to customerId.
1Query Parameters
The program to act on. Ignored for customer tokens.
Only when the token carries no sandbox claim: which environment to act in.
true, false Body
Why the money is what it is, in the customer's words. Leave it out (or empty) only to add documents to a review that already has the reason
2000S3 URLs of files the customer uploaded for this review, in their own folder
10