Create Card Payment
Cria um pagamento no cartão de crédito via Stripe Checkout e retorna a checkoutUrl para redirecionar o cliente. A sessão de checkout expira em 30 minutos. Não disponível no modo sandbox (chaves ps_test_).
curl --request POST \
--url https://api.purincash.com/v1/card-payments \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"valueCents": 4990,
"description": "Plano Premium",
"callbackUrl": "https://minhaloja.com/webhooks/purincash",
"customer": {
"name": "João Silva",
"email": "joao@email.com",
"externalId": "user_123"
},
"metadata": "{\"pedido\":\"123\"}",
"successUrl": "https://minhaloja.com/sucesso",
"cancelUrl": "https://minhaloja.com/cancelado"
}
'import requests
url = "https://api.purincash.com/v1/card-payments"
payload = {
"valueCents": 4990,
"description": "Plano Premium",
"callbackUrl": "https://minhaloja.com/webhooks/purincash",
"customer": {
"name": "João Silva",
"email": "joao@email.com",
"externalId": "user_123"
},
"metadata": "{\"pedido\":\"123\"}",
"successUrl": "https://minhaloja.com/sucesso",
"cancelUrl": "https://minhaloja.com/cancelado"
}
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({
valueCents: 4990,
description: 'Plano Premium',
callbackUrl: 'https://minhaloja.com/webhooks/purincash',
customer: {name: 'João Silva', email: 'joao@email.com', externalId: 'user_123'},
metadata: '{"pedido":"123"}',
successUrl: 'https://minhaloja.com/sucesso',
cancelUrl: 'https://minhaloja.com/cancelado'
})
};
fetch('https://api.purincash.com/v1/card-payments', 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.purincash.com/v1/card-payments",
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([
'valueCents' => 4990,
'description' => 'Plano Premium',
'callbackUrl' => 'https://minhaloja.com/webhooks/purincash',
'customer' => [
'name' => 'João Silva',
'email' => 'joao@email.com',
'externalId' => 'user_123'
],
'metadata' => '{"pedido":"123"}',
'successUrl' => 'https://minhaloja.com/sucesso',
'cancelUrl' => 'https://minhaloja.com/cancelado'
]),
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.purincash.com/v1/card-payments"
payload := strings.NewReader("{\n \"valueCents\": 4990,\n \"description\": \"Plano Premium\",\n \"callbackUrl\": \"https://minhaloja.com/webhooks/purincash\",\n \"customer\": {\n \"name\": \"João Silva\",\n \"email\": \"joao@email.com\",\n \"externalId\": \"user_123\"\n },\n \"metadata\": \"{\\\"pedido\\\":\\\"123\\\"}\",\n \"successUrl\": \"https://minhaloja.com/sucesso\",\n \"cancelUrl\": \"https://minhaloja.com/cancelado\"\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.purincash.com/v1/card-payments")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"valueCents\": 4990,\n \"description\": \"Plano Premium\",\n \"callbackUrl\": \"https://minhaloja.com/webhooks/purincash\",\n \"customer\": {\n \"name\": \"João Silva\",\n \"email\": \"joao@email.com\",\n \"externalId\": \"user_123\"\n },\n \"metadata\": \"{\\\"pedido\\\":\\\"123\\\"}\",\n \"successUrl\": \"https://minhaloja.com/sucesso\",\n \"cancelUrl\": \"https://minhaloja.com/cancelado\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.purincash.com/v1/card-payments")
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 \"valueCents\": 4990,\n \"description\": \"Plano Premium\",\n \"callbackUrl\": \"https://minhaloja.com/webhooks/purincash\",\n \"customer\": {\n \"name\": \"João Silva\",\n \"email\": \"joao@email.com\",\n \"externalId\": \"user_123\"\n },\n \"metadata\": \"{\\\"pedido\\\":\\\"123\\\"}\",\n \"successUrl\": \"https://minhaloja.com/sucesso\",\n \"cancelUrl\": \"https://minhaloja.com/cancelado\"\n}"
response = http.request(request)
puts response.read_body{
"orderCode": "JUE7Y9MPSX",
"status": "pending",
"amountCents": 4990,
"currency": "BRL",
"checkoutUrl": "https://checkout.stripe.com/...",
"expiresAt": "2026-03-18T12:30:00.000Z"
}{
"error": "valueCents must be >= 80 (R$ 0.80)"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "Card payments not configured (Stripe)"
}Authorizations
Chave de API gerada no dashboard da PurinCash (ps_live_ ou ps_test_).
Body
Valor do pagamento em centavos. Mínimo de 80 (R$ 0,80).
x >= 80Descrição exibida no checkout do Stripe. Máximo de 200 caracteres.
200URL HTTPS pública para receber o webhook de confirmação do pagamento. Máximo de 500 caracteres.
500Dados do cliente (opcional).
Show child attributes
Show child attributes
String JSON com dados livres. Máximo de 2048 caracteres.
2048URL de redirecionamento após o pagamento aprovado. Máximo de 500 caracteres.
500URL de redirecionamento se o cliente cancelar o checkout. Máximo de 500 caracteres.
500Response
Pagamento no cartão criado com sucesso.
Código único do pedido. Use-o para consultar o pagamento.
Status do pagamento. Sempre "pending" na criação.
pending, paid, expired, refunded, failed Valor solicitado em centavos.
Moeda do pagamento. Sempre "BRL".
URL do Stripe Checkout para onde o cliente deve ser redirecionado para pagar.
Data e hora de expiração da sessão de checkout (30 minutos após a criação).
curl --request POST \
--url https://api.purincash.com/v1/card-payments \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"valueCents": 4990,
"description": "Plano Premium",
"callbackUrl": "https://minhaloja.com/webhooks/purincash",
"customer": {
"name": "João Silva",
"email": "joao@email.com",
"externalId": "user_123"
},
"metadata": "{\"pedido\":\"123\"}",
"successUrl": "https://minhaloja.com/sucesso",
"cancelUrl": "https://minhaloja.com/cancelado"
}
'import requests
url = "https://api.purincash.com/v1/card-payments"
payload = {
"valueCents": 4990,
"description": "Plano Premium",
"callbackUrl": "https://minhaloja.com/webhooks/purincash",
"customer": {
"name": "João Silva",
"email": "joao@email.com",
"externalId": "user_123"
},
"metadata": "{\"pedido\":\"123\"}",
"successUrl": "https://minhaloja.com/sucesso",
"cancelUrl": "https://minhaloja.com/cancelado"
}
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({
valueCents: 4990,
description: 'Plano Premium',
callbackUrl: 'https://minhaloja.com/webhooks/purincash',
customer: {name: 'João Silva', email: 'joao@email.com', externalId: 'user_123'},
metadata: '{"pedido":"123"}',
successUrl: 'https://minhaloja.com/sucesso',
cancelUrl: 'https://minhaloja.com/cancelado'
})
};
fetch('https://api.purincash.com/v1/card-payments', 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.purincash.com/v1/card-payments",
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([
'valueCents' => 4990,
'description' => 'Plano Premium',
'callbackUrl' => 'https://minhaloja.com/webhooks/purincash',
'customer' => [
'name' => 'João Silva',
'email' => 'joao@email.com',
'externalId' => 'user_123'
],
'metadata' => '{"pedido":"123"}',
'successUrl' => 'https://minhaloja.com/sucesso',
'cancelUrl' => 'https://minhaloja.com/cancelado'
]),
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.purincash.com/v1/card-payments"
payload := strings.NewReader("{\n \"valueCents\": 4990,\n \"description\": \"Plano Premium\",\n \"callbackUrl\": \"https://minhaloja.com/webhooks/purincash\",\n \"customer\": {\n \"name\": \"João Silva\",\n \"email\": \"joao@email.com\",\n \"externalId\": \"user_123\"\n },\n \"metadata\": \"{\\\"pedido\\\":\\\"123\\\"}\",\n \"successUrl\": \"https://minhaloja.com/sucesso\",\n \"cancelUrl\": \"https://minhaloja.com/cancelado\"\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.purincash.com/v1/card-payments")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"valueCents\": 4990,\n \"description\": \"Plano Premium\",\n \"callbackUrl\": \"https://minhaloja.com/webhooks/purincash\",\n \"customer\": {\n \"name\": \"João Silva\",\n \"email\": \"joao@email.com\",\n \"externalId\": \"user_123\"\n },\n \"metadata\": \"{\\\"pedido\\\":\\\"123\\\"}\",\n \"successUrl\": \"https://minhaloja.com/sucesso\",\n \"cancelUrl\": \"https://minhaloja.com/cancelado\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.purincash.com/v1/card-payments")
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 \"valueCents\": 4990,\n \"description\": \"Plano Premium\",\n \"callbackUrl\": \"https://minhaloja.com/webhooks/purincash\",\n \"customer\": {\n \"name\": \"João Silva\",\n \"email\": \"joao@email.com\",\n \"externalId\": \"user_123\"\n },\n \"metadata\": \"{\\\"pedido\\\":\\\"123\\\"}\",\n \"successUrl\": \"https://minhaloja.com/sucesso\",\n \"cancelUrl\": \"https://minhaloja.com/cancelado\"\n}"
response = http.request(request)
puts response.read_body{
"orderCode": "JUE7Y9MPSX",
"status": "pending",
"amountCents": 4990,
"currency": "BRL",
"checkoutUrl": "https://checkout.stripe.com/...",
"expiresAt": "2026-03-18T12:30:00.000Z"
}{
"error": "valueCents must be >= 80 (R$ 0.80)"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "Card payments not configured (Stripe)"
}
