> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getruba.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Understand Who Sells the Product

> See how Ruba changes the legal, payment, and tax roles in a software sale

export const RubaSocials = () => {
  if (typeof document === "undefined") {
    return null;
  }
  const inject = () => {
    const footer = document.getElementById("footer");
    if (!footer || document.getElementById("ruba-socials")) {
      return false;
    }
    const isDark = document.querySelector("html.dark") || document.querySelector('html[class*="dark"]');
    const lineColor = isDark ? "#383838" : "#e8e8ed";
    const iconColor = isDark ? "#8e8e93" : "#86868b";
    const markColor = isDark ? "#ffffff" : "#08080c";
    const hoverColor = "#0071e3";
    const div = document.createElement("div");
    div.id = "ruba-socials";
    div.style.cssText = `display:flex;align-items:center;gap:20px;padding-top:20px;margin-top:20px;border-top:1px solid ${lineColor};width:100%`;
    const logo = `<a href="https://getruba.com" style="display:inline-flex;height:24px;align-items:center;gap:8px;text-decoration:none;color:${markColor};line-height:1;"><svg width="24" height="24" viewBox="0 0 120 120" aria-hidden="true" style="display:block;flex:none;"><g transform="translate(2.5 0)"><path d="M19 25h59L65.43 47H19a4 4 0 0 1-4-4V29a4 4 0 0 1 4-4Z" fill="${markColor}"/><path d="M19 73h31.57L38 95H19a4 4 0 0 1-4-4V77a4 4 0 0 1 4-4Z" fill="${markColor}"/><path d="M85 25h25L70 95H45Z" fill="#007AFF"/></g></svg><span style="display:inline-flex;height:24px;align-items:center;font-weight:600;font-size:15px;color:${markColor};letter-spacing:-0.01em;line-height:1;">Ruba</span></a>`;
    const spacer = `<div style="flex:1"></div>`;
    const ig = `<a href="https://instagram.com/getruba" target="_blank" rel="noopener" aria-label="Instagram" style="display:flex;align-items:center;color:${iconColor};transition:color 0.15s ease;" onmouseover="this.style.color='${hoverColor}'" onmouseout="this.style.color='${iconColor}'"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="2" width="20" height="20" rx="5" ry="5"/><path d="M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z"/><line x1="17.5" y1="6.5" x2="17.51" y2="6.5"/></svg></a>`;
    const li = `<a href="https://linkedin.com/company/getruba" target="_blank" rel="noopener" aria-label="LinkedIn" style="display:flex;align-items:center;color:${iconColor};transition:color 0.15s ease;" onmouseover="this.style.color='${hoverColor}'" onmouseout="this.style.color='${iconColor}'"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"/><rect x="2" y="9" width="4" height="12"/><circle cx="4" cy="4" r="2"/></svg></a>`;
    const x = `<a href="https://x.com/getruba" target="_blank" rel="noopener" aria-label="X" style="display:flex;align-items:center;color:${iconColor};transition:color 0.15s ease;" onmouseover="this.style.color='${hoverColor}'" onmouseout="this.style.color='${iconColor}'"><svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"/></svg></a>`;
    const github = `<a href="https://github.com/rubadot" target="_blank" rel="noopener" aria-label="GitHub" style="display:flex;align-items:center;color:${iconColor};transition:color 0.15s ease;" onmouseover="this.style.color='${hoverColor}'" onmouseout="this.style.color='${iconColor}'"><svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"><path d="M12 .7a11.5 11.5 0 0 0-3.64 22.4c.58.1.79-.25.79-.56v-2.24c-3.22.7-3.9-1.37-3.9-1.37-.53-1.34-1.29-1.7-1.29-1.7-1.05-.72.08-.71.08-.71 1.16.08 1.78 1.2 1.78 1.2 1.04 1.77 2.72 1.26 3.38.96.1-.75.4-1.26.74-1.55-2.57-.3-5.27-1.29-5.27-5.69 0-1.26.45-2.29 1.19-3.09-.12-.29-.52-1.47.11-3.05 0 0 .97-.31 3.16 1.18A10.96 10.96 0 0 1 12 6.09c.98 0 1.94.13 2.86.39 2.2-1.49 3.16-1.18 3.16-1.18.63 1.58.23 2.76.11 3.05.74.8 1.19 1.83 1.19 3.09 0 4.42-2.7 5.39-5.28 5.68.42.36.79 1.06.79 2.14v3.28c0 .31.21.67.8.56A11.5 11.5 0 0 0 12 .7Z"/></svg></a>`;
    div.innerHTML = logo + spacer + ig + li + x + github;
    footer.appendChild(div);
    return true;
  };
  if (!document.documentElement.dataset.rubaSocialsObserver) {
    document.documentElement.dataset.rubaSocialsObserver = "true";
    const observer = new MutationObserver(() => {
      if (!document.getElementById("ruba-socials")) {
        inject();
      }
    });
    observer.observe(document.body, {
      childList: true,
      subtree: true
    });
  }
  setTimeout(() => {
    if (!inject()) {
      const interval = setInterval(() => {
        if (inject()) {
          clearInterval(interval);
        }
      }, 500);
      setTimeout(() => clearInterval(interval), 10000);
    }
  }, 300);
  return null;
};

<link rel="stylesheet" href="/style.css" />

<RubaSocials />

When Ruba is Merchant of Record, Ruba resells your digital product to the customer. You still own the product and customer relationship, while Ruba becomes the legal seller for the transaction and takes responsibility for payment collection and indirect sales tax.

## Place each party in the sale

```text theme={"system"}
Your software → supplied to Ruba → resold by Ruba → customer
                                      ↓
                          payment, receipt, VAT/GST/sales tax
```

This differs from using a payment service provider directly. A PSP such as Stripe moves money and provides low-level payment primitives, but your company remains the seller and retains the tax, registration, filing, and transaction liability. A Merchant of Record adds a commercial and compliance layer above the processor.

## Decide which model fits

| Priority           | Direct PSP relationship                                            | Ruba as Merchant of Record                                  |
| ------------------ | ------------------------------------------------------------------ | ----------------------------------------------------------- |
| Payment control    | Maximum low-level flexibility                                      | Higher-level software commerce workflows                    |
| Product operations | You assemble products, subscriptions, access, and customer tooling | Dashboard, APIs, SDKs, checkout, and benefits are connected |
| Indirect tax       | Your business determines, collects, registers, files, and remits   | Ruba carries the reseller obligation                        |
| Cost               | Usually lower payment-only fees                                    | Higher fee for the added operational and liability layer    |
| Best fit           | Teams prepared to own payment and tax operations                   | Teams prioritizing faster global software monetization      |

Neither abstraction is universally better. A direct PSP is sensible when you already have the integration, need unusual payment control, and can operate international tax yourself. Ruba is designed for teams that want the catalog, checkout, recurring billing, access delivery, customer portal, and indirect-tax role connected in one system.

## Follow the tax responsibility

Digital sales can create VAT, GST, or sales-tax obligations outside the seller's home country. Two jobs are involved:

1. **Collection:** determine the correct treatment and add or extract the tax during the sale.
2. **Remittance:** register where required, file returns, and pay the collected amount to each authority.

For example, a $10 subscription sold to a Swedish consumer at 25% VAT totals $12.50, including \$2.50 for tax. A VAT-registered Swedish business may instead qualify for reverse charge. Stripe Tax can automate much of the calculation, but a direct merchant still owns registration, filing, and payment.

Thresholds and rules vary. Some jurisdictions require registration before or soon after the first sale, while others begin only after significant volume. The United Kingdom and EU impose upfront obligations on many non-resident digital sellers; Texas uses a \$500,000 threshold. Product taxability and business-buyer treatment also vary.

## What Ruba assumes

As reseller, Ruba:

* determines and collects applicable indirect tax;
* supports business VAT treatment such as EU reverse charge;
* monitors thresholds and registrations;
* files and remits through its accounting operations;
* issues the customer-facing transaction documents.

This can cause tax to appear on more transactions than when a young seller operates directly below local thresholds. It also means you cannot use Ruba's collected VAT as your own input-VAT deduction.

<Warning>
  Merchant of Record coverage concerns transaction taxes. You remain responsible for income and revenue taxes owed by you or your company in its country of residence.
</Warning>

## Coverage and records

Ruba supports global payments subject to its [country coverage](/merchant-of-record/supported-countries) and manages registrations as sales volumes reach jurisdictional requirements. The EU OSS VAT number is `EU372061545`. Software that does not recognize the `EU` prefix may require a manual override or an update from its vendor because OSS numbers are not country-prefixed like an Irish `IE` VAT number.
