Skip to main content
Your account is always on a plan. The plan sets your default fees, your limits and the features listed on it. These endpoints show the plans you can choose, change or renew your plan, and pay the service fees billed to your account. Every endpoint acts on your business account, whoever on your team calls it. Team members need the Plans → view permission to read and Plans → upgrade for everything else.

How you pay for a plan

Pass payment_method on quote, subscribe and renew. It defaults to wallet. To pay for a single period by card, subscribe by card and then turn off auto-renew. The card isn’t charged again, and the plan ends at the end of the period unless you renew it. GET /business/subscription returns payment_options: each method with a label, a description to show your users, available and unavailable_reason. Plans with custom negotiated pricing can only be paid from the USD balance. When a renewal isn’t paid, the plan stays active for a grace period. Pay before grace_ends_at (by wallet or card) to keep it. Otherwise the account moves to its fallback plan, usually the free plan.

Endpoints


Get your current plan

An account with no plan is put on the free plan the first time it calls this endpoint.

List plans

Response
  • change_type says what choosing the plan would do: new, renew, upgrade (takes effect now) or downgrade (takes effect at the end of the paid period).
  • is_custom: true marks a plan built for your account with negotiated pricing. Only you see it.
  • contact_sales: true plans have price: null and can’t be bought through the API. Contact your account manager.
  • A feature limit of -1 means unlimited.

Get a quote

See what a plan change costs before you make it.
Response
When you upgrade and pay from the USD balance, the unused part of your current paid period is credited (credit) and you pay amount_due. Card upgrades charge the full price, so credit is 0. A downgrade returns effective: "period_end" and amount_due: 0.

Subscribe, upgrade or downgrade

data.action says what happened:

Pay a plan by card

1

Start the checkout

Call subscribe (or renew for the current plan) with payment_method: "card" and send the user to data.checkout_url. The link opens the secure card payment page.
2

The user pays

After paying, the user is sent back to Settings → Billing in the dashboard.
3

Confirm the plan

Read GET /business/subscription until billing_method is card and plan.id is the plan you chose. This usually takes a few seconds. Plan payments show as pending in GET /business/subscription/payments until then.
Checkout links expire after 60 minutes. Calling subscribe with card again for the same plan returns the open link while it’s still valid. When a card renewal fails, status becomes past_due: renew with card for a new checkout, or with wallet.

Renew now

Pay for the current plan straight away: renew early (the new period starts when the current one ends) or settle a past_due or overdue plan.
Returns action: "renewed" for wallet, or action: "checkout" with a checkout_url for card. Free plans renew by themselves, so renewing one returns an error.

Cancel, resume and auto-renew

  • Cancel: reason is optional. The plan stays active until current_period_end, then the account moves to the free plan. Nothing more is charged, and cancel_at_period_end becomes true.
  • Resume: POST /business/subscription/resume turns renewal back on and drops a scheduled downgrade. It only works before the period ends.
  • Auto-renew: PUT /business/subscription/auto-renew with { "auto_renew": false }. For USD balance billing, the plan then isn’t renewed automatically; renew it yourself before it ends. For card billing it’s the same as cancel and resume.

Payment and plan history

Both are paginated, newest first: the rows are in data and the page is in pagination (current_page, last_page, per_page, total). Each payment has id, status (succeeded, failed, pending or refunded), method, amount, currency, plan, invoice_number, period_start, period_end, failure_reason, paid_at and created_at. Each history entry has a type, from_plan, to_plan, by (You, Yativo or Automatic) and created_at. type is one of started, subscribed, upgraded, renewed, assigned, change_scheduled, cancel_scheduled, resumed, past_due, recovered, overdue, downgraded, ended, fallback, invoice_paid, extended, auto_renew_on or auto_renew_off. The account owner is emailed when a plan activates or renews, a few days before a renewal, when a renewal fails, when a plan becomes overdue or is downgraded, and when a cancellation or downgrade is scheduled.

Service fees

Some services are billed separately from your plan: account maintenance and the annual verification (KYC/KYB) review. Each charge is a bill. Bills aren’t transactions and never appear in your transaction history. Yativo collects outstanding bills from your USD balance when it covers them. You can also pay them by card.

Outstanding bills

Response
  • type is maintenance or kyc_annual.
  • status is pending, partially_paid, processing, paid, failed (a collection attempt failed) or cancelled. Outstanding bills are the ones in pending, partially_paid, processing or failed with an outstanding_amount above 0.
  • GET /business/billing/history takes optional status, type and per_page (up to 100) filters and returns bills with a pagination object.
  • line_items show each charged account or service with its description, service_type, account_number, customer_id and amounts. payments show each collection with its payment_method (wallet or card), amount, status, collected_at and failure_reason.

Pay bills by card

1

Start a card payment

Send the IDs of the bills to pay (1 to 50). The payment covers their full outstanding balance.
Response
2

Send the user to checkout_url

The user pays on the secure card payment page and is sent back to Settings → Billing in the dashboard. Keep the reference: the return doesn’t include it.
3

Confirm the payment

Read GET /business/billing/card-payments/{reference} until status is succeeded. A bill only counts as paid once its card payment has succeeded.
The link expires after expires_at, 60 minutes by default. Starting a card payment again for the same bills while one is open returns the open one.

Errors

Plan and billing errors return 422 with a message you can show the user. See Error response format for the full response.

Older plan endpoints

GET /business/plans/current, GET /business/plans/all, POST /business/plans/subscribe/{plan_id} and PUT /business/plans/upgrade/{plan_id} still work and follow the same rules: USD balance by default, or pass payment_method: "card" to get a checkout_url. Use the /business/subscription endpoints for new work.