curl --request POST \
--url https://api.slash.com/checkout-session \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--header 'X-Idempotency-Key: <x-idempotency-key>' \
--data '
{
"amount": 2,
"currency": "usd",
"customMetadata": {},
"config": {
"prefillEmail": "jsmith@example.com",
"prefillName": "<string>",
"hideEmail": true,
"disableEmail": true,
"prefillAddress": {
"name": "<string>",
"country": "<string>",
"line1": "<string>",
"line2": "<string>",
"city": "<string>",
"state": "<string>",
"postalCode": "<string>"
},
"paymentMethods": {
"applePay": true,
"googlePay": true
}
},
"expiresAt": "2023-11-07T05:31:56Z"
}
'import requests
url = "https://api.slash.com/checkout-session"
payload = {
"amount": 2,
"currency": "usd",
"customMetadata": {},
"config": {
"prefillEmail": "jsmith@example.com",
"prefillName": "<string>",
"hideEmail": True,
"disableEmail": True,
"prefillAddress": {
"name": "<string>",
"country": "<string>",
"line1": "<string>",
"line2": "<string>",
"city": "<string>",
"state": "<string>",
"postalCode": "<string>"
},
"paymentMethods": {
"applePay": True,
"googlePay": True
}
},
"expiresAt": "2023-11-07T05:31:56Z"
}
headers = {
"X-Idempotency-Key": "<x-idempotency-key>",
"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-Idempotency-Key': '<x-idempotency-key>',
'X-API-Key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
amount: 2,
currency: 'usd',
customMetadata: {},
config: {
prefillEmail: 'jsmith@example.com',
prefillName: '<string>',
hideEmail: true,
disableEmail: true,
prefillAddress: {
name: '<string>',
country: '<string>',
line1: '<string>',
line2: '<string>',
city: '<string>',
state: '<string>',
postalCode: '<string>'
},
paymentMethods: {applePay: true, googlePay: true}
},
expiresAt: '2023-11-07T05:31:56Z'
})
};
fetch('https://api.slash.com/checkout-session', 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.slash.com/checkout-session",
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([
'amount' => 2,
'currency' => 'usd',
'customMetadata' => [
],
'config' => [
'prefillEmail' => 'jsmith@example.com',
'prefillName' => '<string>',
'hideEmail' => true,
'disableEmail' => true,
'prefillAddress' => [
'name' => '<string>',
'country' => '<string>',
'line1' => '<string>',
'line2' => '<string>',
'city' => '<string>',
'state' => '<string>',
'postalCode' => '<string>'
],
'paymentMethods' => [
'applePay' => true,
'googlePay' => true
]
],
'expiresAt' => '2023-11-07T05:31:56Z'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>",
"X-Idempotency-Key: <x-idempotency-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.slash.com/checkout-session"
payload := strings.NewReader("{\n \"amount\": 2,\n \"currency\": \"usd\",\n \"customMetadata\": {},\n \"config\": {\n \"prefillEmail\": \"jsmith@example.com\",\n \"prefillName\": \"<string>\",\n \"hideEmail\": true,\n \"disableEmail\": true,\n \"prefillAddress\": {\n \"name\": \"<string>\",\n \"country\": \"<string>\",\n \"line1\": \"<string>\",\n \"line2\": \"<string>\",\n \"city\": \"<string>\",\n \"state\": \"<string>\",\n \"postalCode\": \"<string>\"\n },\n \"paymentMethods\": {\n \"applePay\": true,\n \"googlePay\": true\n }\n },\n \"expiresAt\": \"2023-11-07T05:31:56Z\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Idempotency-Key", "<x-idempotency-key>")
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.slash.com/checkout-session")
.header("X-Idempotency-Key", "<x-idempotency-key>")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"amount\": 2,\n \"currency\": \"usd\",\n \"customMetadata\": {},\n \"config\": {\n \"prefillEmail\": \"jsmith@example.com\",\n \"prefillName\": \"<string>\",\n \"hideEmail\": true,\n \"disableEmail\": true,\n \"prefillAddress\": {\n \"name\": \"<string>\",\n \"country\": \"<string>\",\n \"line1\": \"<string>\",\n \"line2\": \"<string>\",\n \"city\": \"<string>\",\n \"state\": \"<string>\",\n \"postalCode\": \"<string>\"\n },\n \"paymentMethods\": {\n \"applePay\": true,\n \"googlePay\": true\n }\n },\n \"expiresAt\": \"2023-11-07T05:31:56Z\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.slash.com/checkout-session")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Idempotency-Key"] = '<x-idempotency-key>'
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"amount\": 2,\n \"currency\": \"usd\",\n \"customMetadata\": {},\n \"config\": {\n \"prefillEmail\": \"jsmith@example.com\",\n \"prefillName\": \"<string>\",\n \"hideEmail\": true,\n \"disableEmail\": true,\n \"prefillAddress\": {\n \"name\": \"<string>\",\n \"country\": \"<string>\",\n \"line1\": \"<string>\",\n \"line2\": \"<string>\",\n \"city\": \"<string>\",\n \"state\": \"<string>\",\n \"postalCode\": \"<string>\"\n },\n \"paymentMethods\": {\n \"applePay\": true,\n \"googlePay\": true\n }\n },\n \"expiresAt\": \"2023-11-07T05:31:56Z\"\n}"
response = http.request(request)
puts response.read_body{
"checkoutSession": {
"id": "<string>",
"url": "<string>",
"amount": 123,
"currency": "usd",
"expiresAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"customMetadata": {},
"config": {
"prefillEmail": "<string>",
"prefillName": "<string>",
"hideEmail": true,
"disableEmail": true,
"prefillAddress": {
"name": "<string>",
"country": "<string>",
"line1": "<string>",
"line2": "<string>",
"city": "<string>",
"state": "<string>",
"postalCode": "<string>"
},
"paymentMethods": {
"applePay": true,
"googlePay": true
}
}
}
}{
"message": "<string>",
"name": "<string>",
"identifier": "<string>",
"rawStatus": 123,
"meta": {}
}{
"message": "<string>",
"name": "<string>",
"identifier": "<string>",
"rawStatus": 123,
"meta": {}
}{
"message": "<string>",
"name": "<string>",
"identifier": "<string>",
"rawStatus": 123,
"meta": {}
}{
"message": "<string>",
"name": "<string>",
"identifier": "<string>",
"rawStatus": 123,
"meta": {}
}Create checkout session
Create a checkout session for collecting a card payment through the Slash hosted checkout. Returns a hosted checkout url to embed in your page. Requires an X-Idempotency-Key header; retries with the same key return the existing session.
curl --request POST \
--url https://api.slash.com/checkout-session \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--header 'X-Idempotency-Key: <x-idempotency-key>' \
--data '
{
"amount": 2,
"currency": "usd",
"customMetadata": {},
"config": {
"prefillEmail": "jsmith@example.com",
"prefillName": "<string>",
"hideEmail": true,
"disableEmail": true,
"prefillAddress": {
"name": "<string>",
"country": "<string>",
"line1": "<string>",
"line2": "<string>",
"city": "<string>",
"state": "<string>",
"postalCode": "<string>"
},
"paymentMethods": {
"applePay": true,
"googlePay": true
}
},
"expiresAt": "2023-11-07T05:31:56Z"
}
'import requests
url = "https://api.slash.com/checkout-session"
payload = {
"amount": 2,
"currency": "usd",
"customMetadata": {},
"config": {
"prefillEmail": "jsmith@example.com",
"prefillName": "<string>",
"hideEmail": True,
"disableEmail": True,
"prefillAddress": {
"name": "<string>",
"country": "<string>",
"line1": "<string>",
"line2": "<string>",
"city": "<string>",
"state": "<string>",
"postalCode": "<string>"
},
"paymentMethods": {
"applePay": True,
"googlePay": True
}
},
"expiresAt": "2023-11-07T05:31:56Z"
}
headers = {
"X-Idempotency-Key": "<x-idempotency-key>",
"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-Idempotency-Key': '<x-idempotency-key>',
'X-API-Key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
amount: 2,
currency: 'usd',
customMetadata: {},
config: {
prefillEmail: 'jsmith@example.com',
prefillName: '<string>',
hideEmail: true,
disableEmail: true,
prefillAddress: {
name: '<string>',
country: '<string>',
line1: '<string>',
line2: '<string>',
city: '<string>',
state: '<string>',
postalCode: '<string>'
},
paymentMethods: {applePay: true, googlePay: true}
},
expiresAt: '2023-11-07T05:31:56Z'
})
};
fetch('https://api.slash.com/checkout-session', 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.slash.com/checkout-session",
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([
'amount' => 2,
'currency' => 'usd',
'customMetadata' => [
],
'config' => [
'prefillEmail' => 'jsmith@example.com',
'prefillName' => '<string>',
'hideEmail' => true,
'disableEmail' => true,
'prefillAddress' => [
'name' => '<string>',
'country' => '<string>',
'line1' => '<string>',
'line2' => '<string>',
'city' => '<string>',
'state' => '<string>',
'postalCode' => '<string>'
],
'paymentMethods' => [
'applePay' => true,
'googlePay' => true
]
],
'expiresAt' => '2023-11-07T05:31:56Z'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>",
"X-Idempotency-Key: <x-idempotency-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.slash.com/checkout-session"
payload := strings.NewReader("{\n \"amount\": 2,\n \"currency\": \"usd\",\n \"customMetadata\": {},\n \"config\": {\n \"prefillEmail\": \"jsmith@example.com\",\n \"prefillName\": \"<string>\",\n \"hideEmail\": true,\n \"disableEmail\": true,\n \"prefillAddress\": {\n \"name\": \"<string>\",\n \"country\": \"<string>\",\n \"line1\": \"<string>\",\n \"line2\": \"<string>\",\n \"city\": \"<string>\",\n \"state\": \"<string>\",\n \"postalCode\": \"<string>\"\n },\n \"paymentMethods\": {\n \"applePay\": true,\n \"googlePay\": true\n }\n },\n \"expiresAt\": \"2023-11-07T05:31:56Z\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Idempotency-Key", "<x-idempotency-key>")
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.slash.com/checkout-session")
.header("X-Idempotency-Key", "<x-idempotency-key>")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"amount\": 2,\n \"currency\": \"usd\",\n \"customMetadata\": {},\n \"config\": {\n \"prefillEmail\": \"jsmith@example.com\",\n \"prefillName\": \"<string>\",\n \"hideEmail\": true,\n \"disableEmail\": true,\n \"prefillAddress\": {\n \"name\": \"<string>\",\n \"country\": \"<string>\",\n \"line1\": \"<string>\",\n \"line2\": \"<string>\",\n \"city\": \"<string>\",\n \"state\": \"<string>\",\n \"postalCode\": \"<string>\"\n },\n \"paymentMethods\": {\n \"applePay\": true,\n \"googlePay\": true\n }\n },\n \"expiresAt\": \"2023-11-07T05:31:56Z\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.slash.com/checkout-session")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Idempotency-Key"] = '<x-idempotency-key>'
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"amount\": 2,\n \"currency\": \"usd\",\n \"customMetadata\": {},\n \"config\": {\n \"prefillEmail\": \"jsmith@example.com\",\n \"prefillName\": \"<string>\",\n \"hideEmail\": true,\n \"disableEmail\": true,\n \"prefillAddress\": {\n \"name\": \"<string>\",\n \"country\": \"<string>\",\n \"line1\": \"<string>\",\n \"line2\": \"<string>\",\n \"city\": \"<string>\",\n \"state\": \"<string>\",\n \"postalCode\": \"<string>\"\n },\n \"paymentMethods\": {\n \"applePay\": true,\n \"googlePay\": true\n }\n },\n \"expiresAt\": \"2023-11-07T05:31:56Z\"\n}"
response = http.request(request)
puts response.read_body{
"checkoutSession": {
"id": "<string>",
"url": "<string>",
"amount": 123,
"currency": "usd",
"expiresAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"customMetadata": {},
"config": {
"prefillEmail": "<string>",
"prefillName": "<string>",
"hideEmail": true,
"disableEmail": true,
"prefillAddress": {
"name": "<string>",
"country": "<string>",
"line1": "<string>",
"line2": "<string>",
"city": "<string>",
"state": "<string>",
"postalCode": "<string>"
},
"paymentMethods": {
"applePay": true,
"googlePay": true
}
}
}
}{
"message": "<string>",
"name": "<string>",
"identifier": "<string>",
"rawStatus": 123,
"meta": {}
}{
"message": "<string>",
"name": "<string>",
"identifier": "<string>",
"rawStatus": 123,
"meta": {}
}{
"message": "<string>",
"name": "<string>",
"identifier": "<string>",
"rawStatus": 123,
"meta": {}
}{
"message": "<string>",
"name": "<string>",
"identifier": "<string>",
"rawStatus": 123,
"meta": {}
}Authorizations
API key authentication for public API requests.
Keys come in two flavors:
- Legal-entity-scoped keys are pinned to a single legal entity. Minted via the dashboard under a specific entity; every request acts on that entity.
- User-scoped keys are pinned to a user and span every legal
entity that user has access to. Every request made with a
user-scoped key (except
GET /legal-entity, which lists the legal entities the user can access) must include anx-legal-entityheader naming the legal entity the request is operating on. Requests without the header are rejected with400. The authenticated user must have an active permission role on the supplied legal entity, otherwise the request is rejected with403.
Headers
A unique key for this checkout session. Retrying a request with the same key returns the previously created session instead of creating a new one.
Body
Payment amount in cents. Must be strictly positive.
x >= 1ISO currency code for the payment. Only usd is currently supported.
usd Custom metadata to associate with the checkout session. Echoed on webhook events for this session.
Configuration for the hosted checkout page. Echoed on reads and editable while the session is open.
Show child attributes
Show child attributes
ISO-8601 timestamp after which the session can no longer be paid. Defaults to 24 hours after creation. Must be at least 30 minutes and at most 7 days in the future.
Response
OK
A checkout session represents a single hosted payment attempt. Embed the session's url in your page (via the Slash checkout SDK or an iframe) to collect a card payment.
Show child attributes
Show child attributes