curl --request POST \
--url https://api.arcuserp.com/v1/accounting/bank-transactions/{bank_transaction_id}/match-customer-payment \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"order_payment_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"reconciliation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"move_payment_bank": false
}
'import requests
url = "https://api.arcuserp.com/v1/accounting/bank-transactions/{bank_transaction_id}/match-customer-payment"
payload = {
"order_payment_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"reconciliation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"move_payment_bank": 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({
order_payment_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
reconciliation_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
move_payment_bank: false
})
};
fetch('https://api.arcuserp.com/v1/accounting/bank-transactions/{bank_transaction_id}/match-customer-payment', 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.arcuserp.com/v1/accounting/bank-transactions/{bank_transaction_id}/match-customer-payment",
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([
'order_payment_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'reconciliation_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'move_payment_bank' => 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.arcuserp.com/v1/accounting/bank-transactions/{bank_transaction_id}/match-customer-payment"
payload := strings.NewReader("{\n \"order_payment_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"reconciliation_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"move_payment_bank\": 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.arcuserp.com/v1/accounting/bank-transactions/{bank_transaction_id}/match-customer-payment")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"order_payment_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"reconciliation_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"move_payment_bank\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.arcuserp.com/v1/accounting/bank-transactions/{bank_transaction_id}/match-customer-payment")
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 \"order_payment_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"reconciliation_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"move_payment_bank\": false\n}"
response = http.request(request)
puts response.read_body{
"data": {
"bank_transaction_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"order_payment_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"order_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"matched": true,
"amount_warning": "<string>",
"book_side": {
"stamped": 123,
"line_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"reason": "no_leg_on_bank_gl",
"historical_import": true,
"correction_legs": [
{
"journal_entry_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"entry_number": "<string>",
"entry_date": "2023-12-25",
"stamped": 123
}
]
},
"bank_account_scope": "same_bank_account",
"bank_move": {
"moved": true,
"from_bank_account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"from_bank_name": "<string>",
"to_bank_account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"to_bank_name": "<string>",
"amount": 123,
"correction_status": "<string>",
"correction_shape": "<string>",
"correction_entries": [
"<string>"
]
}
}
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}Match a deposit to a payment
Links an inbound bank transaction to a customer payment receipt as reconciled, posting no new GL entry since the receipt’s cash entry was already booked when it was recorded. Requires accounting:write scope; a receipt deposited to a different bank account is refused with 422 customer_payment_on_another_bank unless move_payment_bank: true is sent to reclassify it first, and a receipt already matched elsewhere is refused with 409 customer_payment_already_matched.
curl --request POST \
--url https://api.arcuserp.com/v1/accounting/bank-transactions/{bank_transaction_id}/match-customer-payment \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"order_payment_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"reconciliation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"move_payment_bank": false
}
'import requests
url = "https://api.arcuserp.com/v1/accounting/bank-transactions/{bank_transaction_id}/match-customer-payment"
payload = {
"order_payment_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"reconciliation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"move_payment_bank": 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({
order_payment_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
reconciliation_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
move_payment_bank: false
})
};
fetch('https://api.arcuserp.com/v1/accounting/bank-transactions/{bank_transaction_id}/match-customer-payment', 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.arcuserp.com/v1/accounting/bank-transactions/{bank_transaction_id}/match-customer-payment",
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([
'order_payment_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'reconciliation_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'move_payment_bank' => 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.arcuserp.com/v1/accounting/bank-transactions/{bank_transaction_id}/match-customer-payment"
payload := strings.NewReader("{\n \"order_payment_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"reconciliation_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"move_payment_bank\": 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.arcuserp.com/v1/accounting/bank-transactions/{bank_transaction_id}/match-customer-payment")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"order_payment_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"reconciliation_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"move_payment_bank\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.arcuserp.com/v1/accounting/bank-transactions/{bank_transaction_id}/match-customer-payment")
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 \"order_payment_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"reconciliation_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"move_payment_bank\": false\n}"
response = http.request(request)
puts response.read_body{
"data": {
"bank_transaction_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"order_payment_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"order_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"matched": true,
"amount_warning": "<string>",
"book_side": {
"stamped": 123,
"line_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"reason": "no_leg_on_bank_gl",
"historical_import": true,
"correction_legs": [
{
"journal_entry_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"entry_number": "<string>",
"entry_date": "2023-12-25",
"stamped": 123
}
]
},
"bank_account_scope": "same_bank_account",
"bank_move": {
"moved": true,
"from_bank_account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"from_bank_name": "<string>",
"to_bank_account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"to_bank_name": "<string>",
"amount": 123,
"correction_status": "<string>",
"correction_shape": "<string>",
"correction_entries": [
"<string>"
]
}
}
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}Authorizations
API key issued per entity via Settings > Developers > API Keys.
Each key carries scopes (e.g. orders:read, products:write).
Bearer token format: Authorization: Bearer ark_live_ent_Test keys use ark_test_ent_. Both are issued per entity
via Settings > Developers > API Keys.
Path Parameters
Body
UUID of the order_payment to match to this bank transaction
Optional active reconciliation session this match belongs to
Required, and only honoured, when the receipt was deposited directly to ANOTHER bank account (candidate requires_bank_move: true). Moves the receipt to this transaction's bank account and posts one dated reclassification per cash entry of the receipt before matching. Must be the boolean true.
Response
Matched successfully
Show child attributes
Show child attributes
Was this page helpful?

