Problemen oplossen
Begin met php craft bird/sync/status. Dat meldt de verbinding, de editie, of de plugin zichzelf
ingesteld vindt, en de aantallen documenten per staat — meestal genoeg om een configuratieprobleem
van een Moneybird-probleem te onderscheiden.
Op Pro staat in Bird → Logboek het verzoek en het antwoord van elke aanroep, met tokens en geheimen weggelakt.
"Geen btw-tarief toegewezen voor 21%"
Bird heeft de bestelling geweigerd in plaats van te gokken. Ga naar Instellingen → Plugins → Bird → Btw, druk op Toewijzing voorstellen, en zorg dat het percentage uit de melding een regel heeft.
Dit is de enige storing die opzet is. Een factuur die tegen het verkeerde btw-tarief geboekt is, is erger dan een factuur die niet geboekt is — want een ontbrekende factuur valt op en een verkeerde niet.
Er wordt niets verstuurd
Op volgorde van waarschijnlijkheid:
- Niet ingesteld. Geen token, geen administratie-id, of geen btw-toewijzing.
bird/sync/statuszegt dat gewoon. - De wachtrij draait niet. De push is een taak. Als de wachtrij van Craft niet door een daemon of een cron gedraaid wordt, gaat er niets weg tot iemand het controlepaneel opent. Kijk bij Hulpmiddelen → Wachtrijbeheer.
- De trigger past niet. De bestelling is betaald reageert op het paid-event van Commerce. Als je provider de bestelling afrondt zonder hem op betaald te zetten, gebruik dan afgerond of een status.
- Bestellingen van € 0 worden overgeslagen, standaard en met opzet.
Een bestelling staat op failed
Open hem. Het paneel toont de laatste fout. Daarna:
php craft bird/sync/retry
Retry pakt de mislukte pushes op die nog pogingen over hebben — Nieuwe pogingen, standaard 5. Zodra een document geen pogingen meer heeft, negeert retry het en moet je bij de bestelling op Naar Moneybird sturen drukken, wat de teller opnieuw laat beginnen.
422 van Moneybird bij het aanmaken
Bijna altijd een payload die Moneybirds schema niet accepteert. Beide create-endpoints verklaren
unevaluatedProperties: false, dus één onverwachte sleutel wijst de hele factuur af.
De klassieker is amount_decimal. De naslagtekst van Moneybird noemt dat veld, maar het is een
response-veld — meesturen levert een 422 op. Bird heeft daar een controle voor. Draai
php craft bird/inspect/preview 1042 en vergelijk.
De andere is de velden van een verkoopfactuur naar het externe endpoint sturen of andersom. Een
verkoopfactuur neemt invoice_date en first_due_interval; een externe verkoopfactuur neemt
date, due_date, source en source_url. Ze zijn niet uitwisselbaar.
429, of pushes die traag gaan
Moneybird staat 150 verzoeken per 5 minuten toe, en 50 voor /reports/. Bird leest Retry-After en
wacht. Een backfill is de gebruikelijke manier om het plafond te vinden — daarom staat --limit
standaard op 100. Zet hem lager en draai vaker.
Het factuurtotaal wijkt een cent af van wat de klant betaalde
Dat hoort niet, en met Totalen aansluiten aan gebeurt het niet — het verschil gaat op een afrondingsregel van 0% zodat het totaal aansluit op de bankkoppeling.
Heb je de aansluiting uitgezet, dan weigert Bird die bestellingen in plaats daarvan, met het verschil in de foutmelding. Dat is de instelling die doet wat hij zegt.
Een bestelling met een btw-nummer is op 21% geboekt
Dat klopt, en het is de meest voorkomende verrassing in de plugin.
Verlegging is een uitspraak over wat er berekend is. Als de bestelling 21% betaalde, was het geen verlegging, wat het adres ook zegt — en het als verlegd boeken zou je aangifte precies verlagen met wat de klant betaald heeft. Wat je ziet is een webshop met de btw-nummercontrole van Commerce uit. Zet die aan in de belastinginstellingen van Commerce en volgende bestellingen komen bij het afrekenen op nul uit, waarna Bird ze als verlegd boekt.
Bird repareert bestellingen die al btw berekend hebben niet met terugwerkende kracht. Het boekt wat er gebeurd is.
Contacten worden dubbel aangemaakt
Kijk bij Klanten koppelen op. Op Craft-gebruiker — de standaard — sleutelt Bird het Moneybird-contact op het Craft-gebruikers-id, dat Commerce voor elk bestel-e-mailadres garandeert. Op Bestelnummer is een nieuw contact per bestelling het gedocumenteerde gedrag, geen fout.
Als er al contacten in Moneybird stonden voordat Bird er was, hebben die geen customer_id, dus de
eerste bestelling van elk maakt er een tweede aan. De oplossing is customer_id op de bestaande
Moneybird-contacten passend te zetten.
Webhook-leveringen worden geweigerd (Pro)
De controle faalt gesloten, en er zijn maar een paar manieren naar binnen:
- Geen ondertekeningsgeheim opgeslagen. Moneybird geeft het precies één keer terug, bij het
aanmaken. Is het geheim kwijt, verwijder de webhook en installeer hem opnieuw —
bird/webhooks/removeen danbird/webhooks/install. - Verlopen timestamp. Leveringen van meer dan vijf minuten oud worden geweigerd. Controleer de klok van de server.
- De body is onderweg gewijzigd. De handtekening gaat over de ruwe bytes. Een proxy die de JSON opnieuw serialiseert breekt hem.
- Webhooks accepteren staat uit. De webhook installeren zet dat niet vanzelf aan.
php craft bird/webhooks/info toont wat er geregistreerd is en of er een geheim is opgeslagen.
Een push is halverwege gesneuveld en ik denk dat er dubbel geboekt is
Dat is niet zo. Herstel-op-referentie zoekt de factuur op met find_by_reference voordat er iets
aangemaakt wordt, en de unieke index op (orderId, kind, sourceKey) zit daarachter. Zie je twee
facturen in Moneybird, dan is er één met de hand of door iets anders dan Bird gemaakt.
Hulp
justin@justinholt.com, met de uitvoer van bird/sync/status en — op Pro — de betreffende
logboekregel.
Bird is een onafhankelijke plugin. De plugin is niet gelieerd aan Moneybird en wordt door Moneybird niet onderschreven of gesponsord. “Moneybird” is een handelsmerk van de rechthebbende.