curl --request POST \
--url https://sandbox.nmbr.co/services/payroll/roe_sat_agreements/{roe_sat_agreement}/revoke \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{}'import requests
url = "https://sandbox.nmbr.co/services/payroll/roe_sat_agreements/{roe_sat_agreement}/revoke"
payload = {}
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({})
};
fetch('https://sandbox.nmbr.co/services/payroll/roe_sat_agreements/{roe_sat_agreement}/revoke', 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://sandbox.nmbr.co/services/payroll/roe_sat_agreements/{roe_sat_agreement}/revoke",
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([
]),
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://sandbox.nmbr.co/services/payroll/roe_sat_agreements/{roe_sat_agreement}/revoke"
payload := strings.NewReader("{}")
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://sandbox.nmbr.co/services/payroll/roe_sat_agreements/{roe_sat_agreement}/revoke")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.nmbr.co/services/payroll/roe_sat_agreements/{roe_sat_agreement}/revoke")
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 = "{}"
response = http.request(request)
puts response.read_body{
"id": "<id>",
"object": "roe_sat_agreement",
"data": {
"business_entity": {
"id": "<id>",
"object": "business_entity",
"links": {
"self": "/business_entities/<id>"
}
},
"business_number": "136549169RP9916",
"business_legal_name": "Weber LLC",
"signer_name": "Prof. Brody Ernser III",
"signer_title": "Marketing Manager",
"signed_on": "2026-01-01",
"revoked_at": "2026-01-01T00:00:00.000000Z",
"locale": "en",
"letter_was_uploaded": false,
"created_at": "2026-01-01T00:00:00.000000Z",
"updated_at": "2026-01-01T00:00:00.000000Z"
},
"links": {
"self": "/roe_sat_agreements/<id>"
}
}Revoke an ROE SAT agreement
curl --request POST \
--url https://sandbox.nmbr.co/services/payroll/roe_sat_agreements/{roe_sat_agreement}/revoke \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{}'import requests
url = "https://sandbox.nmbr.co/services/payroll/roe_sat_agreements/{roe_sat_agreement}/revoke"
payload = {}
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({})
};
fetch('https://sandbox.nmbr.co/services/payroll/roe_sat_agreements/{roe_sat_agreement}/revoke', 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://sandbox.nmbr.co/services/payroll/roe_sat_agreements/{roe_sat_agreement}/revoke",
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([
]),
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://sandbox.nmbr.co/services/payroll/roe_sat_agreements/{roe_sat_agreement}/revoke"
payload := strings.NewReader("{}")
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://sandbox.nmbr.co/services/payroll/roe_sat_agreements/{roe_sat_agreement}/revoke")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.nmbr.co/services/payroll/roe_sat_agreements/{roe_sat_agreement}/revoke")
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 = "{}"
response = http.request(request)
puts response.read_body{
"id": "<id>",
"object": "roe_sat_agreement",
"data": {
"business_entity": {
"id": "<id>",
"object": "business_entity",
"links": {
"self": "/business_entities/<id>"
}
},
"business_number": "136549169RP9916",
"business_legal_name": "Weber LLC",
"signer_name": "Prof. Brody Ernser III",
"signer_title": "Marketing Manager",
"signed_on": "2026-01-01",
"revoked_at": "2026-01-01T00:00:00.000000Z",
"locale": "en",
"letter_was_uploaded": false,
"created_at": "2026-01-01T00:00:00.000000Z",
"updated_at": "2026-01-01T00:00:00.000000Z"
},
"links": {
"self": "/roe_sat_agreements/<id>"
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Body
The body is of type object.
Response
OK
The unique identifier of the object in Nmbr.
The type of the object in Nmbr ("roe_sat_agreement").
Hide child attributes
Hide child attributes
The CRA payroll account number (BN15) the agreement covers. ROEs issued under this number are filed with Service Canada automatically while the agreement is not revoked.
15The client's legal name as written on the letter.
255The person who signed the letter on the client's behalf.
255The signer's job title.
255The date written on the signed letter.
When the agreement was revoked. Null while the agreement is in effect.
The language of the letter (en or fr).
en, fr 2Whether the attached letter is the client's uploaded signed copy (true) or a copy generated from the recorded details (false). Download it from /roe_sat_agreements/{id}/letter.
The date and time the object was created in Nmbr.
The date and time the object was last updated in Nmbr.

