Aurumsys API Markdown version
FLOW · PAYIN

Money coming in

One call from you. We pick the provider, watch the payment, and tell you when it is settled.

Scroll sideways to follow the arrows, or open “As text” below.

Your platform

Your backend, holding your API key.

Aurumsys

The orchestrator: one API in front of every provider.

Provider B · second · takes over if A refuses

CHOSEN

Provider A

First in your routing order for this method and currency.

Payer

Your customer, in their browser.

1Create the payinPOST /v1/payins · Idempotency-Key
Route to a provideryour routing order
Refused? Same payment goes to Provider Bsame id, one answer
Payment page link
2PENDING, with a link201 · redirectUrl
3Send the payer to the pagetop-level navigation
4Pays
Provider notice: paidverified by us
5Signed callback · COMPLETEDsettle your books here
6Payer returns to your returnUrla page, not a signal

Inside every request

what the orchestrator does between your call and the provider

Verify

Your API key and its scope are checked before anything else happens.

Once only

The same Idempotency-Key never creates a second payment. A repeat gets the first answer again.

Ask you first

Optional. With the hook on, we ask your endpoint before any provider is touched. A no stops here.

Route

Your routing order picks the provider for this method and currency.

Cascade

A provider that refuses can be followed by the next in your order. Same id, one answer, every attempt on record.

Watch

Provider notices are verified before they count. An unclear answer is re-checked with the provider until it is sure.

Tell you

Every status you could not have learned yourself arrives as a signed callback, retried with backoff until you answer.

Where a payment can be

amber: wait · green: settle · red: show the reason · dashed: the rare paths, explained in the guide
CREATEDPENDINGPROCESSINGIN_DOUBTEXPIREDCOMPLETEDFAILEDCANCELLEDour guess that an abandoned page will never be paidpaid late after all → COMPLETED, or FAILEDslow rails: FAILED may still settle inside the provider's windowany waiting state can end in any of the threeIN_DOUBT is not a failure: it waits for the provider's answer and often ends COMPLETED. Never re-send.
Two rules to build onCOMPLETED and CANCELLED are final. A won dispute arrives as a new reversal, never as a status flip.Apply a late status change to a row you had closed; do not reject it as impossible.
As text

One call from you. We pick the provider, watch the payment, and tell you when it is settled.

Who takes part: Your platform (your backend, holding your API key) · Aurumsys (the orchestrator: one API in front of every provider) · Provider A (first in your routing order for this method and currency; Provider B: second · takes over if A refuses; Provider C: third) · Payer (your customer, in their browser).

The journey

  1. Your platform → Aurumsys: Create the payin: POST /v1/payins, with an Idempotency-Key.
  2. Aurumsys → Provider A: Route the payin to the first provider in your routing order for this method and currency.
  3. Aurumsys → Provider A: If Provider A refuses in a way another provider could take, and your cascade setting allows it, the same payment is offered to Provider B — same id, one answer.
  4. Provider A → Aurumsys: The provider answers with its payment page link.
  5. Aurumsys → Your platform: 201 with status PENDING and a redirectUrl.
  6. Your platform → Payer: Send the payer to redirectUrl, as a top-level navigation.
  7. Payer → Provider A: The payer pays on the provider page.
  8. Provider A → Aurumsys: The provider notifies us that it is paid; we verify the notice before it counts.
  9. Aurumsys → Your platform: Signed callback with status COMPLETED. Settle your books here.
  10. Payer → Your platform: The payer's browser returns to your returnUrl. It is a page to show, not a payment result.

Inside every request

  • Verify. Your API key and its scope are checked before anything else happens.
  • Once only. The same Idempotency-Key never creates a second payment. A repeat gets the first answer again.
  • Ask you first. Optional. With the hook on, we ask your endpoint before any provider is touched. A no stops here.
  • Route. Your routing order picks the provider for this method and currency.
  • Cascade. A provider that refuses can be followed by the next in your order. Same id, one answer, every attempt on record.
  • Watch. Provider notices are verified before they count. An unclear answer is re-checked with the provider until it is sure.
  • Tell you. Every status you could not have learned yourself arrives as a signed callback, retried with backoff until you answer.

Where a payment can be

  • CREATED moves to one of the waiting states: PENDING, PROCESSING or IN_DOUBT.
  • A waiting state can move to another waiting state before it settles.
  • Any waiting state can end in any of the three terminal states: COMPLETED (settle), FAILED (show the reason) or CANCELLED.
  • IN_DOUBT is not a failure. It waits for the provider's answer and often ends COMPLETED. Never re-send it.
  • PENDING may become EXPIRED — our guess that an abandoned page will never be paid. An EXPIRED payin may still become COMPLETED or FAILED if it is paid late after all.
  • A FAILED payin may still become COMPLETED inside a provider's provisional window, on the slow rails that declare one.
  • COMPLETED and CANCELLED are final. A won dispute arrives as a new reversal, never as a status flip.
  • Apply a late status change to a row you had already closed; do not reject it as impossible.

Every callback is signed. Every provider attempt is on the payment. Nothing settles on the browser coming back.

Every callback is signed. Every provider attempt is on the payment. Nothing settles on the browser coming back. Open the integration guide →