curl --request POST \
--url https://api.arcuserp.com/v1/payments/multi-invoice-apply \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"amount": 5000,
"auto_apply": true,
"route_unapplied": "credit",
"applications": [
{
"order_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"amount_applied": 2500
}
],
"check_number": "<string>",
"check_date": "2023-12-25",
"external_reference": "<string>",
"notes": "<string>",
"payment_date": "2023-12-25"
}
'import requests
url = "https://api.arcuserp.com/v1/payments/multi-invoice-apply"
payload = {
"account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"amount": 5000,
"auto_apply": True,
"route_unapplied": "credit",
"applications": [
{
"order_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"amount_applied": 2500
}
],
"check_number": "<string>",
"check_date": "2023-12-25",
"external_reference": "<string>",
"notes": "<string>",
"payment_date": "2023-12-25"
}
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({
account_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
amount: 5000,
auto_apply: true,
route_unapplied: 'credit',
applications: [{order_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a', amount_applied: 2500}],
check_number: '<string>',
check_date: '2023-12-25',
external_reference: '<string>',
notes: '<string>',
payment_date: '2023-12-25'
})
};
fetch('https://api.arcuserp.com/v1/payments/multi-invoice-apply', 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/payments/multi-invoice-apply",
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([
'account_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'amount' => 5000,
'auto_apply' => true,
'route_unapplied' => 'credit',
'applications' => [
[
'order_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'amount_applied' => 2500
]
],
'check_number' => '<string>',
'check_date' => '2023-12-25',
'external_reference' => '<string>',
'notes' => '<string>',
'payment_date' => '2023-12-25'
]),
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/payments/multi-invoice-apply"
payload := strings.NewReader("{\n \"account_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"amount\": 5000,\n \"auto_apply\": true,\n \"route_unapplied\": \"credit\",\n \"applications\": [\n {\n \"order_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"amount_applied\": 2500\n }\n ],\n \"check_number\": \"<string>\",\n \"check_date\": \"2023-12-25\",\n \"external_reference\": \"<string>\",\n \"notes\": \"<string>\",\n \"payment_date\": \"2023-12-25\"\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/payments/multi-invoice-apply")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"account_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"amount\": 5000,\n \"auto_apply\": true,\n \"route_unapplied\": \"credit\",\n \"applications\": [\n {\n \"order_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"amount_applied\": 2500\n }\n ],\n \"check_number\": \"<string>\",\n \"check_date\": \"2023-12-25\",\n \"external_reference\": \"<string>\",\n \"notes\": \"<string>\",\n \"payment_date\": \"2023-12-25\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.arcuserp.com/v1/payments/multi-invoice-apply")
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 \"account_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"amount\": 5000,\n \"auto_apply\": true,\n \"route_unapplied\": \"credit\",\n \"applications\": [\n {\n \"order_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"amount_applied\": 2500\n }\n ],\n \"check_number\": \"<string>\",\n \"check_date\": \"2023-12-25\",\n \"external_reference\": \"<string>\",\n \"notes\": \"<string>\",\n \"payment_date\": \"2023-12-25\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"entity_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"amount": 123,
"payment_method": "<string>",
"status": "<string>",
"journal_entry_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"applied_count": 123,
"applications": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"order_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"amount_applied": 123
}
]
},
"idempotent_replay": true
}{
"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"
}Apply a single payment to multiple invoices (atomic create)
curl --request POST \
--url https://api.arcuserp.com/v1/payments/multi-invoice-apply \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"amount": 5000,
"auto_apply": true,
"route_unapplied": "credit",
"applications": [
{
"order_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"amount_applied": 2500
}
],
"check_number": "<string>",
"check_date": "2023-12-25",
"external_reference": "<string>",
"notes": "<string>",
"payment_date": "2023-12-25"
}
'import requests
url = "https://api.arcuserp.com/v1/payments/multi-invoice-apply"
payload = {
"account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"amount": 5000,
"auto_apply": True,
"route_unapplied": "credit",
"applications": [
{
"order_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"amount_applied": 2500
}
],
"check_number": "<string>",
"check_date": "2023-12-25",
"external_reference": "<string>",
"notes": "<string>",
"payment_date": "2023-12-25"
}
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({
account_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
amount: 5000,
auto_apply: true,
route_unapplied: 'credit',
applications: [{order_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a', amount_applied: 2500}],
check_number: '<string>',
check_date: '2023-12-25',
external_reference: '<string>',
notes: '<string>',
payment_date: '2023-12-25'
})
};
fetch('https://api.arcuserp.com/v1/payments/multi-invoice-apply', 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/payments/multi-invoice-apply",
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([
'account_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'amount' => 5000,
'auto_apply' => true,
'route_unapplied' => 'credit',
'applications' => [
[
'order_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'amount_applied' => 2500
]
],
'check_number' => '<string>',
'check_date' => '2023-12-25',
'external_reference' => '<string>',
'notes' => '<string>',
'payment_date' => '2023-12-25'
]),
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/payments/multi-invoice-apply"
payload := strings.NewReader("{\n \"account_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"amount\": 5000,\n \"auto_apply\": true,\n \"route_unapplied\": \"credit\",\n \"applications\": [\n {\n \"order_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"amount_applied\": 2500\n }\n ],\n \"check_number\": \"<string>\",\n \"check_date\": \"2023-12-25\",\n \"external_reference\": \"<string>\",\n \"notes\": \"<string>\",\n \"payment_date\": \"2023-12-25\"\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/payments/multi-invoice-apply")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"account_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"amount\": 5000,\n \"auto_apply\": true,\n \"route_unapplied\": \"credit\",\n \"applications\": [\n {\n \"order_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"amount_applied\": 2500\n }\n ],\n \"check_number\": \"<string>\",\n \"check_date\": \"2023-12-25\",\n \"external_reference\": \"<string>\",\n \"notes\": \"<string>\",\n \"payment_date\": \"2023-12-25\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.arcuserp.com/v1/payments/multi-invoice-apply")
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 \"account_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"amount\": 5000,\n \"auto_apply\": true,\n \"route_unapplied\": \"credit\",\n \"applications\": [\n {\n \"order_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"amount_applied\": 2500\n }\n ],\n \"check_number\": \"<string>\",\n \"check_date\": \"2023-12-25\",\n \"external_reference\": \"<string>\",\n \"notes\": \"<string>\",\n \"payment_date\": \"2023-12-25\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"entity_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"amount": 123,
"payment_method": "<string>",
"status": "<string>",
"journal_entry_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"applied_count": 123,
"applications": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"order_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"amount_applied": 123
}
]
},
"idempotent_replay": true
}{
"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.
Headers
Client-generated unique key for idempotent POST/PATCH/DELETE operations. Alias for the Idempotency parameter. Max 255 chars. On retry with the same key, the original response is returned without re-executing the operation. Keys expire after 24 hours.
255Body
The customer account receiving this payment.
Tender method for this payment.
check, ach, wire, external, cash, credit Total payment amount in dollars (cash actually received). The sum of applications[].amount_applied must be <= amount; any surplus requires route_unapplied='credit'.
5000
When true (and applications omitted), the server allocates the payment oldest-first across the account open invoices. The response returns the computed applications[].
true
When 'credit', any surplus (amount beyond what open invoices absorb) is held as a credit-on-account via a balanced journal entry in the same transaction. Without it, a surplus is refused (no silent cap).
credit Per-invoice application lines (manual override). Omit when auto_apply=true. Sum of amount_applied must be <= amount; any remainder requires route_unapplied='credit'.
1 - 50 elementsShow child attributes
Show child attributes
Check number (for check payments).
Check date (YYYY-MM-DD).
External reference (ACH trace number, wire memo, etc.).
Internal notes for this payment.
Payment date for GL posting (YYYY-MM-DD; defaults to today).
Was this page helpful?

