curl --request PATCH \
--url https://api.app.lastaccountingcompany.com/portal/payment-settings \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"customer_id": "<string>",
"iban": "<string>",
"bic": "<string>",
"expected_row_version": 1,
"terms_accepted": true,
"terms_version": "<string>"
}
'import requests
url = "https://api.app.lastaccountingcompany.com/portal/payment-settings"
payload = {
"customer_id": "<string>",
"iban": "<string>",
"bic": "<string>",
"expected_row_version": 1,
"terms_accepted": True,
"terms_version": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
customer_id: '<string>',
iban: '<string>',
bic: '<string>',
expected_row_version: 1,
terms_accepted: true,
terms_version: '<string>'
})
};
fetch('https://api.app.lastaccountingcompany.com/portal/payment-settings', 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.app.lastaccountingcompany.com/portal/payment-settings",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'customer_id' => '<string>',
'iban' => '<string>',
'bic' => '<string>',
'expected_row_version' => 1,
'terms_accepted' => true,
'terms_version' => '<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.app.lastaccountingcompany.com/portal/payment-settings"
payload := strings.NewReader("{\n \"customer_id\": \"<string>\",\n \"iban\": \"<string>\",\n \"bic\": \"<string>\",\n \"expected_row_version\": 1,\n \"terms_accepted\": true,\n \"terms_version\": \"<string>\"\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.app.lastaccountingcompany.com/portal/payment-settings")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"customer_id\": \"<string>\",\n \"iban\": \"<string>\",\n \"bic\": \"<string>\",\n \"expected_row_version\": 1,\n \"terms_accepted\": true,\n \"terms_version\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.app.lastaccountingcompany.com/portal/payment-settings")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"customer_id\": \"<string>\",\n \"iban\": \"<string>\",\n \"bic\": \"<string>\",\n \"expected_row_version\": 1,\n \"terms_accepted\": true,\n \"terms_version\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"can_change": true,
"can_verify": true,
"banks": [
{
"bic": "<string>",
"name": "<string>",
"route": "iso_corporate",
"readiness": "live",
"activation": "bank_letter_or_provider_read",
"guide": "<string>"
}
],
"terms": {
"version": "<string>",
"url": "<string>",
"accepted": true
},
"verification": {
"state": "clear"
},
"setup": {
"iban": "<string>",
"bic": "<string>",
"bank_name": "<string>",
"delivery": "unavailable",
"bank_route_readiness": "live",
"row_version": 123,
"can_change": true,
"bank_connection": {
"state": "not_started",
"can_submit": true,
"can_activate": true,
"can_check": true,
"checks_enabled": true,
"submitted_at": "2023-11-07T05:31:56Z",
"activated_at": "2023-11-07T05:31:56Z",
"last_checked_at": "2023-11-07T05:31:56Z",
"provider_enriched_at": "2023-11-07T05:31:56Z"
},
"bank_route": "iso_corporate",
"bank_route_guide": "<string>"
}
}{
"error": "<string>",
"detail": "<string>"
}{
"error": "<string>",
"detail": "<string>"
}Configure the company paying account and accept current Open Payments terms
Customer-admin only. The IBAN is validated against the selected bank, that bank must prove live Open Payments SEPA readiness, and the current terms acceptance is recorded atomically with the paying account.
curl --request PATCH \
--url https://api.app.lastaccountingcompany.com/portal/payment-settings \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"customer_id": "<string>",
"iban": "<string>",
"bic": "<string>",
"expected_row_version": 1,
"terms_accepted": true,
"terms_version": "<string>"
}
'import requests
url = "https://api.app.lastaccountingcompany.com/portal/payment-settings"
payload = {
"customer_id": "<string>",
"iban": "<string>",
"bic": "<string>",
"expected_row_version": 1,
"terms_accepted": True,
"terms_version": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
customer_id: '<string>',
iban: '<string>',
bic: '<string>',
expected_row_version: 1,
terms_accepted: true,
terms_version: '<string>'
})
};
fetch('https://api.app.lastaccountingcompany.com/portal/payment-settings', 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.app.lastaccountingcompany.com/portal/payment-settings",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'customer_id' => '<string>',
'iban' => '<string>',
'bic' => '<string>',
'expected_row_version' => 1,
'terms_accepted' => true,
'terms_version' => '<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.app.lastaccountingcompany.com/portal/payment-settings"
payload := strings.NewReader("{\n \"customer_id\": \"<string>\",\n \"iban\": \"<string>\",\n \"bic\": \"<string>\",\n \"expected_row_version\": 1,\n \"terms_accepted\": true,\n \"terms_version\": \"<string>\"\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.app.lastaccountingcompany.com/portal/payment-settings")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"customer_id\": \"<string>\",\n \"iban\": \"<string>\",\n \"bic\": \"<string>\",\n \"expected_row_version\": 1,\n \"terms_accepted\": true,\n \"terms_version\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.app.lastaccountingcompany.com/portal/payment-settings")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"customer_id\": \"<string>\",\n \"iban\": \"<string>\",\n \"bic\": \"<string>\",\n \"expected_row_version\": 1,\n \"terms_accepted\": true,\n \"terms_version\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"can_change": true,
"can_verify": true,
"banks": [
{
"bic": "<string>",
"name": "<string>",
"route": "iso_corporate",
"readiness": "live",
"activation": "bank_letter_or_provider_read",
"guide": "<string>"
}
],
"terms": {
"version": "<string>",
"url": "<string>",
"accepted": true
},
"verification": {
"state": "clear"
},
"setup": {
"iban": "<string>",
"bic": "<string>",
"bank_name": "<string>",
"delivery": "unavailable",
"bank_route_readiness": "live",
"row_version": 123,
"can_change": true,
"bank_connection": {
"state": "not_started",
"can_submit": true,
"can_activate": true,
"can_check": true,
"checks_enabled": true,
"submitted_at": "2023-11-07T05:31:56Z",
"activated_at": "2023-11-07T05:31:56Z",
"last_checked_at": "2023-11-07T05:31:56Z",
"provider_enriched_at": "2023-11-07T05:31:56Z"
},
"bank_route": "iso_corporate",
"bank_route_guide": "<string>"
}
}{
"error": "<string>",
"detail": "<string>"
}{
"error": "<string>",
"detail": "<string>"
}Authorizations
Firebase ID token from an interactive portal session. Required for interactive operations (payroll, company settings, API-key management) and invoice decisions allowed by the member's review permissions.
Body
Response
Current paying-account setup.
The banks a company admin may choose as the paying bank: the provider lists them for the market and LAC has a route policy for them. route is how a payment reaches the bank (iso_corporate: a bank-side corporate agreement and the customer confirms the uploaded file in the bank; psd2_pis: payment initiation the customer authorises at release). readiness is live when LAC has proven the route end to end and releases money on it, provider_listed when the provider lists the bank but LAC has not verified the route yet: the account can be saved and the customer-side steps started, but nothing is released. activation names what marks the bank connection active and guide the setup guidance the portal renders for the bank. Live routes sort first.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Authoritative KYC UI state derived from LAC's hosted-flow attempt record and the provider's live status. started means LAC returned a hosted URL that remains the one actionable flow for 24 hours; retry means that URL expired or Open Payments answered Invalid; pending means a start has no recorded outcome and must not be repeated before the same 24-hour boundary. Only clear represents current provider validity.
- Option 1
- Option 2
Show child attributes
Show child attributes
Show child attributes
Show child attributes