curl --request POST \
--url https://api-sandbox.rinne.com.br/core/v1/merchants/{merchantId}/bank-accounts \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"branch_number": "0001",
"account_number": "12345678",
"account_type": "CHECKING",
"account_holder_name": "John Doe Silva",
"account_holder_document_number": "12345678901",
"ispb": "12345678",
"nickname": "Main operations account"
}
'import requests
url = "https://api-sandbox.rinne.com.br/core/v1/merchants/{merchantId}/bank-accounts"
payload = {
"branch_number": "0001",
"account_number": "12345678",
"account_type": "CHECKING",
"account_holder_name": "John Doe Silva",
"account_holder_document_number": "12345678901",
"ispb": "12345678",
"nickname": "Main operations account"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
branch_number: '0001',
account_number: '12345678',
account_type: 'CHECKING',
account_holder_name: 'John Doe Silva',
account_holder_document_number: '12345678901',
ispb: '12345678',
nickname: 'Main operations account'
})
};
fetch('https://api-sandbox.rinne.com.br/core/v1/merchants/{merchantId}/bank-accounts', 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-sandbox.rinne.com.br/core/v1/merchants/{merchantId}/bank-accounts",
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([
'branch_number' => '0001',
'account_number' => '12345678',
'account_type' => 'CHECKING',
'account_holder_name' => 'John Doe Silva',
'account_holder_document_number' => '12345678901',
'ispb' => '12345678',
'nickname' => 'Main operations account'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$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-sandbox.rinne.com.br/core/v1/merchants/{merchantId}/bank-accounts"
payload := strings.NewReader("{\n \"branch_number\": \"0001\",\n \"account_number\": \"12345678\",\n \"account_type\": \"CHECKING\",\n \"account_holder_name\": \"John Doe Silva\",\n \"account_holder_document_number\": \"12345678901\",\n \"ispb\": \"12345678\",\n \"nickname\": \"Main operations account\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
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-sandbox.rinne.com.br/core/v1/merchants/{merchantId}/bank-accounts")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"branch_number\": \"0001\",\n \"account_number\": \"12345678\",\n \"account_type\": \"CHECKING\",\n \"account_holder_name\": \"John Doe Silva\",\n \"account_holder_document_number\": \"12345678901\",\n \"ispb\": \"12345678\",\n \"nickname\": \"Main operations account\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-sandbox.rinne.com.br/core/v1/merchants/{merchantId}/bank-accounts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"branch_number\": \"0001\",\n \"account_number\": \"12345678\",\n \"account_type\": \"CHECKING\",\n \"account_holder_name\": \"John Doe Silva\",\n \"account_holder_document_number\": \"12345678901\",\n \"ispb\": \"12345678\",\n \"nickname\": \"Main operations account\"\n}"
response = http.request(request)
puts response.read_body{
"id": "b941fcaf-d77e-448c-9bdd-e7effd269fb7",
"company_id": "a3dbd0c2-9f79-4f86-8caa-47779b3f2793",
"nickname": "Main operations account",
"account_holder_name": "John Doe Silva",
"account_holder_document_number": "12345678901",
"branch_number": "0001",
"account_number": "12345678",
"account_type": "CHECKING",
"ispb": "12345678",
"status": "ACTIVE",
"deleted_at": null,
"primary": false,
"created_at": "2025-01-01T10:00:00.000Z",
"updated_at": "2025-01-01T10:00:00.000Z"
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "Validation error",
"status": 400,
"details": {
"issues": [
{
"field": "email",
"type": "REQUIRED",
"message": "Field 'email' is required",
"value": "invalid_value",
"constraints": {
"min": 18,
"max": 120
}
}
]
},
"path": "/companies",
"timestamp": "2023-12-01T10:00:00.000Z",
"requestId": "req_123456789"
}
}{
"error": {
"code": "AUTHENTICATION_ERROR",
"message": "Authentication required to access this resource",
"status": 401,
"details": {
"reason": "Invalid API key"
},
"path": "/companies/me",
"timestamp": "2023-12-01T10:00:00.000Z",
"requestId": "req_123456789"
}
}{
"error": {
"code": "AUTHORIZATION_ERROR",
"message": "You need 'admin' permissions to access this resource",
"status": 403,
"path": "/companies",
"timestamp": "2023-12-01T10:00:00.000Z",
"requestId": "req_123456789"
}
}{
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "Company with ID '123' not found",
"status": 404,
"path": "/companies/me",
"timestamp": "2023-12-01T10:00:00.000Z",
"requestId": "req_123456789"
}
}{
"error": {
"code": "INTERNAL_SERVER_ERROR",
"message": "An unexpected error occurred",
"status": 500,
"path": "/companies",
"timestamp": "2023-12-01T10:00:00.000Z",
"requestId": "req_123456789"
}
}Registers a new external bank account for a merchant
Registers a new external bank account for a merchant that belongs to the authenticated organization company
curl --request POST \
--url https://api-sandbox.rinne.com.br/core/v1/merchants/{merchantId}/bank-accounts \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"branch_number": "0001",
"account_number": "12345678",
"account_type": "CHECKING",
"account_holder_name": "John Doe Silva",
"account_holder_document_number": "12345678901",
"ispb": "12345678",
"nickname": "Main operations account"
}
'import requests
url = "https://api-sandbox.rinne.com.br/core/v1/merchants/{merchantId}/bank-accounts"
payload = {
"branch_number": "0001",
"account_number": "12345678",
"account_type": "CHECKING",
"account_holder_name": "John Doe Silva",
"account_holder_document_number": "12345678901",
"ispb": "12345678",
"nickname": "Main operations account"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
branch_number: '0001',
account_number: '12345678',
account_type: 'CHECKING',
account_holder_name: 'John Doe Silva',
account_holder_document_number: '12345678901',
ispb: '12345678',
nickname: 'Main operations account'
})
};
fetch('https://api-sandbox.rinne.com.br/core/v1/merchants/{merchantId}/bank-accounts', 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-sandbox.rinne.com.br/core/v1/merchants/{merchantId}/bank-accounts",
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([
'branch_number' => '0001',
'account_number' => '12345678',
'account_type' => 'CHECKING',
'account_holder_name' => 'John Doe Silva',
'account_holder_document_number' => '12345678901',
'ispb' => '12345678',
'nickname' => 'Main operations account'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$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-sandbox.rinne.com.br/core/v1/merchants/{merchantId}/bank-accounts"
payload := strings.NewReader("{\n \"branch_number\": \"0001\",\n \"account_number\": \"12345678\",\n \"account_type\": \"CHECKING\",\n \"account_holder_name\": \"John Doe Silva\",\n \"account_holder_document_number\": \"12345678901\",\n \"ispb\": \"12345678\",\n \"nickname\": \"Main operations account\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
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-sandbox.rinne.com.br/core/v1/merchants/{merchantId}/bank-accounts")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"branch_number\": \"0001\",\n \"account_number\": \"12345678\",\n \"account_type\": \"CHECKING\",\n \"account_holder_name\": \"John Doe Silva\",\n \"account_holder_document_number\": \"12345678901\",\n \"ispb\": \"12345678\",\n \"nickname\": \"Main operations account\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-sandbox.rinne.com.br/core/v1/merchants/{merchantId}/bank-accounts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"branch_number\": \"0001\",\n \"account_number\": \"12345678\",\n \"account_type\": \"CHECKING\",\n \"account_holder_name\": \"John Doe Silva\",\n \"account_holder_document_number\": \"12345678901\",\n \"ispb\": \"12345678\",\n \"nickname\": \"Main operations account\"\n}"
response = http.request(request)
puts response.read_body{
"id": "b941fcaf-d77e-448c-9bdd-e7effd269fb7",
"company_id": "a3dbd0c2-9f79-4f86-8caa-47779b3f2793",
"nickname": "Main operations account",
"account_holder_name": "John Doe Silva",
"account_holder_document_number": "12345678901",
"branch_number": "0001",
"account_number": "12345678",
"account_type": "CHECKING",
"ispb": "12345678",
"status": "ACTIVE",
"deleted_at": null,
"primary": false,
"created_at": "2025-01-01T10:00:00.000Z",
"updated_at": "2025-01-01T10:00:00.000Z"
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "Validation error",
"status": 400,
"details": {
"issues": [
{
"field": "email",
"type": "REQUIRED",
"message": "Field 'email' is required",
"value": "invalid_value",
"constraints": {
"min": 18,
"max": 120
}
}
]
},
"path": "/companies",
"timestamp": "2023-12-01T10:00:00.000Z",
"requestId": "req_123456789"
}
}{
"error": {
"code": "AUTHENTICATION_ERROR",
"message": "Authentication required to access this resource",
"status": 401,
"details": {
"reason": "Invalid API key"
},
"path": "/companies/me",
"timestamp": "2023-12-01T10:00:00.000Z",
"requestId": "req_123456789"
}
}{
"error": {
"code": "AUTHORIZATION_ERROR",
"message": "You need 'admin' permissions to access this resource",
"status": 403,
"path": "/companies",
"timestamp": "2023-12-01T10:00:00.000Z",
"requestId": "req_123456789"
}
}{
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "Company with ID '123' not found",
"status": 404,
"path": "/companies/me",
"timestamp": "2023-12-01T10:00:00.000Z",
"requestId": "req_123456789"
}
}{
"error": {
"code": "INTERNAL_SERVER_ERROR",
"message": "An unexpected error occurred",
"status": 500,
"path": "/companies",
"timestamp": "2023-12-01T10:00:00.000Z",
"requestId": "req_123456789"
}
}Authorizations
Company API key for authentication
Path Parameters
The merchant ID
Body
Schema for creating a new company bank account
Branch number (digits only)
^\d+$"0001"
Account number (digits only)
^\d+$"12345678"
Account type
CHECKING, SAVINGS, SALARY, PAYMENT "CHECKING"
Account holder full name
"John Doe Silva"
Account holder document number (CPF or CNPJ)
"12345678901"
ISPB (Brazilian Payment System Identifier)
"12345678"
Optional user-defined label to distinguish accounts (e.g. when holding multiple accounts at the same bank)
1 - 100"Main operations account"
Response
Bank account created successfully
Company bank account response
Bank account ID
"b941fcaf-d77e-448c-9bdd-e7effd269fb7"
Company ID
"a3dbd0c2-9f79-4f86-8caa-47779b3f2793"
User-defined label to distinguish accounts (null when not set)
"Main operations account"
Account holder full name
"John Doe Silva"
Account holder document number
"12345678901"
Branch number (digits only)
^\d+$"0001"
Account number (digits only)
^\d+$"12345678"
Account type
CHECKING, SAVINGS, SALARY, PAYMENT "CHECKING"
ISPB (Brazilian Payment System Identifier)
"12345678"
Account status
ACTIVE, DELETED "ACTIVE"
Deletion timestamp (null if not deleted)
null
Whether this is the primary bank account
false
Creation timestamp
"2025-01-01T10:00:00.000Z"
Last update timestamp
"2025-01-01T10:00:00.000Z"

