Update a payment

Updated:

PUT/payment/{connection_id}/payment/{id}

Updates the PaymentPayment identified by id. Provide the unified PaymentPayment fields to change in the request body.

Parameters

fieldsstring array
Fields to return
rawstring
Raw parameters to include in the 3rd-party request. Encoded as a URL component. eg. raw parameters: foo=bar&zoo=bar -> raw=foo%3Dbar%26zoo%3Dbar
connection_idstring required
ID of the connection
idstring required
ID of the Payment

Payload

idstring
created_atdate-time
(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
updated_atdate-time
(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
total_amountnumber
The amount paid, in the payment's currency
contact_idstring
(reference to AccountingContact)
payment_methodstring
type enum
Valid values:
"INVOICE"
"BILL"
currencystring
notesstring
invoice_idstring
(reference to AccountingInvoice)
bill_idstring
references AccountingBill
link_idstring
account_idstring
(reference to AccountingAccount)
referencestring
organization_idstring
reference to an AccountingOrganization
allocations array
What this payment was applied to (invoices, bills, credit memos, etc.). Replaces separate invoice/bill payment endpoints.
status enum
Valid values:
"SUCCEEDED"
"PENDING"
"AUTHORIZED"
"FAILED"
"CANCELED"
salesorder_idstring
reference to an AccountingSalesorder, e.g. the POS order this payment settled
tender_type enum
Valid values:
"CARD"
"CASH"
"GIFT_CARD"
"BANK_TRANSFER"
"WALLET"
normalized tender category; the provider's original label stays in payment_method
tip_amountnumber
fee_amountnumber
processing/processor fee
location_idstring
store/site where the payment was taken (commerce_location)
device_idstring
POS terminal/register/device (hr device)
card_brandstring
card_last4string
paid_atdate-time
Date and time the payment was made (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
exchange_ratenumber
Exchange rate to the base/home currency at the payment date
category_idsstring array
dimension refs -> AccountingCategory
net_amountnumber
total_amount minus fee_amount
metadata array

Returns

Response fieldTypeRequiredDescription
idstringNo
created_atstring (date-time)No(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
updated_atstring (date-time)No(ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
total_amountnumberNoThe amount paid, in the payment's currency
contact_idstringNo(reference to AccountingContact)
payment_methodstringNo
typeenumNoValues: INVOICE, BILL
currencystringNo
notesstringNo
invoice_idstringNo(reference to AccountingInvoice)
bill_idstringNoreferences AccountingBill
link_idstringNo
account_idstringNo(reference to AccountingAccount)
referencestringNo
organization_idstringNoreference to an AccountingOrganization
allocationsPaymentAllocation[]NoWhat this payment was applied to (invoices, bills, credit memos, etc.). Replaces separate invoice/bill payment endpoints.
allocations[].object_typeenumNoThe type of object this payment was applied to Values: INVOICE, BILL, CREDITMEMO, VENDORCREDIT, SALESORDER, PURCHASEORDER
allocations[].object_idstringNoThe id of the object this payment was applied to
allocations[].amountnumberNoThe amount of the payment applied to this object
allocations[].currencystringNoISO 4217 currency code of the applied amount
allocations[].exchange_ratenumberNoThe exchange rate at the time the payment was applied, for multi-currency
allocations[].allocated_atstring (date-time)NoDate and time when the payment was applied, in ISO 8601 format and UTC (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
statusenumNoValues: SUCCEEDED, PENDING, AUTHORIZED, FAILED, CANCELED
salesorder_idstringNoreference to an AccountingSalesorder, e.g. the POS order this payment settled
tender_typeenumNonormalized tender category; the provider's original label stays in payment_method Values: CARD, CASH, GIFT_CARD, BANK_TRANSFER, WALLET, CHECK, STORE_CREDIT, BUY_NOW_PAY_LATER, EXTERNAL, OTHER
tip_amountnumberNo
fee_amountnumberNoprocessing/processor fee
location_idstringNostore/site where the payment was taken (commerce_location)
device_idstringNoPOS terminal/register/device (hr device)
card_brandstringNo
card_last4stringNo
paid_atstring (date-time)NoDate and time the payment was made (ISO-8601 / YYYY-MM-DDTHH:MM:SSZ format)
exchange_ratenumberNoExchange rate to the base/home currency at the payment date
category_idsstring[]Nodimension refs -> AccountingCategory
net_amountnumberNototal_amount minus fee_amount
metadataPaymentMetadata[]No
metadata[].idstringNo
metadata[].slugstringNo
metadata[].valueobjectNo
metadata[].namespacestringNo
metadata[].formatenumNoValues: TEXT, NUMBER, DATE, BOOLEAN, FILE, TEXTAREA, SINGLE_SELECT, MULTIPLE_SELECT, MEASUREMENT, PRICE, YES_NO, CURRENCY, URL
metadata[].extra_dataobjectNo

Errors

Errors return the HTTP status code and a JSON body with statusCode, error (the short label) and message (a human-readable detail).

{
  "statusCode": 429,
  "error": "Too Many Requests",
  "message": "Too many requests to unified.to API; max requests per minute: N"
}
StatusErrorMeaning
400Bad RequestThe request was malformed or failed validation.
401UnauthorizedThe connection is likely broken; re-authorize it.
403ForbiddenThe connection is missing permissions or scopes.
404Not FoundThe requested resource does not exist.
429Too Many RequestsRate limit exceeded (see the two sources below).
500Internal Server ErrorAn unexpected error occurred.
501Not ImplementedNot supported by this integration.

Errors from the underlying integration pass through: the integration's status comes back as ours (429, 401, 403, 404 or 5xx), usually with its message. When the integration's error body is unclear, Unified extracts what it can and returns a clearer message.

429 Too Many Requests

A 429 has two possible sources:

  • The integration's own rate limit, passed through.
  • Unified's workspace limit: a rolling 60 seconds, set by plan, with the message Too many requests to unified.to API; max requests per minute: N.
const options = {
  method: 'PUT',
  url: 'https://api.unified.to/payment/5de520f96e439b002043d8dc/payment/5de520f96e439b002043d8d8',
  headers: {
    authorization: 'bearer .....'
  },
  data: undefined,
  params: {
    fields: '',
    raw: '',
  }
};

const results = await axios.request(options);
Are we missing anything? Let us know
Was this page helpful?