curl --request POST \
--url https://api.hubapi.com/commerce/payments/2027-03-beta/manual-payments \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"associations": [
{
"to": {
"id": "<string>",
"objectType": "<string>"
},
"types": [
{
"associationCategory": "<string>",
"associationTypeId": "<string>"
}
]
}
],
"currencyCode": "<string>",
"paymentAmount": 123,
"paymentDate": "<string>",
"paymentMethod": "<string>",
"billingAddress": {
"city": "<string>",
"country": "<string>",
"line1": "<string>",
"line2": "<string>",
"postalCode": "<string>",
"state": "<string>"
},
"customerEmail": "<string>"
}
'import requests
url = "https://api.hubapi.com/commerce/payments/2027-03-beta/manual-payments"
payload = {
"associations": [
{
"to": {
"id": "<string>",
"objectType": "<string>"
},
"types": [
{
"associationCategory": "<string>",
"associationTypeId": "<string>"
}
]
}
],
"currencyCode": "<string>",
"paymentAmount": 123,
"paymentDate": "<string>",
"paymentMethod": "<string>",
"billingAddress": {
"city": "<string>",
"country": "<string>",
"line1": "<string>",
"line2": "<string>",
"postalCode": "<string>",
"state": "<string>"
},
"customerEmail": "<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({
associations: [
{
to: {id: '<string>', objectType: '<string>'},
types: [{associationCategory: '<string>', associationTypeId: '<string>'}]
}
],
currencyCode: '<string>',
paymentAmount: 123,
paymentDate: '<string>',
paymentMethod: '<string>',
billingAddress: {
city: '<string>',
country: '<string>',
line1: '<string>',
line2: '<string>',
postalCode: '<string>',
state: '<string>'
},
customerEmail: '<string>'
})
};
fetch('https://api.hubapi.com/commerce/payments/2027-03-beta/manual-payments', 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.hubapi.com/commerce/payments/2027-03-beta/manual-payments",
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([
'associations' => [
[
'to' => [
'id' => '<string>',
'objectType' => '<string>'
],
'types' => [
[
'associationCategory' => '<string>',
'associationTypeId' => '<string>'
]
]
]
],
'currencyCode' => '<string>',
'paymentAmount' => 123,
'paymentDate' => '<string>',
'paymentMethod' => '<string>',
'billingAddress' => [
'city' => '<string>',
'country' => '<string>',
'line1' => '<string>',
'line2' => '<string>',
'postalCode' => '<string>',
'state' => '<string>'
],
'customerEmail' => '<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.hubapi.com/commerce/payments/2027-03-beta/manual-payments"
payload := strings.NewReader("{\n \"associations\": [\n {\n \"to\": {\n \"id\": \"<string>\",\n \"objectType\": \"<string>\"\n },\n \"types\": [\n {\n \"associationCategory\": \"<string>\",\n \"associationTypeId\": \"<string>\"\n }\n ]\n }\n ],\n \"currencyCode\": \"<string>\",\n \"paymentAmount\": 123,\n \"paymentDate\": \"<string>\",\n \"paymentMethod\": \"<string>\",\n \"billingAddress\": {\n \"city\": \"<string>\",\n \"country\": \"<string>\",\n \"line1\": \"<string>\",\n \"line2\": \"<string>\",\n \"postalCode\": \"<string>\",\n \"state\": \"<string>\"\n },\n \"customerEmail\": \"<string>\"\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.hubapi.com/commerce/payments/2027-03-beta/manual-payments")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"associations\": [\n {\n \"to\": {\n \"id\": \"<string>\",\n \"objectType\": \"<string>\"\n },\n \"types\": [\n {\n \"associationCategory\": \"<string>\",\n \"associationTypeId\": \"<string>\"\n }\n ]\n }\n ],\n \"currencyCode\": \"<string>\",\n \"paymentAmount\": 123,\n \"paymentDate\": \"<string>\",\n \"paymentMethod\": \"<string>\",\n \"billingAddress\": {\n \"city\": \"<string>\",\n \"country\": \"<string>\",\n \"line1\": \"<string>\",\n \"line2\": \"<string>\",\n \"postalCode\": \"<string>\",\n \"state\": \"<string>\"\n },\n \"customerEmail\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hubapi.com/commerce/payments/2027-03-beta/manual-payments")
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 \"associations\": [\n {\n \"to\": {\n \"id\": \"<string>\",\n \"objectType\": \"<string>\"\n },\n \"types\": [\n {\n \"associationCategory\": \"<string>\",\n \"associationTypeId\": \"<string>\"\n }\n ]\n }\n ],\n \"currencyCode\": \"<string>\",\n \"paymentAmount\": 123,\n \"paymentDate\": \"<string>\",\n \"paymentMethod\": \"<string>\",\n \"billingAddress\": {\n \"city\": \"<string>\",\n \"country\": \"<string>\",\n \"line1\": \"<string>\",\n \"line2\": \"<string>\",\n \"postalCode\": \"<string>\",\n \"state\": \"<string>\"\n },\n \"customerEmail\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>"
}{
"message": "Invalid input (details will vary based on the error)",
"correlationId": "aeb5f871-7f07-4993-9211-075dc63e7cbf",
"category": "VALIDATION_ERROR",
"links": {
"knowledge-base": "https://www.hubspot.com/products/service/knowledge-base"
}
}Create manual payment
Create a manual payment in the HubSpot system. This endpoint allows you to specify details such as the payment amount, currency, payment method, and date. It is useful for recording payments that occur outside of automated systems, ensuring all payment data is captured within HubSpot.
curl --request POST \
--url https://api.hubapi.com/commerce/payments/2027-03-beta/manual-payments \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"associations": [
{
"to": {
"id": "<string>",
"objectType": "<string>"
},
"types": [
{
"associationCategory": "<string>",
"associationTypeId": "<string>"
}
]
}
],
"currencyCode": "<string>",
"paymentAmount": 123,
"paymentDate": "<string>",
"paymentMethod": "<string>",
"billingAddress": {
"city": "<string>",
"country": "<string>",
"line1": "<string>",
"line2": "<string>",
"postalCode": "<string>",
"state": "<string>"
},
"customerEmail": "<string>"
}
'import requests
url = "https://api.hubapi.com/commerce/payments/2027-03-beta/manual-payments"
payload = {
"associations": [
{
"to": {
"id": "<string>",
"objectType": "<string>"
},
"types": [
{
"associationCategory": "<string>",
"associationTypeId": "<string>"
}
]
}
],
"currencyCode": "<string>",
"paymentAmount": 123,
"paymentDate": "<string>",
"paymentMethod": "<string>",
"billingAddress": {
"city": "<string>",
"country": "<string>",
"line1": "<string>",
"line2": "<string>",
"postalCode": "<string>",
"state": "<string>"
},
"customerEmail": "<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({
associations: [
{
to: {id: '<string>', objectType: '<string>'},
types: [{associationCategory: '<string>', associationTypeId: '<string>'}]
}
],
currencyCode: '<string>',
paymentAmount: 123,
paymentDate: '<string>',
paymentMethod: '<string>',
billingAddress: {
city: '<string>',
country: '<string>',
line1: '<string>',
line2: '<string>',
postalCode: '<string>',
state: '<string>'
},
customerEmail: '<string>'
})
};
fetch('https://api.hubapi.com/commerce/payments/2027-03-beta/manual-payments', 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.hubapi.com/commerce/payments/2027-03-beta/manual-payments",
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([
'associations' => [
[
'to' => [
'id' => '<string>',
'objectType' => '<string>'
],
'types' => [
[
'associationCategory' => '<string>',
'associationTypeId' => '<string>'
]
]
]
],
'currencyCode' => '<string>',
'paymentAmount' => 123,
'paymentDate' => '<string>',
'paymentMethod' => '<string>',
'billingAddress' => [
'city' => '<string>',
'country' => '<string>',
'line1' => '<string>',
'line2' => '<string>',
'postalCode' => '<string>',
'state' => '<string>'
],
'customerEmail' => '<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.hubapi.com/commerce/payments/2027-03-beta/manual-payments"
payload := strings.NewReader("{\n \"associations\": [\n {\n \"to\": {\n \"id\": \"<string>\",\n \"objectType\": \"<string>\"\n },\n \"types\": [\n {\n \"associationCategory\": \"<string>\",\n \"associationTypeId\": \"<string>\"\n }\n ]\n }\n ],\n \"currencyCode\": \"<string>\",\n \"paymentAmount\": 123,\n \"paymentDate\": \"<string>\",\n \"paymentMethod\": \"<string>\",\n \"billingAddress\": {\n \"city\": \"<string>\",\n \"country\": \"<string>\",\n \"line1\": \"<string>\",\n \"line2\": \"<string>\",\n \"postalCode\": \"<string>\",\n \"state\": \"<string>\"\n },\n \"customerEmail\": \"<string>\"\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.hubapi.com/commerce/payments/2027-03-beta/manual-payments")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"associations\": [\n {\n \"to\": {\n \"id\": \"<string>\",\n \"objectType\": \"<string>\"\n },\n \"types\": [\n {\n \"associationCategory\": \"<string>\",\n \"associationTypeId\": \"<string>\"\n }\n ]\n }\n ],\n \"currencyCode\": \"<string>\",\n \"paymentAmount\": 123,\n \"paymentDate\": \"<string>\",\n \"paymentMethod\": \"<string>\",\n \"billingAddress\": {\n \"city\": \"<string>\",\n \"country\": \"<string>\",\n \"line1\": \"<string>\",\n \"line2\": \"<string>\",\n \"postalCode\": \"<string>\",\n \"state\": \"<string>\"\n },\n \"customerEmail\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hubapi.com/commerce/payments/2027-03-beta/manual-payments")
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 \"associations\": [\n {\n \"to\": {\n \"id\": \"<string>\",\n \"objectType\": \"<string>\"\n },\n \"types\": [\n {\n \"associationCategory\": \"<string>\",\n \"associationTypeId\": \"<string>\"\n }\n ]\n }\n ],\n \"currencyCode\": \"<string>\",\n \"paymentAmount\": 123,\n \"paymentDate\": \"<string>\",\n \"paymentMethod\": \"<string>\",\n \"billingAddress\": {\n \"city\": \"<string>\",\n \"country\": \"<string>\",\n \"line1\": \"<string>\",\n \"line2\": \"<string>\",\n \"postalCode\": \"<string>\",\n \"state\": \"<string>\"\n },\n \"customerEmail\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>"
}{
"message": "Invalid input (details will vary based on the error)",
"correlationId": "aeb5f871-7f07-4993-9211-075dc63e7cbf",
"category": "VALIDATION_ERROR",
"links": {
"knowledge-base": "https://www.hubspot.com/products/service/knowledge-base"
}
}Supported products
Supported products
Required Scopes
Required Scopes
Authorizations
The access token received from the authorization server in the OAuth 2.0 flow.
Body
An array of associations related to the payment, where each item is an AssociationPublicRequest object.
Show child attributes
Show child attributes
The currency code for the payment, represented as a string.
The amount of the payment, represented as a number.
The date of the payment, represented as a string.
The method used for the payment, represented as a string.
Show child attributes
Show child attributes
The email address of the customer making the payment, represented as a string.
Response
successful operation
The unique identifier for the created manual payment, represented as a string.
Was this page helpful?