NodeRailsCRYPTO PAYMENT INFRASTRUCTURE
DocumentationAPI Reference
Dashboard

Payment Links

Payment links are shareable URLs that open a payment page. No integration needed. Share them via email, social media, or embed as QR codes.

Create a payment link

Createtypescript
const link = await noderails.paymentLinks.create({
  name: 'Donate',
  slug: 'donate',
  amount: '25.00',
  currency: 'USD',
  description: 'Support our project',
});

console.log(link.id);   // Payment link ID
console.log(link.slug); // "donate"

// The payment URL is: https://pay.noderails.com/link/donate

Retrieve a payment link

Retrievetypescript
const link = await noderails.paymentLinks.retrieve('link-id');
console.log(link.name, link.amount, link.slug);

Update a payment link

Updatetypescript
const updated = await noderails.paymentLinks.update('link-id', {
  amount: '50.00',
  description: 'Updated donation amount',
});

List payment links

Listtypescript
const links = await noderails.paymentLinks.list();

for (const link of links.data) {
  console.log(link.name, link.slug, link.amount);
}

Delete a payment link

Deletetypescript
await noderails.paymentLinks.delete('link-id');

Methods reference

MethodDescription
create(params)Create a new payment link
retrieve(id)Retrieve a payment link by ID
list(params?)List all payment links
update(id, params)Update a payment link
delete(id)Delete a payment link

TypeScript types

Type importstypescript
import type {
  PaymentLink,
  PaymentLinkCreateParams,
  PaymentLinkUpdateParams,
  PaymentLinkListParams,
} from '@noderails/sdk';

Response body reference

All responses are wrapped in { success: true, data: ... }. The fields below describe what's inside data.

create(), update(), and list() response

PaymentLink

idstringUnique payment link ID (UUID)
appIdstringYour app ID
namestringLink display name
descriptionstring | nullLink description
slugstringURL slug (used in payment URL)
amountstring | nullFixed amount (Decimal as string), null if customer chooses
currencystringCurrency code, default "USD"
productPlanIdstring | nullLinked product plan ID
productPlanPriceIdstring | nullLinked price ID
taxRateIdstring | nullApplied tax rate ID
allowedChainsstring | number[]"ALL" or array of chain IDs
allowedTokensstring | string[]"ALL" or array of token keys
successUrlstring | nullRedirect after payment
cancelUrlstring | nullRedirect if cancelled
requireBillingDetailsbooleanWhether billing details are required
isActivebooleanWhether the link is active
usageCountnumberNumber of times the link has been used
metadataobjectYour metadata key-value pairs
createdAtstringISO 8601 creation timestamp
updatedAtstringISO 8601 last update timestamp
paymentUrlstringFull payment URL (e.g. https://pay.noderails.com/link/donate)
app{ name }App name only
productPlan{ id, name } | nullPlan name, if linked
productPlanPriceobject | null{ id, amount, currency, billingInterval, nickname }
taxRateobject | null{ id, displayName, percentage, inclusive }

retrieve() response

Same as above but with richer nested data:

Extra fields on retrieve

app.merchantIdstringAlso included on retrieve
productPlan.descriptionstring | nullPlan description
productPlan.imageUrlstring | nullPlan image URL
productPlanPrice.billingIntervalCountnumberAlso included on retrieve

delete() response

Returns 204 No Content (no response body).