curl --request POST \
--url https://platform.spritz.finance/v1/debit-cards/ \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"encryptedCardNumber": "ev:SWFSS:...",
"expiryMonth": "ev:SWFSS:...",
"expiryYear": "ev:SWFSS:...",
"cardLastFour": "4321",
"cardBin": "411111",
"cardholderFirstName": "John",
"cardholderLastName": "Doe",
"billingAddress": {
"line1": "123 Main St",
"city": "New York",
"state": "NY",
"postalCode": "10001",
"country": "US",
"line2": "Apt 4"
},
"label": "My Visa Debit"
}
'import requests
url = "https://platform.spritz.finance/v1/debit-cards/"
payload = {
"encryptedCardNumber": "ev:SWFSS:...",
"expiryMonth": "ev:SWFSS:...",
"expiryYear": "ev:SWFSS:...",
"cardLastFour": "4321",
"cardBin": "411111",
"cardholderFirstName": "John",
"cardholderLastName": "Doe",
"billingAddress": {
"line1": "123 Main St",
"city": "New York",
"state": "NY",
"postalCode": "10001",
"country": "US",
"line2": "Apt 4"
},
"label": "My Visa Debit"
}
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({
encryptedCardNumber: 'ev:SWFSS:...',
expiryMonth: 'ev:SWFSS:...',
expiryYear: 'ev:SWFSS:...',
cardLastFour: '4321',
cardBin: '411111',
cardholderFirstName: 'John',
cardholderLastName: 'Doe',
billingAddress: {
line1: '123 Main St',
city: 'New York',
state: 'NY',
postalCode: '10001',
country: 'US',
line2: 'Apt 4'
},
label: 'My Visa Debit'
})
};
fetch('https://platform.spritz.finance/v1/debit-cards/', 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://platform.spritz.finance/v1/debit-cards/",
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([
'encryptedCardNumber' => 'ev:SWFSS:...',
'expiryMonth' => 'ev:SWFSS:...',
'expiryYear' => 'ev:SWFSS:...',
'cardLastFour' => '4321',
'cardBin' => '411111',
'cardholderFirstName' => 'John',
'cardholderLastName' => 'Doe',
'billingAddress' => [
'line1' => '123 Main St',
'city' => 'New York',
'state' => 'NY',
'postalCode' => '10001',
'country' => 'US',
'line2' => 'Apt 4'
],
'label' => 'My Visa Debit'
]),
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://platform.spritz.finance/v1/debit-cards/"
payload := strings.NewReader("{\n \"encryptedCardNumber\": \"ev:SWFSS:...\",\n \"expiryMonth\": \"ev:SWFSS:...\",\n \"expiryYear\": \"ev:SWFSS:...\",\n \"cardLastFour\": \"4321\",\n \"cardBin\": \"411111\",\n \"cardholderFirstName\": \"John\",\n \"cardholderLastName\": \"Doe\",\n \"billingAddress\": {\n \"line1\": \"123 Main St\",\n \"city\": \"New York\",\n \"state\": \"NY\",\n \"postalCode\": \"10001\",\n \"country\": \"US\",\n \"line2\": \"Apt 4\"\n },\n \"label\": \"My Visa Debit\"\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://platform.spritz.finance/v1/debit-cards/")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"encryptedCardNumber\": \"ev:SWFSS:...\",\n \"expiryMonth\": \"ev:SWFSS:...\",\n \"expiryYear\": \"ev:SWFSS:...\",\n \"cardLastFour\": \"4321\",\n \"cardBin\": \"411111\",\n \"cardholderFirstName\": \"John\",\n \"cardholderLastName\": \"Doe\",\n \"billingAddress\": {\n \"line1\": \"123 Main St\",\n \"city\": \"New York\",\n \"state\": \"NY\",\n \"postalCode\": \"10001\",\n \"country\": \"US\",\n \"line2\": \"Apt 4\"\n },\n \"label\": \"My Visa Debit\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://platform.spritz.finance/v1/debit-cards/")
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 \"encryptedCardNumber\": \"ev:SWFSS:...\",\n \"expiryMonth\": \"ev:SWFSS:...\",\n \"expiryYear\": \"ev:SWFSS:...\",\n \"cardLastFour\": \"4321\",\n \"cardBin\": \"411111\",\n \"cardholderFirstName\": \"John\",\n \"cardholderLastName\": \"Doe\",\n \"billingAddress\": {\n \"line1\": \"123 Main St\",\n \"city\": \"New York\",\n \"state\": \"NY\",\n \"postalCode\": \"10001\",\n \"country\": \"US\",\n \"line2\": \"Apt 4\"\n },\n \"label\": \"My Visa Debit\"\n}"
response = http.request(request)
puts response.read_body{
"id": "6a749a054c3b8fc5da595d19",
"cardNumberLast4": "1111",
"expiryMonth": 12,
"expiryYear": 2027,
"isTokenized": true,
"createdAt": "2023-11-07T05:31:56Z",
"label": "<string>",
"requirements": [
{
"type": "card_details",
"fields": [
"cardholder_name",
"billing_address"
],
"reason": "Cardholder name and billing address are required to enable payouts."
}
]
}{
"title": "Unauthorized",
"status": 401,
"type": "urn:problem-type:auth:unauthorized",
"detail": "Bearer token required",
"instance": "<string>",
"realm": "API",
"scope": "read:users"
}{
"title": "<string>",
"status": 404,
"resourceType": "user",
"resourceId": "<string>",
"type": "about:blank",
"detail": "<string>",
"instance": "<string>"
}{
"title": "Unauthorized",
"status": 400,
"type": "urn:problem-type:auth:unauthorized",
"detail": "<string>",
"instance": "/errors/1234567890",
"code": "transaction_limit",
"field": "amountUsd",
"retryable": true
}Add a debit card
Adds a new debit card for push-to-debit payouts. Card data must be encrypted via the Evervault Card iframe — send the encrypted tokens and plaintext metadata (last four, BIN, brand) returned by the iframe.
curl --request POST \
--url https://platform.spritz.finance/v1/debit-cards/ \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"encryptedCardNumber": "ev:SWFSS:...",
"expiryMonth": "ev:SWFSS:...",
"expiryYear": "ev:SWFSS:...",
"cardLastFour": "4321",
"cardBin": "411111",
"cardholderFirstName": "John",
"cardholderLastName": "Doe",
"billingAddress": {
"line1": "123 Main St",
"city": "New York",
"state": "NY",
"postalCode": "10001",
"country": "US",
"line2": "Apt 4"
},
"label": "My Visa Debit"
}
'import requests
url = "https://platform.spritz.finance/v1/debit-cards/"
payload = {
"encryptedCardNumber": "ev:SWFSS:...",
"expiryMonth": "ev:SWFSS:...",
"expiryYear": "ev:SWFSS:...",
"cardLastFour": "4321",
"cardBin": "411111",
"cardholderFirstName": "John",
"cardholderLastName": "Doe",
"billingAddress": {
"line1": "123 Main St",
"city": "New York",
"state": "NY",
"postalCode": "10001",
"country": "US",
"line2": "Apt 4"
},
"label": "My Visa Debit"
}
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({
encryptedCardNumber: 'ev:SWFSS:...',
expiryMonth: 'ev:SWFSS:...',
expiryYear: 'ev:SWFSS:...',
cardLastFour: '4321',
cardBin: '411111',
cardholderFirstName: 'John',
cardholderLastName: 'Doe',
billingAddress: {
line1: '123 Main St',
city: 'New York',
state: 'NY',
postalCode: '10001',
country: 'US',
line2: 'Apt 4'
},
label: 'My Visa Debit'
})
};
fetch('https://platform.spritz.finance/v1/debit-cards/', 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://platform.spritz.finance/v1/debit-cards/",
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([
'encryptedCardNumber' => 'ev:SWFSS:...',
'expiryMonth' => 'ev:SWFSS:...',
'expiryYear' => 'ev:SWFSS:...',
'cardLastFour' => '4321',
'cardBin' => '411111',
'cardholderFirstName' => 'John',
'cardholderLastName' => 'Doe',
'billingAddress' => [
'line1' => '123 Main St',
'city' => 'New York',
'state' => 'NY',
'postalCode' => '10001',
'country' => 'US',
'line2' => 'Apt 4'
],
'label' => 'My Visa Debit'
]),
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://platform.spritz.finance/v1/debit-cards/"
payload := strings.NewReader("{\n \"encryptedCardNumber\": \"ev:SWFSS:...\",\n \"expiryMonth\": \"ev:SWFSS:...\",\n \"expiryYear\": \"ev:SWFSS:...\",\n \"cardLastFour\": \"4321\",\n \"cardBin\": \"411111\",\n \"cardholderFirstName\": \"John\",\n \"cardholderLastName\": \"Doe\",\n \"billingAddress\": {\n \"line1\": \"123 Main St\",\n \"city\": \"New York\",\n \"state\": \"NY\",\n \"postalCode\": \"10001\",\n \"country\": \"US\",\n \"line2\": \"Apt 4\"\n },\n \"label\": \"My Visa Debit\"\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://platform.spritz.finance/v1/debit-cards/")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"encryptedCardNumber\": \"ev:SWFSS:...\",\n \"expiryMonth\": \"ev:SWFSS:...\",\n \"expiryYear\": \"ev:SWFSS:...\",\n \"cardLastFour\": \"4321\",\n \"cardBin\": \"411111\",\n \"cardholderFirstName\": \"John\",\n \"cardholderLastName\": \"Doe\",\n \"billingAddress\": {\n \"line1\": \"123 Main St\",\n \"city\": \"New York\",\n \"state\": \"NY\",\n \"postalCode\": \"10001\",\n \"country\": \"US\",\n \"line2\": \"Apt 4\"\n },\n \"label\": \"My Visa Debit\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://platform.spritz.finance/v1/debit-cards/")
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 \"encryptedCardNumber\": \"ev:SWFSS:...\",\n \"expiryMonth\": \"ev:SWFSS:...\",\n \"expiryYear\": \"ev:SWFSS:...\",\n \"cardLastFour\": \"4321\",\n \"cardBin\": \"411111\",\n \"cardholderFirstName\": \"John\",\n \"cardholderLastName\": \"Doe\",\n \"billingAddress\": {\n \"line1\": \"123 Main St\",\n \"city\": \"New York\",\n \"state\": \"NY\",\n \"postalCode\": \"10001\",\n \"country\": \"US\",\n \"line2\": \"Apt 4\"\n },\n \"label\": \"My Visa Debit\"\n}"
response = http.request(request)
puts response.read_body{
"id": "6a749a054c3b8fc5da595d19",
"cardNumberLast4": "1111",
"expiryMonth": 12,
"expiryYear": 2027,
"isTokenized": true,
"createdAt": "2023-11-07T05:31:56Z",
"label": "<string>",
"requirements": [
{
"type": "card_details",
"fields": [
"cardholder_name",
"billing_address"
],
"reason": "Cardholder name and billing address are required to enable payouts."
}
]
}{
"title": "Unauthorized",
"status": 401,
"type": "urn:problem-type:auth:unauthorized",
"detail": "Bearer token required",
"instance": "<string>",
"realm": "API",
"scope": "read:users"
}{
"title": "<string>",
"status": 404,
"resourceType": "user",
"resourceId": "<string>",
"type": "about:blank",
"detail": "<string>",
"instance": "<string>"
}{
"title": "Unauthorized",
"status": 400,
"type": "urn:problem-type:auth:unauthorized",
"detail": "<string>",
"instance": "/errors/1234567890",
"code": "transaction_limit",
"field": "amountUsd",
"retryable": true
}Authorizations
Cognito JWT token for regular user authentication
Body
Evervault-encrypted card number token (opaque string from the Card iframe)
"ev:SWFSS:..."
Evervault-encrypted expiry month token (opaque string from the Card iframe)
"ev:SWFSS:..."
Evervault-encrypted expiry year token (opaque string from the Card iframe)
"ev:SWFSS:..."
Last 4 digits of the card number (plaintext from iframe)
^[0-9]{4}$"4321"
Card BIN / first 6-8 digits (plaintext from iframe)
^[0-9]{6,8}$"411111"
visa, mastercard Cardholder's first name
1"John"
Cardholder's last name
1"Doe"
Show child attributes
Show child attributes
Friendly name for the card
"My Visa Debit"
Response
Response for status 201
Unique identifier for the debit card
"6a749a054c3b8fc5da595d19"
active, pending, inactive, rejected, action_required visa, mastercard Last 4 digits of card number
"1111"
12
2027
USD, CAD, EUR, GBP Whether this card has been tokenized via Evervault for secure storage
true
Actions the user must complete before the card can be used for payouts. Present (non-empty) when status is action_required.
Show child attributes
Show child attributes