curl --request POST \
--url https://api-sandbox.beinfi.com/customers \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"externalId": "<string>",
"name": "<string>",
"email": "<string>",
"taxId": "<string>",
"pspRef": "<string>",
"metadata": {}
}
'import requests
url = "https://api-sandbox.beinfi.com/customers"
payload = {
"externalId": "<string>",
"name": "<string>",
"email": "<string>",
"taxId": "<string>",
"pspRef": "<string>",
"metadata": {}
}
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({
externalId: '<string>',
name: '<string>',
email: '<string>',
taxId: '<string>',
pspRef: '<string>',
metadata: {}
})
};
fetch('https://api-sandbox.beinfi.com/customers', 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.beinfi.com/customers",
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([
'externalId' => '<string>',
'name' => '<string>',
'email' => '<string>',
'taxId' => '<string>',
'pspRef' => '<string>',
'metadata' => [
]
]),
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-sandbox.beinfi.com/customers"
payload := strings.NewReader("{\n \"externalId\": \"<string>\",\n \"name\": \"<string>\",\n \"email\": \"<string>\",\n \"taxId\": \"<string>\",\n \"pspRef\": \"<string>\",\n \"metadata\": {}\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-sandbox.beinfi.com/customers")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"externalId\": \"<string>\",\n \"name\": \"<string>\",\n \"email\": \"<string>\",\n \"taxId\": \"<string>\",\n \"pspRef\": \"<string>\",\n \"metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-sandbox.beinfi.com/customers")
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 \"externalId\": \"<string>\",\n \"name\": \"<string>\",\n \"email\": \"<string>\",\n \"taxId\": \"<string>\",\n \"pspRef\": \"<string>\",\n \"metadata\": {}\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"externalId": "<string>",
"name": "<string>",
"email": "<string>",
"taxId": "<string>",
"phone": "<string>",
"pspRef": "<string>",
"createdAt": "2023-11-07T05:31:56Z"
}{
"message": "<string>",
"error_code": "internal_error",
"tracer_id": "<string>"
}{
"message": "<string>",
"error_code": "internal_error",
"tracer_id": "<string>",
"errors": [
{
"field": "<string>",
"value": "<string>",
"constraint": "<string>",
"description": "<string>"
}
]
}Create a customer
Creates a customer without enrolling them in any product. To bill or meter usage you need an enrollment: use POST /products/{productID}/customers.
The call is idempotent on externalId: if a customer with that externalId already exists it is returned, and any fields you send replace the stored ones (fields you omit are kept).
curl --request POST \
--url https://api-sandbox.beinfi.com/customers \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"externalId": "<string>",
"name": "<string>",
"email": "<string>",
"taxId": "<string>",
"pspRef": "<string>",
"metadata": {}
}
'import requests
url = "https://api-sandbox.beinfi.com/customers"
payload = {
"externalId": "<string>",
"name": "<string>",
"email": "<string>",
"taxId": "<string>",
"pspRef": "<string>",
"metadata": {}
}
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({
externalId: '<string>',
name: '<string>',
email: '<string>',
taxId: '<string>',
pspRef: '<string>',
metadata: {}
})
};
fetch('https://api-sandbox.beinfi.com/customers', 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.beinfi.com/customers",
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([
'externalId' => '<string>',
'name' => '<string>',
'email' => '<string>',
'taxId' => '<string>',
'pspRef' => '<string>',
'metadata' => [
]
]),
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-sandbox.beinfi.com/customers"
payload := strings.NewReader("{\n \"externalId\": \"<string>\",\n \"name\": \"<string>\",\n \"email\": \"<string>\",\n \"taxId\": \"<string>\",\n \"pspRef\": \"<string>\",\n \"metadata\": {}\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-sandbox.beinfi.com/customers")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"externalId\": \"<string>\",\n \"name\": \"<string>\",\n \"email\": \"<string>\",\n \"taxId\": \"<string>\",\n \"pspRef\": \"<string>\",\n \"metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-sandbox.beinfi.com/customers")
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 \"externalId\": \"<string>\",\n \"name\": \"<string>\",\n \"email\": \"<string>\",\n \"taxId\": \"<string>\",\n \"pspRef\": \"<string>\",\n \"metadata\": {}\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"externalId": "<string>",
"name": "<string>",
"email": "<string>",
"taxId": "<string>",
"phone": "<string>",
"pspRef": "<string>",
"createdAt": "2023-11-07T05:31:56Z"
}{
"message": "<string>",
"error_code": "internal_error",
"tracer_id": "<string>"
}{
"message": "<string>",
"error_code": "internal_error",
"tracer_id": "<string>",
"errors": [
{
"field": "<string>",
"value": "<string>",
"constraint": "<string>",
"description": "<string>"
}
]
}Authorizations
Your account's secret key: Authorization: Bearer sk_test_… or sk_live_…. Server-side only.
Headers
A unique key per operation (a UUID works). Retrying with the same key returns the original response.
Body
This customer's id in your own system (for example, your app's user id). Required; sending the same value again returns the same customer.
Customer name.
Customer email.
CPF or CNPJ.
The customer's reference with the payment processor, if you already have one. Usually not needed.
Your own free-form JSON data. Stored on the enrollment.
Response
Customer created
The payer, at the level of your account. externalId is unique within the account.
Customer ID. Not the enrollment ID.
This customer's id in your own system.
CPF or CNPJ.
Contact phone, in international format as digits only, without + (for example 5511999999999). Used for contact; it does not identify the customer.
The customer's reference with the payment processor, when there is one.