🎯

abacatepay

🎯Skill

from andrehfp/tinyplate

VibeIndex|
What it does

abacatepay skill from andrehfp/tinyplate

πŸ“¦

Part of

andrehfp/tinyplate(8 items)

abacatepay

Installation

git cloneClone repository
git clone git@github.com:andrehfp/tinyplate.git
πŸ“– Extracted from docs: andrehfp/tinyplate
7Installs
50
-
Last UpdatedJan 19, 2026

Skill Details

SKILL.md

"Help with AbacatePay payment integration in Next.js projects. Use when implementing PIX payments, managing subscriptions, handling webhooks, or debugging payment flows. Covers SDK usage, webhook verification, and billing management for Brazilian SaaS applications."

Overview

# AbacatePay Integration Helper

Assist with AbacatePay payment gateway integration for Brazilian SaaS applications.

Quick Reference

Installation

```bash

bun add abacatepay-nodejs-sdk

```

Environment Variables

```bash

ABACATEPAY_API_KEY="abp_live_..." # API key from dashboard

ABACATEPAY_WEBHOOK_SECRET="whsec_..." # Webhook secret

NEXT_PUBLIC_APP_URL="https://..." # For callback URLs

```

SDK Initialization

```typescript

import AbacatePay from "abacatepay-nodejs-sdk";

const abacate = AbacatePay(process.env.ABACATEPAY_API_KEY!);

```

Common Tasks

1. Create a PIX Payment

```typescript

const response = await abacate.billing.create({

frequency: "ONE_TIME",

methods: ["PIX"],

products: [{

externalId: "plan-pro",

name: "Plano Pro",

quantity: 1,

price: 2990, // R$ 29,90 in centavos

}],

customer: {

email: "user@example.com",

name: "JoΓ£o Silva",

},

returnUrl: "https://app.com/pricing",

completionUrl: "https://app.com/billing/success",

});

// response.data: { id, url, status, amount }

```

2. Create PIX QR Code (Direct)

```typescript

const response = await abacate.pixQrCode.create({

amount: 2990, // R$ 29,90

expiresIn: 3600, // 1 hour

description: "Payment description",

});

// response.data: { id, brCode, brCodeBase64, status, expiresAt }

```

3. Check Payment Status

```typescript

const response = await abacate.pixQrCode.check({ id: "pix_abc123" });

// response.data.status: "PENDING" | "PAID" | "EXPIRED" | "CANCELLED"

```

4. Simulate Payment (Dev Mode)

```typescript

await abacate.pixQrCode.simulatePayment({ id: "pix_abc123" });

```

Webhook Handling

Signature Verification (HMAC-SHA256)

```typescript

import crypto from "crypto";

function validateSignature(payload: string, signature: string, secret: string): boolean {

const expected = crypto

.createHmac("sha256", secret)

.update(payload)

.digest("hex");

return crypto.timingSafeEqual(Buffer.from(signature), Buffer.from(expected));

}

```

Webhook Events

| Event | Description |

|-------|-------------|

| billing.paid | Payment confirmed via PIX |

| withdraw.done | Withdrawal completed |

| withdraw.failed | Withdrawal failed |

Webhook Payload Structure

```typescript

interface WebhookPayload {

id: string; // Event ID (use for idempotency)

event: string; // Event type

devMode: boolean; // True if test environment

data: {

billing?: {

id: string;

amount: number;

status: string;

};

};

}

```

Pricing

| Method | Fee |

|--------|-----|

| PIX | R$ 0,80 flat per transaction |

| Credit Card | 3.5% + R$ 0,60 |

| Withdrawal | R$ 0,80 (up to 20/month) |

Database Schema Overview

Plans Table

  • id: Plan identifier (e.g., "pro-monthly")
  • priceInCents: Price in centavos (R$ 29,90 = 2990)
  • interval: "monthly" | "yearly" | "lifetime"
  • limits: JSONB with feature limits
  • features: JSONB array of display features

Subscriptions Table

  • userId: One subscription per user (unique)
  • planId: Current plan
  • status: "active" | "cancelled" | "expired"
  • currentPeriodStart/End: Subscription validity

Payments Table

  • abacateBillingId: AbacatePay billing ID
  • status: "pending" | "paid" | "expired"
  • paidAt: Payment confirmation timestamp

Common Patterns

See [references/integration-patterns.md](references/integration-patterns.md) for:

  • Subscription management
  • Idempotent webhook handling
  • Feature gating
  • Error handling

API Reference

See [references/api-reference.md](references/api-reference.md) for complete endpoint documentation.

Testing Checklist

  • [ ] Environment variables configured
  • [ ] SDK connects successfully
  • [ ] Checkout creates billing and returns URL
  • [ ] Webhook receives events (use AbacatePay dashboard)
  • [ ] Payment status updates correctly
  • [ ] Subscription created after payment
  • [ ] Idempotency prevents duplicates