Home

July 22, 2026

GET /v3/Invoices/{InvoiceKey} now returns InvoiceMagicLink, a link firms can send to clients to pay the invoice through Karbon Payments.

GET /v3/Invoices/{InvoiceKey}
{
  // ...existing invoice fields
  "InvoiceKey": "M2dVbCt4RHk",
  "InvoiceNumber": "KIN-1001",
  "InvoiceStatus": "AwaitingPayment",
  "InvoiceMagicLink": "https://clientportal.karbonhq.com/invoice-link?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..."
}

InvoiceMagicLink is only returned once the invoice has been posted; otherwise it’s null. This field is not returned on the /v3/Invoices list endpoint.

Set RestrictionLevel on Contacts and Organizations

RestrictionLevel can now be set on POST, PUT, and PATCH requests to /v3/Contacts and /v3/Organizations.

POST /v3/Contacts
Content-Type: application/json

{
  "FirstName": "Priya",
  "LastName": "Sharma",
  "RestrictionLevel": "Private"
}

Valid values:

ValueMeaning
PublicManaged by anyone in the firm. Always settable.
PrivateManaged only by the Client Team. Requires your API application to have the IncludePrivate permission.
HiddenVisible to and managed only by the Client Team. Requires your API application to have the IncludeHidden permission.

Public can always be set. Setting Private or Hidden without the matching permission returns 403 Forbidden:

{
  "error": {
    "code": "4021",
    "message": "This API application does not have permission to set RestrictionLevel to Hidden."
  }
}

An unrecognized RestrictionLevel value returns 400 Bad Request.

On PUT, omitting RestrictionLevel leaves the existing value unchanged rather than resetting it to Public. ClientGroup is not affected by this change — its RestrictionLevel remains read-only.