Pokladnu nebo banku lze spárovat s jednou nebo více fakturami vydanými nebo přijatými následujícím způsobem:

<winstrom version="1.0">
  <banka> <!-- uhrazující doklad; může být i "pokladni-pohyb" -->
    <id>code:BANKA1</id>
    <!-- lze normálně uvést další vlastnosti dokladu jako při běžném importu -->

    <sparovani>
      <!-- uhrazovaný doklad - pro uhrazení více faktur se element opakuje
       type - ve spárování lze použít pouze faktury stejného typu (vydané nebo přijaté)
       castka - (volitelný) určuje částku, která se má z faktury uhradit -->
      <uhrazovanaFak type="faktura-vydana" castka="1000">code:FV1</uhrazovanaFak>
      <zbytek>ignorovat</zbytek> <!-- co dělat se zbytkem, pokud nastane -->
    </sparovani>
  </banka>
</winstrom>

V jednom spárování lze uhrazovat více faktur najednou. Při spárování s více fakturami musí být všechny uvedené faktury stejného typu faktury (vydané nebo přijaté).

U každé uhrazované faktury lze uvést atribut castka, jehož hodnota omezuje celkovou částku k úhradě, která bude z faktury uhrazena.

<winstrom version="1.0">
  <banka>
    <id>code:BANKA1</id>
    <sparovani>
      <!-- uhrazují se dvě faktury najednou -->
      <uhrazovanaFak type="faktura-vydana" castka="500">code:FV1</uhrazovanaFak> <!-- z FV1 se uhrazuje 500 -->
      <uhrazovanaFak type="faktura-vydana">code:FV2</uhrazovanaFak> <!-- z FV2 se uhrazuje celá zbývající částka -->
      <zbytek>ignorovat</zbytek>
    </sparovani>
  </banka>
</winstrom>

Zápis ve formátu JSON:

{
  "winstrom": {
    "@version": "1.0",
    "banka": [
      {
        "id": "code:BANKA1",
        "sparovani": {
          "uhrazovanaFak": [
            {
              "@content": "code:FV1",
              "@type": "faktura-vydana",
              "@castka": "500"
            },
            {
              "@content": "code:FV2",
              "@type": "faktura-vydana"
            }
          ],
          "zbytek": "ignorovat"
        }
      }
    ]
  }
}

Hodnota atributu castka nesmí překročit zbývající částku k úhradě na uhrazované faktuře. Je-li hodnota atributu castka menší než zbývající částka k úhradě, bude tato konkrétní faktura vždy uhrazena jako částečná úhrada. Je-li hodnota atributu castka rovna zbývající částce k úhradě, pak atribut ztrácí význam a spárování proběhne stejně, jako by nebyl uveden.

Může se stát, že uhrazující částka na uhrazujícím dokladu a součet částek na uhrazovaných fakturách nesouhlasí (např. při kurzovém rozdílu a nebo schází doplatit pár korun), v takovém případě se import řídí hodnotou v tagu <zbytek/>. Lze zvolit tyto hodnoty:

  • ne: zbytek nesmí nastat; pokud k němu dojde, jedná se o chybu
  • zauctovat: zbytek se zaúčtuje
  • ignorovat: zbytek se ignoruje
  • castecnaUhrada: pokud je částka na uhrazujícím dokladu menší než na uhrazovaném, jedná se o částečnou úhradu
  • castecnaUhradaNeboZauctovat: pokud je částka na uhrazujícím dokladu větší než na uhrazovaném, zbytek se zaúčtuje; pokud je menší, jedná se o částečnou úhradu
  • castecnaUhradaNeboIgnorovat: pokud je částka na uhrazujícím dokladu větší než na uhrazovaném, zbytek se ignoruje; pokud je menší, jedná se o částečnou úhradu

Výsledek importu v závislosti na zvolené hodnotě tagu <zbytek/> a velikosti rozdílu uhrazující a uhrazované částky (zbytku):

parametr zbytek zbytek = 0 zbytek > 0 zbytek < 0
ne

Faktury budou zcela uhrazeny, nebo částečně uhrazeny, pokud došlo k omezení úhrady atributem castka.

Uhrazující doklad bude spárován.

CHYBA:

400 - Částky na uhrazovaném a uhrazujícím dokladu se neshodují

zauctovat

Faktury budou zcela uhrazeny, nebo částečně uhrazeny, pokud došlo k omezení úhrady atributem castka.

Uhrazující doklad bude spárován.

Pro zbytek vznikne interní doklad.

ignorovat

Faktury budou zcela uhrazeny, nebo částečně uhrazeny, pokud došlo k omezení úhrady atributem castka.

Uhrazující doklad nebude spárován.

castecnaUhrada

CHYBA:

400 - Částečná úhrada nemá smysl, částka na uhrazujícím dokladu je větší než na uhrazovaném

Částka uhrazujícího dokladu se postupně „spotřebovává“ na uhrazení faktur nebo částek, které se z nich mají uhradit, v pořadí jejich uvedení v elementu <sparovani/>.

Faktura, na kterou z úhrady už nezbývá dostatečná částka na úplnou úhradu nebo úhradu celé uvedené částky, se uhradí částečně do výše zbývajících prostředků z uhrazující částky.

Faktury, na které z uhrazující částky nezbývají žádné prostředky, jsou z párování vyřazeny a zůstanou neuhrazeny.

castecnaUhradaNeboZauctovat

Faktury budou zcela uhrazeny, nebo částečně uhrazeny, pokud došlo k omezení úhrady atributem castka.

Uhrazující doklad bude spárován.

Pro zbytek vznikne interní doklad.

castecnaUhradaNeboIgnorovat

Faktury budou zcela uhrazeny, nebo částečně uhrazeny, pokud došlo k omezení úhrady atributem castka.

Uhrazující doklad nebude spárován.

V tagu <sparovani/> lze navíc uvést ještě i následující. Není to povinné a standardně se bere z nastavení firmy.

  <!-- kurzový rozdíl, defaultně z nastavení firmy -->
  <krTypDokl></krTypDokl> <!-- typ dokladu pro kurzový rozdíl -->
  <krTypDoklZisk></krTypDoklZisk> <!-- typ dokladu pro zisk kurzového rozdílu -->
  <krTypDoklZtrata></krTypDoklZtrata> <!-- typ dokladu pro ztrátu kurzového rozdílu -->
  <krRada></krRada> <!-- řada pro kurzový rozdíl -->

  <!-- zbytek, defaultně z nastavení firmy -->
  <zbTypDokl></zbTypDokl> <!-- typ dokladu pro zbytek -->
  <zbTypDoklZisk></zbTypDoklZisk> <!-- typ dokladu pro zisk zbytku -->
  <zbTypDoklZtrata></zbTypDoklZtrata> <!-- typ dokladu pro ztrátu zbytku -->
  <zbRada></zbRada> <!-- řada pro zbytek -->

Spárování úhrady v domácí měně s fakturou v cizí měně

Vedle párování dokladů ve stejných měnách, lze také spárovat pokladnu nebo banku v domácí měně s fakturami v cizí měně. Cizí měna musí být pro všechny párované faktury stejná. V tomto případě se uhrazující doklad automaticky převede do cizí měny v kurzu rovnající se poměru uhrazující částky na bance v domácí měně ku celkové uhrazované částce na fakturách v cizí měně.

Odpárování

Analogicky lze provádět i odpárování:

<winstrom version="1.0">
  <banka>
    <id>code:BANKA1</id>
    <odparovani>
      <uhrazovanaFak type="faktura-vydana">code:FV1</uhrazovanaFak> <!-- nepovinné, lze vícekrát -->
    </odparovani>
  </banka>
</winstrom>

Pokud žádný uhrazovaný doklad není uveden, odpárují se všechny, které jsou s daným uhrazujícím dokladem spárovány.

Párování je idempotentní (tj. lze opakovat jeho volání).

Automatické párování

Přes API lze vyvolat i automatické párování plateb.

curl -H "Accept: application/xml" -u winstrom:winstrom -X PUT -L https://demo.flexibee.eu:5434/c/demo/banka/automaticke-parovani

Filtrováním lze omezit úhrady vstupující do párování.

/c/{firma}/banka/{filtr}/automaticke-parovani

Následující příklad bude párovat jen úhrady zadané od 1.3.2020

/c/{firma}/banka/(datVyst>='2020-03-01')/automaticke-parovani

Pomocí parametrů lze nastavit mód párování, omezit v jakých účetních obdobích se budou hledat doklady k úhradě a jak nakládat s rozdílem mezi úhradou a uhrazovaným dokladem.

/c/{firma}/banka/automaticke-parovani?mod=jenVar&obdobi=aktualni&ignorovat-rozdil-castka=1.5&zauctovat-rozdil=true

mod - mód automatického párování. Možné hodnoty:

  • varCasUcet: párovat dle variabilního sym. a částky a účtu
  • varCas: párovat dle variabilního sym. a částky (výchozí hodnota)
  • jenVar: párovat dle variabilního sym.
  • jenCastka: připojit - párovat kdy souhlasí částka a nesouhlasí VS

obdobi - v kterých obdobích se budou hledat doklady k úhradě. Možné hodnoty:

  • aktualni: aktuální účetní období
  • aktualni-predchozi: aktuální a předchozí účetní období
  • vsechna: všechna účetní období (výchozí hodnota)

ignorovat-rozdil-castka - jak velký rozdíl mezi úhradou a uhrazovaným dokladem ignorovat (výchozí hodnota 0.0 - částky musí odpovídat, v módu jenVar se nastavení rozdílu ignoruje)

zauctovat-rozdil - zda se zaúčtují doklady pokud dojde ke spojení úhrad, kdy nejsou částky dokladů shodné (výchozí hodnota true - vznikne interní doklad na rozdíl mezi doklady a doklady budou plně spárovány)

Původní způsob párování pouze přes REST API

Je podporován i zastaralý způsob, kterým šlo párovat pouze přes REST API (nikoliv XML importem) na URL /c/{firma}/parovani-uhrad.

<winstrom version="1.0">
  <sparovani>
    <uhrazovanaFak type="faktura-prijata">code:FP1</uhrazovanaFak> <!-- faktura -->
    <uhrazujiciDokl type="banka">code:BANKA1</uhrazujiciDokl>  <!-- bankovní doklad -->
    <zbytek>ignorovat</zbytek> <!-- zbytek ignorovat -->
  </sparovani>
</winstrom>
<winstrom version="1.0">
  <odparovani>
    <uhrazujiciDokl>code:foo</uhrazujiciDokl> <!-- povinné -->
    <uhrazovanaFak>code:bar</uhrazovanaFak> <!-- nepovinné, lze vícekrát -->
  </odparovani>
</winstrom>