curl --request POST \
--url https://rest.staging.nickel.com/paymentLink \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "INV-123",
"customerId": "<string>",
"requestedAmountCents": 12055,
"dueDate": "2023-12-25",
"feePassthroughPercent": 100,
"creditCardEnabled": true,
"achEnabled": true,
"amountEditable": false
}
'import requests
url = "https://rest.staging.nickel.com/paymentLink"
payload = {
"name": "INV-123",
"customerId": "<string>",
"requestedAmountCents": 12055,
"dueDate": "2023-12-25",
"feePassthroughPercent": 100,
"creditCardEnabled": True,
"achEnabled": True,
"amountEditable": False
}
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({
name: 'INV-123',
customerId: '<string>',
requestedAmountCents: 12055,
dueDate: '2023-12-25',
feePassthroughPercent: 100,
creditCardEnabled: true,
achEnabled: true,
amountEditable: false
})
};
fetch('https://rest.staging.nickel.com/paymentLink', 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://rest.staging.nickel.com/paymentLink",
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([
'name' => 'INV-123',
'customerId' => '<string>',
'requestedAmountCents' => 12055,
'dueDate' => '2023-12-25',
'feePassthroughPercent' => 100,
'creditCardEnabled' => true,
'achEnabled' => true,
'amountEditable' => false
]),
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://rest.staging.nickel.com/paymentLink"
payload := strings.NewReader("{\n \"name\": \"INV-123\",\n \"customerId\": \"<string>\",\n \"requestedAmountCents\": 12055,\n \"dueDate\": \"2023-12-25\",\n \"feePassthroughPercent\": 100,\n \"creditCardEnabled\": true,\n \"achEnabled\": true,\n \"amountEditable\": false\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://rest.staging.nickel.com/paymentLink")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"INV-123\",\n \"customerId\": \"<string>\",\n \"requestedAmountCents\": 12055,\n \"dueDate\": \"2023-12-25\",\n \"feePassthroughPercent\": 100,\n \"creditCardEnabled\": true,\n \"achEnabled\": true,\n \"amountEditable\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://rest.staging.nickel.com/paymentLink")
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 \"name\": \"INV-123\",\n \"customerId\": \"<string>\",\n \"requestedAmountCents\": 12055,\n \"dueDate\": \"2023-12-25\",\n \"feePassthroughPercent\": 100,\n \"creditCardEnabled\": true,\n \"achEnabled\": true,\n \"amountEditable\": false\n}"
response = http.request(request)
puts response.read_body{
"id": "clkqzo2y1000cx9tfohoiodq1",
"requestedAmountCents": 12055,
"name": "INV-123",
"status": "ACTIVE",
"payments": [
{
"id": "<string>",
"status": "SUCCEEDED",
"fees": [
{
"type": "CREDIT_CARD_FEE",
"amountInCents": 290
}
],
"amountInCents": 10000,
"chargedAmountInCents": 10290,
"platformFeeInCents": 290,
"paymentLinkId": "<string>",
"paymentMethod": {
"id": "<string>",
"type": "ACH",
"achDetails": {
"bankName": "JP Morgan Chase",
"routingNumber": "<string>",
"accountNumberLastFour": "<string>"
},
"cardDetails": {
"brand": "visa",
"last4": "<string>",
"holderName": "<string>",
"expMonth": "2",
"expYear": "2030"
},
"billingDetails": {
"name": "<string>",
"companyName": "<string>",
"street": "<string>",
"city": "<string>",
"state": "<string>",
"zip": "<string>",
"email": "<string>"
}
},
"disbursement": {
"id": "<string>",
"status": "PENDING",
"amountInCents": 10000,
"bankName": "JP Morgan Chase",
"accountNumberLastFour": "<string>",
"paymentIds": [
"clkqzo2y1000cx9tfohoiodq1"
],
"createdAt": "2023-12-25",
"paidAt": "2023-12-25"
},
"refunds": [
{
"id": "<string>",
"amountCents": 515,
"refundDate": "2023-11-07T05:31:56Z",
"voided": true
}
],
"createdAt": 123,
"estimatedDisbursementDate": "<string>"
}
],
"externalPayments": [
{
"id": "cmr9zx1bq000gsf02h1d5w4t8",
"amountCents": 2500,
"paidAt": "2026-08-30",
"voided": false
}
],
"customerId": "cmr9zja1s0000sf028pvdtpsh",
"url": "https://nickel.nickelpayments.com/pay/Ahndhz",
"completedAmountCents": 123,
"dueDate": "2023-12-25",
"feePassthroughPercent": 100,
"creditCardEnabled": true,
"achEnabled": true,
"amountEditable": false
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Create a new payment link
curl --request POST \
--url https://rest.staging.nickel.com/paymentLink \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "INV-123",
"customerId": "<string>",
"requestedAmountCents": 12055,
"dueDate": "2023-12-25",
"feePassthroughPercent": 100,
"creditCardEnabled": true,
"achEnabled": true,
"amountEditable": false
}
'import requests
url = "https://rest.staging.nickel.com/paymentLink"
payload = {
"name": "INV-123",
"customerId": "<string>",
"requestedAmountCents": 12055,
"dueDate": "2023-12-25",
"feePassthroughPercent": 100,
"creditCardEnabled": True,
"achEnabled": True,
"amountEditable": False
}
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({
name: 'INV-123',
customerId: '<string>',
requestedAmountCents: 12055,
dueDate: '2023-12-25',
feePassthroughPercent: 100,
creditCardEnabled: true,
achEnabled: true,
amountEditable: false
})
};
fetch('https://rest.staging.nickel.com/paymentLink', 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://rest.staging.nickel.com/paymentLink",
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([
'name' => 'INV-123',
'customerId' => '<string>',
'requestedAmountCents' => 12055,
'dueDate' => '2023-12-25',
'feePassthroughPercent' => 100,
'creditCardEnabled' => true,
'achEnabled' => true,
'amountEditable' => false
]),
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://rest.staging.nickel.com/paymentLink"
payload := strings.NewReader("{\n \"name\": \"INV-123\",\n \"customerId\": \"<string>\",\n \"requestedAmountCents\": 12055,\n \"dueDate\": \"2023-12-25\",\n \"feePassthroughPercent\": 100,\n \"creditCardEnabled\": true,\n \"achEnabled\": true,\n \"amountEditable\": false\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://rest.staging.nickel.com/paymentLink")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"INV-123\",\n \"customerId\": \"<string>\",\n \"requestedAmountCents\": 12055,\n \"dueDate\": \"2023-12-25\",\n \"feePassthroughPercent\": 100,\n \"creditCardEnabled\": true,\n \"achEnabled\": true,\n \"amountEditable\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://rest.staging.nickel.com/paymentLink")
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 \"name\": \"INV-123\",\n \"customerId\": \"<string>\",\n \"requestedAmountCents\": 12055,\n \"dueDate\": \"2023-12-25\",\n \"feePassthroughPercent\": 100,\n \"creditCardEnabled\": true,\n \"achEnabled\": true,\n \"amountEditable\": false\n}"
response = http.request(request)
puts response.read_body{
"id": "clkqzo2y1000cx9tfohoiodq1",
"requestedAmountCents": 12055,
"name": "INV-123",
"status": "ACTIVE",
"payments": [
{
"id": "<string>",
"status": "SUCCEEDED",
"fees": [
{
"type": "CREDIT_CARD_FEE",
"amountInCents": 290
}
],
"amountInCents": 10000,
"chargedAmountInCents": 10290,
"platformFeeInCents": 290,
"paymentLinkId": "<string>",
"paymentMethod": {
"id": "<string>",
"type": "ACH",
"achDetails": {
"bankName": "JP Morgan Chase",
"routingNumber": "<string>",
"accountNumberLastFour": "<string>"
},
"cardDetails": {
"brand": "visa",
"last4": "<string>",
"holderName": "<string>",
"expMonth": "2",
"expYear": "2030"
},
"billingDetails": {
"name": "<string>",
"companyName": "<string>",
"street": "<string>",
"city": "<string>",
"state": "<string>",
"zip": "<string>",
"email": "<string>"
}
},
"disbursement": {
"id": "<string>",
"status": "PENDING",
"amountInCents": 10000,
"bankName": "JP Morgan Chase",
"accountNumberLastFour": "<string>",
"paymentIds": [
"clkqzo2y1000cx9tfohoiodq1"
],
"createdAt": "2023-12-25",
"paidAt": "2023-12-25"
},
"refunds": [
{
"id": "<string>",
"amountCents": 515,
"refundDate": "2023-11-07T05:31:56Z",
"voided": true
}
],
"createdAt": 123,
"estimatedDisbursementDate": "<string>"
}
],
"externalPayments": [
{
"id": "cmr9zx1bq000gsf02h1d5w4t8",
"amountCents": 2500,
"paidAt": "2026-08-30",
"voided": false
}
],
"customerId": "cmr9zja1s0000sf028pvdtpsh",
"url": "https://nickel.nickelpayments.com/pay/Ahndhz",
"completedAmountCents": 123,
"dueDate": "2023-12-25",
"feePassthroughPercent": 100,
"creditCardEnabled": true,
"achEnabled": true,
"amountEditable": false
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Create a new payment link
"INV-123"
12055
Percent (0-100) of the card processing fee passed through to the payer for this payment link; the remainder is absorbed by your organization. Omit to inherit the customer/organization setting.
0 <= x <= 100100
Whether the payer can pay this link by credit card. Set to false to disable card payments for this link. Omit to inherit the organization setting.
true
Whether the payer can pay this link by ACH/bank transfer. Set to false to disable ACH payments for this link. Omit to inherit the organization setting.
true
Whether the payer can edit the payment amount at checkout. Omit to inherit the organization default.
false
Response
Successful operation
"clkqzo2y1000cx9tfohoiodq1"
12055
"INV-123"
"ACTIVE"
Show child attributes
Show child attributes
Live payments recorded against this link outside Nickel (a mailed check, cash). Voided records are omitted. They count toward completedAmountCents alongside payments.
Show child attributes
Show child attributes
ID of the customer the payment link was created for.
"cmr9zja1s0000sf028pvdtpsh"
"https://nickel.nickelpayments.com/pay/Ahndhz"
Percent (0-100) of the card processing fee passed through to the payer for this payment link. null means no per-link override (the customer/organization setting applies).
100
Whether the payer can pay this link by credit card. null means no per-link override (the organization setting applies).
true
Whether the payer can pay this link by ACH/bank transfer. null means no per-link override (the organization setting applies).
true
Whether the payer can edit the payment amount at checkout.
false
