Store wallet payment profile
curl --request POST \
--url https://api.consumer.younegotiate.com/bill-pay-wallet/payment-profiles \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"first_name": "Jane",
"last_name": "Consumer",
"address": "123 Main St",
"city": "Austin",
"state": "TX",
"zip": "73301",
"basis_theory_response": {
"id": "token_intent_card",
"type": "card"
}
}
'import requests
url = "https://api.consumer.younegotiate.com/bill-pay-wallet/payment-profiles"
payload = {
"first_name": "Jane",
"last_name": "Consumer",
"address": "123 Main St",
"city": "Austin",
"state": "TX",
"zip": "73301",
"basis_theory_response": {
"id": "token_intent_card",
"type": "card"
}
}
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({
first_name: 'Jane',
last_name: 'Consumer',
address: '123 Main St',
city: 'Austin',
state: 'TX',
zip: '73301',
basis_theory_response: {id: 'token_intent_card', type: 'card'}
})
};
fetch('https://api.consumer.younegotiate.com/bill-pay-wallet/payment-profiles', 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.consumer.younegotiate.com/bill-pay-wallet/payment-profiles",
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([
'first_name' => 'Jane',
'last_name' => 'Consumer',
'address' => '123 Main St',
'city' => 'Austin',
'state' => 'TX',
'zip' => '73301',
'basis_theory_response' => [
'id' => 'token_intent_card',
'type' => 'card'
]
]),
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.consumer.younegotiate.com/bill-pay-wallet/payment-profiles"
payload := strings.NewReader("{\n \"first_name\": \"Jane\",\n \"last_name\": \"Consumer\",\n \"address\": \"123 Main St\",\n \"city\": \"Austin\",\n \"state\": \"TX\",\n \"zip\": \"73301\",\n \"basis_theory_response\": {\n \"id\": \"token_intent_card\",\n \"type\": \"card\"\n }\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.consumer.younegotiate.com/bill-pay-wallet/payment-profiles")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"first_name\": \"Jane\",\n \"last_name\": \"Consumer\",\n \"address\": \"123 Main St\",\n \"city\": \"Austin\",\n \"state\": \"TX\",\n \"zip\": \"73301\",\n \"basis_theory_response\": {\n \"id\": \"token_intent_card\",\n \"type\": \"card\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.consumer.younegotiate.com/bill-pay-wallet/payment-profiles")
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 \"first_name\": \"Jane\",\n \"last_name\": \"Consumer\",\n \"address\": \"123 Main St\",\n \"city\": \"Austin\",\n \"state\": \"TX\",\n \"zip\": \"73301\",\n \"basis_theory_response\": {\n \"id\": \"token_intent_card\",\n \"type\": \"card\"\n }\n}"
response = http.request(request)
puts response.read_body{
"message": "<string>",
"data": {
"payment_profile": {
"id": 123,
"method_label": "Card",
"label": "Card ending in 4242",
"last_four_digit": "<string>",
"account_number_last_four": "<string>",
"expiration_month": "<string>",
"expiration_year": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"address": "<string>",
"city": "<string>",
"state": "<string>",
"zip": "<string>",
"is_saved_for_future_use": true
},
"saveable_payment_methods": {
"cc": true,
"ach": true
}
}
}{
"message": "<string>"
}{
"code": "profile_incomplete",
"message": "Please complete your communication profile before viewing accounts.",
"required_steps": [
"profile_communication"
]
}{
"message": "<string>",
"errors": {}
}Store wallet payment profile
Store one reusable card or ACH profile in the consumer Bill Pay Wallet. Send a Basis Theory token intent response/id only; never send raw PAN, CVC, bank account, or routing details outside the token payload. The wallet allows only one saved card profile and one saved ACH profile per authenticated consumer profile.
POST
/
bill-pay-wallet
/
payment-profiles
Store wallet payment profile
curl --request POST \
--url https://api.consumer.younegotiate.com/bill-pay-wallet/payment-profiles \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"first_name": "Jane",
"last_name": "Consumer",
"address": "123 Main St",
"city": "Austin",
"state": "TX",
"zip": "73301",
"basis_theory_response": {
"id": "token_intent_card",
"type": "card"
}
}
'import requests
url = "https://api.consumer.younegotiate.com/bill-pay-wallet/payment-profiles"
payload = {
"first_name": "Jane",
"last_name": "Consumer",
"address": "123 Main St",
"city": "Austin",
"state": "TX",
"zip": "73301",
"basis_theory_response": {
"id": "token_intent_card",
"type": "card"
}
}
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({
first_name: 'Jane',
last_name: 'Consumer',
address: '123 Main St',
city: 'Austin',
state: 'TX',
zip: '73301',
basis_theory_response: {id: 'token_intent_card', type: 'card'}
})
};
fetch('https://api.consumer.younegotiate.com/bill-pay-wallet/payment-profiles', 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.consumer.younegotiate.com/bill-pay-wallet/payment-profiles",
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([
'first_name' => 'Jane',
'last_name' => 'Consumer',
'address' => '123 Main St',
'city' => 'Austin',
'state' => 'TX',
'zip' => '73301',
'basis_theory_response' => [
'id' => 'token_intent_card',
'type' => 'card'
]
]),
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.consumer.younegotiate.com/bill-pay-wallet/payment-profiles"
payload := strings.NewReader("{\n \"first_name\": \"Jane\",\n \"last_name\": \"Consumer\",\n \"address\": \"123 Main St\",\n \"city\": \"Austin\",\n \"state\": \"TX\",\n \"zip\": \"73301\",\n \"basis_theory_response\": {\n \"id\": \"token_intent_card\",\n \"type\": \"card\"\n }\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.consumer.younegotiate.com/bill-pay-wallet/payment-profiles")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"first_name\": \"Jane\",\n \"last_name\": \"Consumer\",\n \"address\": \"123 Main St\",\n \"city\": \"Austin\",\n \"state\": \"TX\",\n \"zip\": \"73301\",\n \"basis_theory_response\": {\n \"id\": \"token_intent_card\",\n \"type\": \"card\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.consumer.younegotiate.com/bill-pay-wallet/payment-profiles")
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 \"first_name\": \"Jane\",\n \"last_name\": \"Consumer\",\n \"address\": \"123 Main St\",\n \"city\": \"Austin\",\n \"state\": \"TX\",\n \"zip\": \"73301\",\n \"basis_theory_response\": {\n \"id\": \"token_intent_card\",\n \"type\": \"card\"\n }\n}"
response = http.request(request)
puts response.read_body{
"message": "<string>",
"data": {
"payment_profile": {
"id": 123,
"method_label": "Card",
"label": "Card ending in 4242",
"last_four_digit": "<string>",
"account_number_last_four": "<string>",
"expiration_month": "<string>",
"expiration_year": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"address": "<string>",
"city": "<string>",
"state": "<string>",
"zip": "<string>",
"is_saved_for_future_use": true
},
"saveable_payment_methods": {
"cc": true,
"ach": true
}
}
}{
"message": "<string>"
}{
"code": "profile_incomplete",
"message": "Please complete your communication profile before viewing accounts.",
"required_steps": [
"profile_communication"
]
}{
"message": "<string>",
"errors": {}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
application/json
Maximum string length:
255Example:
"Jane"
Maximum string length:
255Example:
"Consumer"
Maximum string length:
255Example:
"123 Main St"
Maximum string length:
255Example:
"Austin"
Example:
"TX"
Pattern:
^\d{5}(-\d{4})?$Example:
"73301"
Available options:
cc, ach, null Basis Theory token intent payload generated by the frontend tokenization flow. The backend verifies this id and converts it to a token when the profile must be reusable.
Show child attributes
Show child attributes
Required when method is ach.
Available options:
checking, savings, null Last modified on July 19, 2026
Was this page helpful?
⌘I

